diff --git a/.clang-format b/.clang-format index 997ad379b..cc430e627 100644 --- a/.clang-format +++ b/.clang-format @@ -1,33 +1,32 @@ ---- +--- BasedOnStyle: WebKit AlignAfterOpenBracket: Align -AllowAllParametersOfDeclarationOnNextLine: 'false' +AlignEscapedNewlines: DontAlign +AllowAllParametersOfDeclarationOnNextLine: "false" AllowShortFunctionsOnASingleLine: Inline -AllowShortIfStatementsOnASingleLine: 'false' -AllowShortLoopsOnASingleLine: 'false' +AllowShortIfStatementsOnASingleLine: "false" +AllowShortLoopsOnASingleLine: "false" AlwaysBreakAfterReturnType: TopLevelDefinitions AlwaysBreakTemplateDeclarations: Yes -BinPackArguments: 'false' -BinPackParameters: 'false' +BinPackArguments: "false" +BinPackParameters: "false" BreakBeforeBraces: Allman -BreakBeforeTernaryOperators: 'true' +BreakBeforeTernaryOperators: "true" BreakConstructorInitializers: BeforeComma ColumnLimit: 120 -Cpp11BracedListStyle: 'false' -FixNamespaceComments: 'true' +Cpp11BracedListStyle: "false" +FixNamespaceComments: "true" IncludeBlocks: Preserve -IndentWidth: '4' -MaxEmptyLinesToKeep: '2' +IndentWidth: "4" +MaxEmptyLinesToKeep: "2" NamespaceIndentation: None PointerAlignment: Left -ReflowComments: 'false' -SortIncludes: 'true' -SpaceAfterCStyleCast: 'false' -SpacesBeforeTrailingComments: '2' -SpacesInAngles: 'true' -SpacesInParentheses: 'true' -SpacesInSquareBrackets: 'true' +ReflowComments: "false" +SortIncludes: "true" +SpaceAfterCStyleCast: "false" +SpacesBeforeTrailingComments: "2" +SpacesInAngles: "true" +SpacesInParentheses: "true" +SpacesInSquareBrackets: "true" Standard: Cpp11 - -... diff --git a/.tx/config b/.tx/config index 3cf9489f6..cdae01013 100644 --- a/.tx/config +++ b/.tx/config @@ -7,6 +7,12 @@ source_file = lang/calamares_en.ts source_lang = en type = QT +[calamares.tz] +file_filter = lang/tz_.ts +source_file = lang/tz_en.ts +source_lang = en +type = QT + [calamares.dummypythonqt] file_filter = src/modules/dummypythonqt/lang//LC_MESSAGES/dummypythonqt.po source_file = src/modules/dummypythonqt/lang/dummypythonqt.pot diff --git a/src/libcalamares/kdsingleapplicationguard/LICENSE.LGPL.txt b/3rdparty/kdsingleapplicationguard/LICENSE.LGPL.txt similarity index 100% rename from src/libcalamares/kdsingleapplicationguard/LICENSE.LGPL.txt rename to 3rdparty/kdsingleapplicationguard/LICENSE.LGPL.txt diff --git a/src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp similarity index 98% rename from src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp rename to 3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp index 56ab8ebe4..77e95e649 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp +++ b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #include "kdlockedsharedmemorypointer.h" #if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN ) diff --git a/src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.h b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h similarity index 95% rename from src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.h rename to 3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h index df0ea4998..b9c5d588f 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdlockedsharedmemorypointer.h +++ b/3rdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.h @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #ifndef __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__ #define __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__ @@ -74,7 +80,7 @@ public: typedef const T* const_iterator; typedef std::reverse_iterator< const_iterator > const_reverse_iterator; typedef std::reverse_iterator< iterator > reverse_iterator; - + iterator begin() { return get(); } const_iterator begin() const { return get(); } diff --git a/src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.cpp b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp similarity index 83% rename from src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.cpp rename to 3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp index 0c99b8fff..a13a45a27 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.cpp +++ b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.cpp @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #include "kdsharedmemorylocker.h" #if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN ) diff --git a/src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.h b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h similarity index 77% rename from src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.h rename to 3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h index 7ae83e771..82b759283 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdsharedmemorylocker.h +++ b/3rdparty/kdsingleapplicationguard/kdsharedmemorylocker.h @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #ifndef __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H #define __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H diff --git a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp similarity index 99% rename from src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp rename to 3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp index ea8ccce33..4c13e1da0 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp +++ b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.cpp @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #include "kdsingleapplicationguard.h" #if QT_VERSION >= 0x040400 || defined(DOXYGEN_RUN) diff --git a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.h b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h similarity index 95% rename from src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.h rename to 3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h index d529fdb3e..8ac411a68 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.h +++ b/3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #ifndef KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H #define KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H diff --git a/src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.cpp b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp similarity index 89% rename from src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.cpp rename to 3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp index f530cc85b..d3405e82f 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.cpp +++ b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.cpp @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #include "kdtoolsglobal.h" #include diff --git a/src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.h b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h similarity index 96% rename from src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.h rename to 3rdparty/kdsingleapplicationguard/kdtoolsglobal.h index c0e37ac76..37ca5857e 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdtoolsglobal.h +++ b/3rdparty/kdsingleapplicationguard/kdtoolsglobal.h @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #ifndef KDTOOLS_KDTOOLSGLOBAL_H #define KDTOOLS_KDTOOLSGLOBAL_H diff --git a/src/libcalamares/kdsingleapplicationguard/pimpl_ptr.cpp b/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp similarity index 94% rename from src/libcalamares/kdsingleapplicationguard/pimpl_ptr.cpp rename to 3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp index 3045ebc2a..35b52d419 100644 --- a/src/libcalamares/kdsingleapplicationguard/pimpl_ptr.cpp +++ b/3rdparty/kdsingleapplicationguard/pimpl_ptr.cpp @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #include "pimpl_ptr.h" /*! @@ -9,7 +15,7 @@ (The exception safety of this class has not been evaluated yet.) pimpl_ptr is a smart immutable pointer, which owns the contained object. Unlike other smart pointers, - it creates a standard constructed object when instanciated via the + it creates a standard constructed object when instanciated via the \link pimpl_ptr() standard constructor\endlink. Additionally, pimpl_ptr respects constness of the pointer object and returns \c const \c T* for a const pimpl_ptr object. @@ -126,7 +132,7 @@ */ /*! - \fn T * pimpl_ptr::operator->() + \fn T * pimpl_ptr::operator->() Member-by-pointer operator. Returns get(). */ @@ -163,7 +169,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) { } - { + { QPointer< QObject > o; { kdtools::pimpl_ptr< QObject > qobject( new QObject ); @@ -174,7 +180,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) { assertNull( o ); } - { + { const kdtools::pimpl_ptr< QObject > qobject( new QObject ); const QObject* o = qobject.get(); assertEqual( o, qobject.operator->() ); diff --git a/src/libcalamares/kdsingleapplicationguard/pimpl_ptr.h b/3rdparty/kdsingleapplicationguard/pimpl_ptr.h similarity index 86% rename from src/libcalamares/kdsingleapplicationguard/pimpl_ptr.h rename to 3rdparty/kdsingleapplicationguard/pimpl_ptr.h index b66bd11a2..41b33b582 100644 --- a/src/libcalamares/kdsingleapplicationguard/pimpl_ptr.h +++ b/3rdparty/kdsingleapplicationguard/pimpl_ptr.h @@ -1,3 +1,9 @@ +/* + * SPDX-License-Identifier: LGPL-2.0-only + * License-Filename: LICENSES/LGPLv2-KDAB + * + * The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + */ #ifndef KDTOOLSCORE_PIMPL_PTR_H #define KDTOOLSCORE_PIMPL_PTR_H diff --git a/src/libcalamaresui/widgets/waitingspinnerwidget.cpp b/3rdparty/waitingspinnerwidget.cpp similarity index 99% rename from src/libcalamaresui/widgets/waitingspinnerwidget.cpp rename to 3rdparty/waitingspinnerwidget.cpp index 317d83807..45c689019 100644 --- a/src/libcalamaresui/widgets/waitingspinnerwidget.cpp +++ b/3rdparty/waitingspinnerwidget.cpp @@ -1,5 +1,4 @@ -/* === This file is part of Calamares - === - * +/* * SPDX-License-Identifier: MIT * License-Filename: LICENSES/MIT-QtWaitingSpinner */ diff --git a/src/libcalamaresui/widgets/waitingspinnerwidget.h b/3rdparty/waitingspinnerwidget.h similarity index 98% rename from src/libcalamaresui/widgets/waitingspinnerwidget.h rename to 3rdparty/waitingspinnerwidget.h index d71976ef8..b3e8df9a0 100644 --- a/src/libcalamaresui/widgets/waitingspinnerwidget.h +++ b/3rdparty/waitingspinnerwidget.h @@ -1,5 +1,4 @@ -/* === This file is part of Calamares - === - * +/* * SPDX-License-Identifier: MIT * License-Filename: LICENSES/MIT-QtWaitingSpinner */ diff --git a/CHANGES b/CHANGES index dcc32eea0..42a0b8c51 100644 --- a/CHANGES +++ b/CHANGES @@ -3,9 +3,236 @@ 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.10 (unreleased) # +# 3.2.18 (unreleased) # This release contains contributions from (alphabetically by first name): + - Bill Auger + +## Core ## + - Timezone support code has migrated into the core of Calamares. This + means that modules now have easier access to timezone information. + Translations for timezones have also been enabled, so it is **possible** + at least to translate the displayed zones in the *locale* module. + - Branding can now specify whether to (try to) display the Calamares window + in the middle of the desktop or not. The *windowPlacement* key in + `branding.desc` specifies *center* or *free* placement. + +## Modules ## + - The *license* module has seen a significant change to its looks. + Actions are now labeled more clearly, and the URL (or filename) + for each license is displayed. + - The *locale* module now supports translations for timezone and + location names (e.g. "Berlin" is "Berlijn" in Dutch). + - *Packagechooser* is a little more careful with displaying + default and empty package names. (thanks to Bill Auger) + + +# 3.2.17.1 (2019-12-02) # + +This is a hotfix release for a bug in the grubcfg module. +Reported by Philip Mueller and Erik Dubois. + +## Modules ## + - The *grubcfg* module had a typo in it that made installations fail. + + +# 3.2.17 (2019-11-28) # + +This release contains contributions from (alphabetically by first name): + - Bill Auger + +## Core ## + - A translation "string freeze" is now enforced by the release scripts. + +## Modules ## + - A new module, *hostinfo*, places information about the host into + Global Storage. This can support contextualprocess modules that + need that information. + - The password-checks in the *users* module are now ordered consistently. + A new check *nonempty* can be used to explicitly check for a non-empty + password. This was previously hard-coded. If you have no other + password-requirements set (e.g. minimum-length) and rely on + Calamares to filter out empty passwords, add this check. + - The *grubcfg* module has a new configuration setting *keepDistributor* + which prevents replacing the `GRUB_DISTRIBUTION` line when writing + the new configuration. #1201 + - *packagechooser* documentation has been updated. + - *welcome* module now works better with dark themes. + - The *license* module could get into a confused state, now fixed. #1271 + + +# 3.2.16 (2019-11-01) # + +This release contains contributions from (alphabetically by first name): + - Bill Auger + +## Core ## + - Some obscure build scenarios which would lead to bogus module-is- + misconfigured messages on startup have been resolved. + +## Modules ## + - The explanatory messages on the *users* page have moved to tooltips, + and placeholder text has been added to the fields. #1202 + - The bad-password messages in the *users* page have been improved. #1261 + - Password-checking in the *users* module has been substantially + changed. A new key *allowWeakPasswords* can be used to introduce + an additional checkbox to the page, which can then be used to + switch off strict password checking. (Thanks to Bill Auger) + - The icons used in password warnings on the *users* page have been + changed to the colorful status icons (rather than the thin red X). + + +# 3.2.15 (2019-10-11) # + +This release contains contributions from (alphabetically by first name): + - No other contributors this time around. + +## Core ## + - No changes to core functionality + +## Modules ## + + - *displaymanager* module now treats *sysconfig* as a regular entry in the + *displaymanagers* list, and the *sysconfigSetup* key is used as a + shorthand to force **only** that entry in the list. #1253 + - *machineid* module has been re-written in C++ and extended with + a new configuration key to generate urandom pool data. #1252 + - *unpackfs* now supports a special *sourcefs* value of `file` + for copying single files (optionally with renaming) or directory + trees to the target system. + - *unpackfs* now support an *exclude* and *excludeFile* setting for + excluding particular files or patters from unpacking. #1229 + + +# 3.2.14 (2019-09-30) # + +This release contains contributions from (alphabetically by first name): + - Andrius Štikonas + - Harald Sitter + +## Core ## + - No changes to core functionality + +## Modules ## + + - *locale* module no longer recognizes the legacy GeoIP configuration. + This has been deprecated since Calamares 3.2.8 and is now removed. + - *packagechooser* module can now be custom-labeled in the overall + progress (left-hand column). #1228 + - *displaymanager* module now recognizes KDE Plasma 5.17. + - *displaymanager* module now can handle Wayland sessions and can detect + sessions from their .desktop files. #1247 #1248 + - *unpackfs* now has special handling for *sourcefs* setting "file" + (so you can copy single files or directories that are on the source + system, directly to the target). #1188 #1181 + + +# 3.2.13 (2019-08-30) # + +This release contains contributions from (alphabetically by first name): + - Arnaud Ferraris + - Arnaud Rebillout + - Bill Auger + - Kevin Kofler + +## Core ## + +- The Calamares standard coding style -- embodied in `ci/calamaresstyle` + has had a few updates and has now been consistently applied across + the core codebase (e.g. libcalamares, libcalamaresui, calamares, but + not the modules). +- *KCoreAddons* is now a required dependency. This lets us drop a chunk + of code that was copied from KCoreAddons years ago, and use the + (maintained!) upstream version instead. It also gives us KMacroExpander + everywhere, which will simplify code for handling substitutions + in configuration files. +- *Slideshows* now have a new property *activatedInCalamares* which + controls the keyboard shortcuts (and can control timers and other + properties of the slideshow, too). + +## Modules ## + +- The *packagechooser* module can load data from the config-file, + from AppData XML files referred by the config-file, and (new) also + from AppStream caches by referring to an application's AppStream id. #1212 +- The *partition* module now understands the units *KB*, *MB*, *GB* which + are powers-of-ten sizes, alongside the powers-of-two sizes that it already + used. (thanks to Arnaud) +- The *welcome* module now supports a *Donate* button if *showDonateUrl* + is set to a non-empty URL. #1197 +- The *welcome* module can have URLs for the various buttons configured + directly in the module configuration (rather than in `branding.desc`). + + +# 3.2.12 (2019-08-07) # + +This release contains contributions from (alphabetically by first name): + - apt-ghetto + - Bill Auger + - embar + +## Core ## + + - Preliminary work to allow jobs to have a *weight* assigned to them + has been added. This will allow the progress bar to better reflect + progress by the amount of work done rather than purely by the + number of jobs. (Thanks to Bill Auger) + - Preliminary work has been added to post the installation log to a + pastebin for bug reporting. (Thanks to Bill Auger) + - Support for translated human-readable strings in Calamares + config files has been added. This is used only in the *packagechooser* + module (see below) but will expand to those modules that need + user-visible strings from the configuration file (existing + solutions need either gettext or Qt support). + - Esperanto is now available when Qt version 5.12.2 or later is used. + +## Modules ## + + - *fstab* A new configuration key *efiMountOptions* has been added, to + allow setting filesystem options specifically for the EFI partition. + (Thanks to apt-ghetto) + - *packagechooser* is a new module for low-density package choices, + e.g. for selecting a default desktop environment, or adding some + proprietary drivers, or chosing browsers of office suites. It presents + **one** collection of items -- at most ten or so, because of the UI -- + and the user can select zero or more of them. The behavior is + configurable, and package information can be set through the Calamares + configuration file or by reading AppData files for the packages. #426 + + +# 3.2.11 (2019-07-06) # + +This release contains contributions from (alphabetically by first name): + - No other contributors this time around. + +This is a security release with no functional changes (except for +improved security) relative to 3.2.10. The Calamares team would like +to acknowledge the help of the following people in reporting and +understanding the issues (alphabetically by first name): + - Kevin Kofler + - Seth Arnold + - Simon Quigley + - Thomas Ward +Both CVE's have been resolved. + +## Core ## + +No core changes. + +## Modules ## + + - *initramfs* could create an initramfs with insecure permissions. + Since the keyfile is included in the initramfs, an attacker could + read the file from the initramfs. #1190 CVE-2019-13178 + - *luksbootkeyfile* created a key file where a window of opportunity + existed where the key file could have too-lax file permissions. + #1191 CVE-2019-13179 + + +# 3.2.10 (2019-06-28) # + +This release contains contributions from (alphabetically by first name): + - No other contributors this time around. Distributions are **advised** to check the slideshow they use for the installation step; changes in loading and translation mechanisms may @@ -31,6 +258,11 @@ require changes in the slideshow. ## Modules ## + - *initramfs* has been changed from a Python module to a C++ module. + Packaging will need to adjust now it installs a .so instead of a .py. + The module itself functions as before. It does have a new configuration + option, to change the version passed as to the `-k` option of + update-initramfs. #1180 - *partition* Now has its own setting for *requiredStorage*, duplicating the same setting in the *welcome* module. This is useful for configurations where no *welcome* module is used, but a minimum diff --git a/CMakeLists.txt b/CMakeLists.txt index cf078193c..6edc4e4cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,9 @@ # SKIP_MODULES : a space or semicolon-separated list of directory names # under src/modules that should not be built. # USE_ : fills in SKIP_MODULES for modules called - +# WITH_ : try to enable (these usually default to ON). For +# a list of WITH_ grep CMakeCache.txt after running +# CMake once. # BUILD_ : choose additional things to build # DEBUG_ : special developer flags for debugging # @@ -35,9 +38,9 @@ # One special target is "show-version", which can be built # to obtain the version number from here. -cmake_minimum_required( VERSION 3.2 FATAL_ERROR ) +cmake_minimum_required( VERSION 3.3 FATAL_ERROR ) project( CALAMARES - VERSION 3.2.10 + VERSION 3.2.18 LANGUAGES C CXX ) set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development @@ -96,21 +99,23 @@ set( CALAMARES_DESCRIPTION_SUMMARY # (sr@latin in particular) may need special handling in CalamaresUtils.cpp. # # TODO: drop the es_ES translation from Transifex -# TODO: move eo (Esperanto) to _ok once Qt can actually create a -# locale for it. # -# NOTE: when updating the list from Transifex, copy these four lines +# 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). -set( _tx_complete ca cs_CZ da de fr he hr hu ko lt pt_BR sq tr_TR - zh_TW ) -set( _tx_good ast en_GB es es_MX et fi_FI gl id it_IT ja nl pl - pt_PT ro ru sk zh_CN ) -set( _tx_ok ar bg el es_PR eu hi is mr nb sl sr sr@latin sv th - uk ) -set( _tx_incomplete be ca@valencia eo fa fr_CH gu kk kn lo mk ne_NP ur uz ) +# +# Total 61 languages +set( _tx_complete ca cs_CZ da fi_FI he hr ja lt pt_BR sq ) +set( _tx_good ast de es es_MX et fr gl hi hu id it_IT ko nl pl + pt_PT ru sk tr_TR zh_TW ) +set( _tx_ok ar be bg el en_GB es_PR eu is ml mr nb ro sl sr + sr@latin sv th uk zh_CN ) +set( _tx_incomplete ca@valencia eo fa fr_CH gu kk kn lo mk ne_NP ur + uz ) ### Required versions # @@ -126,6 +131,10 @@ set( BOOSTPYTHON_VERSION 1.55.0 ) # set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) +# Enable IN_LIST +if( POLICY CMP0057 ) + cmake_policy( SET CMP0057 NEW ) +endif() # CMake 3.9, 3.10 compatibility if( POLICY CMP0071 ) cmake_policy( SET CMP0071 NEW ) @@ -189,10 +198,11 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) -Wno-missing-prototypes -Wno-documentation-unknown-command -Wno-unknown-warning-option + -Werror=return-type ) string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" ) endforeach() - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='//'" ) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='//' -DFALLTHRU='[[clang::fallthrough]]'") # Third-party code where we don't care so much about compiler warnings # (because it's uncomfortable to patch) get different flags; use @@ -210,6 +220,8 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" ) + # The path prefix is only relevant for CMake 3.16 and later, fixes #1286 + set( CMAKE_AUTOMOC_PATH_PREFIX OFF ) set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" ) set( CALAMARES_AUTOUIC_OPTIONS --include utils/moc-warnings.h ) else() @@ -219,7 +231,7 @@ else() set( SUPPRESS_3RDPARTY_WARNINGS "" ) set( SUPPRESS_BOOST_WARNINGS "" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='__builtin_unreachable();'" ) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='__builtin_unreachable();' -DFALLTHRU='/* */'" ) endif() # Use mark_thirdparty_code() to reduce warnings from the compiler @@ -247,6 +259,17 @@ include( CMakeColors ) ### DEPENDENCIES # find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui Widgets LinguistTools Svg Quick QuickWidgets ) +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 ) + find_package( YAMLCPP ${YAMLCPP_VERSION} REQUIRED ) if( INSTALL_POLKIT ) find_package( PolkitQt5-1 REQUIRED ) @@ -276,7 +299,14 @@ if( ECM_FOUND ) include(KDEInstallDirs) endif() -find_package( KF5 COMPONENTS CoreAddons Crash ) +find_package( KF5 QUIET COMPONENTS CoreAddons Crash ) +set_package_properties( + KF5::CoreAddons PROPERTIES + TYPE REQUIRED + DESCRIPTION "Classes built on QtCore for About Data" + URL "https://api.kde.org/frameworks/kcoreaddons/" + PURPOSE "About Calamares" +) if( NOT KF5Crash_FOUND ) set( WITH_KF5Crash OFF ) endif() @@ -294,6 +324,10 @@ set_package_properties( ) if ( PYTHONLIBS_FOUND ) + # Since Boost provides CMake config files (starting with Boost 1.70. + # or so) the mess that is the Calamares find code picks the wrong + # bits. Suppress those CMake config files, as suggested by @jmrcpn + set(Boost_NO_BOOST_CMAKE ON) include( BoostPython3 ) find_boost_python3( ${BOOSTPYTHON_VERSION} ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND ) set_package_properties( @@ -421,6 +455,10 @@ add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro targe ### CALAMARES PROPER # set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) +# In rare cases we have hotfix-releases with a tweak +if( CALAMARES_VERSION_TWEAK ) + set( CALAMARES_VERSION "${CALAMARES_VERSION}.${CALAMARES_VERSION_TWEAK}" ) +endif() set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) if( CALAMARES_VERSION_RC ) set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} ) @@ -575,10 +613,25 @@ add_custom_target( uninstall ### CMAKE SUMMARY REPORT # -feature_summary(WHAT ALL) - get_directory_property( SKIPPED_MODULES DIRECTORY src/modules DEFINITION LIST_SKIPPED_MODULES ) calamares_explain_skipped_modules( ${SKIPPED_MODULES} ) + +feature_summary( + WHAT DISABLED_FEATURES + DESCRIPTION "The following features have been disabled:" + QUIET_ON_EMPTY +) +feature_summary( + WHAT OPTIONAL_PACKAGES_NOT_FOUND + DESCRIPTION "The following OPTIONAL packages were not found:" + QUIET_ON_EMPTY +) +feature_summary( + WHAT REQUIRED_PACKAGES_NOT_FOUND + FATAL_ON_MISSING_REQUIRED_PACKAGES + DESCRIPTION "The following REQUIRED packages were not found:" + QUIET_ON_EMPTY +) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 1d749d51c..9c7b9d90e 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -21,8 +21,8 @@ # Convenience function for creating a C++ (qtplugin) module for Calamares. # This function provides cmake-time feedback about the plugin, adds # targets for compilation and boilerplate information, and creates -# a module.desc with standard values if none is provided (which only -# happens for very unusual plugins). +# a module.desc with standard values (if the module.desc file exists, +# that one is used instead, which happens only for unusual plugins). # # Usage: # @@ -34,16 +34,35 @@ # UI ui-file... # LINK_LIBRARIES lib... # LINK_PRIVATE_LIBRARIES lib... -# COMPILE_DEFINITIONS def... -# RESOURCES resource-file +# [COMPILE_DEFINITIONS def...] +# [RESOURCES resource-file] +# [REQUIRES module-name...] # [NO_INSTALL] # [SHARED_LIB] # [EMERGENCY] # ) # -# The COMPILE_DEFINITIONS are set on the resulting module with a suitable -# flag (i.e. `-D`) so only state the name (optionally, also the value) -# without a `-D` prefixed to it. +# Function parameters: +# - COMPILE_DEFINITIONS +# Definitions are set on the resulting module with a suitable +# flag (i.e. `-D`) so only state the name (optionally, also the value) +# without a `-D` prefixed to it. +# - RESOURCES +# One (single!) filename for the RCC file for the plugin. +# - REQUIRES +# One or more names of modules which are added to the *requiredModules* +# key in the descriptor. See *Module Requirements* in the module +# documentation. +# - NO_INSTALL +# If this is set, the module is not installed by default; use this to +# build testing modules or unit-testing modules. +# - SHARED_LIB +# In unusual circumstances, this function is used to add a library +# rather than a normal Calamares module / plugin. +# - EMERGENCY +# If this is set, the module is marked as an *emergency* module in the +# descriptor. See *Emergency Modules* in the module documentation. +# include( CMakeParseArguments ) include( CalamaresAddLibrary ) @@ -54,7 +73,7 @@ function( calamares_add_plugin ) set( NAME ${ARGV0} ) set( options NO_INSTALL SHARED_LIB EMERGENCY ) set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES ) - set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS ) + set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES ) cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) set( PLUGIN_NAME ${NAME} ) set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} ) @@ -142,6 +161,12 @@ function( calamares_add_plugin ) set( _type ${PLUGIN_TYPE} ) file( WRITE ${_file} "# AUTO-GENERATED metadata file\n# Syntax is YAML 1.2\n---\n" ) file( APPEND ${_file} "type: \"${_type}\"\nname: \"${PLUGIN_NAME}\"\ninterface: \"qtplugin\"\nload: \"lib${target}.so\"\n" ) + if ( PLUGIN_REQUIRES ) + file( APPEND ${_file} "requiredModules:\n" ) + foreach( _r ${PLUGIN_REQUIRES} ) + file( APPEND ${_file} " - ${_r}\n" ) + endforeach() + endif() if ( PLUGIN_EMERGENCY ) file( APPEND ${_file} "emergency: true\n" ) endif() diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index 4892cc0f9..d74e4bdfb 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -67,8 +67,12 @@ macro(add_calamares_translations language) # calamares and qt language files set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) foreach( lang ${CALAMARES_LANGUAGES} ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}calamares_${lang}.qm\n" ) - list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/calamares_${lang}.ts" ) + 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" ) diff --git a/LICENSES/GPLv3+-QJsonModel b/LICENSES/GPLv3+-QJsonModel deleted file mode 100644 index 8a8e272c0..000000000 --- a/LICENSES/GPLv3+-QJsonModel +++ /dev/null @@ -1,18 +0,0 @@ -/*********************************************** - Copyright (C) 2014 Schutz Sacha - This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). - - QJsonModel is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - QJsonModel is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QJsonModel. If not, see . - -**********************************************/ diff --git a/LICENSES/LGPLv2-KDAB b/LICENSES/LGPLv2-KDAB new file mode 100644 index 000000000..df942b1ff --- /dev/null +++ b/LICENSES/LGPLv2-KDAB @@ -0,0 +1,488 @@ + + The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. + + You may use, distribute and copy the KD Tools Library under the terms of + GNU Library General Public License version 2, which is displayed below. + +------------------------------------------------------------------------- + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + 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 Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, 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 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 a program 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. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, 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 companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + 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, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +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 compile 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) 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. + + c) 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. + + d) 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 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. + + 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 to +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 Library 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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library 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. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/README.md b/README.md index f35b012c8..e2e87fddf 100644 --- a/README.md +++ b/README.md @@ -13,28 +13,23 @@ ### Dependencies Main: -* Compiler with C++11 support: GCC >= 4.9.0 or Clang >= 3.5.1 -* CMake >= 3.2 -* Qt >= 5.7 +* Compiler with C++14 support: GCC >= 5 or Clang >= 3.5.1 +* CMake >= 3.3 +* Qt >= 5.9 * yaml-cpp >= 0.5.1 * Python >= 3.3 (required for some modules) -* Boost.Python >= 1.55.0 (recommended, or PythonQt; one is required for some modules) -* PythonQt (recommended, or Boost.Python; one is required for some modules) -* extra-cmake-modules >= 5.18 (recommended; required for some modules) +* Boost.Python >= 1.55.0 (required for some modules) +* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules; + required for some tests) +* KDE Frameworks KCoreAddons (>= 5.58 recommended) +* PythonQt (optional, deprecated) Modules: -* welcome: - * NetworkManager - * UPower (optional, runtime) -* partition: - * extra-cmake-modules - * KF5: KCoreAddons, KConfig, KI18n, KService, KWidgetsAddons - * KPMcore >= 3.3 -* bootloader: - * systemd-boot or GRUB -* unpackfs: - * squashfs-tools - * rsync +* Individual modules may have their own requirements; + these are listed in CMake output. Particular requirements (not complete): +* *fsresizer* KPMCore >= 3.3 +* *partition* KPMCore >= 3.3 +* *users* LibPWQuality (optional) ### Building diff --git a/calamares.desktop b/calamares.desktop index 88ce39b27..1297e6798 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.0 Name=Install System GenericName=System Installer -Keywords=calamares;system;installer +Keywords=calamares;system;installer; TryExec=calamares Exec=pkexec /usr/bin/calamares Comment=Calamares — System Installer @@ -114,6 +114,10 @@ Name[mk]=Инсталирај го системот Icon[mk]=calamares GenericName[mk]=Системен Инсталер Comment[mk]=Calamares - Системен Инсталер +Name[ml]=സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക +Icon[ml]=കലാമാരേസ് +GenericName[ml]=സിസ്റ്റം ഇൻസ്റ്റാളർ +Comment[ml]=കലാമാരേസ് - സിസ്റ്റം ഇൻസ്റ്റാളർ Name[nb]=Installer System Icon[nb]=calamares GenericName[nb]=Systeminstallatør @@ -153,6 +157,9 @@ GenericName[fi_FI]=Järjestelmän Asennusohjelma Comment[fi_FI]=Calamares — Järjestelmän Asentaja Name[sr@latin]=Instaliraj sistem Name[sr]=Инсталирај систем +Icon[sr]=calamares +GenericName[sr]=Инсталатер система +Comment[sr]=Каламарес — инсталатер система Name[sv]=Installera system Icon[sv]=calamares GenericName[sv]=Systeminstallerare diff --git a/calamares.desktop.in b/calamares.desktop.in index 0c4041bcb..9bfbf8fd9 100644 --- a/calamares.desktop.in +++ b/calamares.desktop.in @@ -3,7 +3,7 @@ Type=Application Version=1.0 Name=Install System GenericName=System Installer -Keywords=calamares;system;installer +Keywords=calamares;system;installer; TryExec=calamares Exec=pkexec /usr/bin/calamares Comment=Calamares — System Installer diff --git a/ci/AppImage.sh b/ci/AppImage.sh old mode 100644 new mode 100755 diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh old mode 100644 new mode 100755 index dfb65cfeb..ed1669ef7 --- a/ci/RELEASE.sh +++ b/ci/RELEASE.sh @@ -1,5 +1,7 @@ #! /bin/sh # +### USAGE +# # Release script for Calamares # # This attempts to perform the different steps of the RELEASE.md @@ -11,15 +13,24 @@ # # None of the "update stuff" is done by this script; in preparation # for the release, you should have already done: -# - updating the version -# - pulling translations -# - updating the language list -# - switching to the right branch +# * updating the version +# * pulling translations +# * updating the language list +# * switching to the right branch +# The release can fail for various reasons: doesn't build, tests fail, +# or the string freeze has been violated. # -# You can influence the script a little with environment variables: -# - BUILD_DEFAULT set to false to avoid first build with gcc -# - BUILD_CLANG set to false to avoid second build with clang -# - BUILD_ONLY set to true to break after building +# You can influence the script a little with these options: +# * `-B` do not build (before tagging) +# * `-P` do not package (tag, sign, tarball) +# * `-T` do not respect string freeze +# +# The build / package settings can be influenced via environment variables: +# * BUILD_DEFAULT set to `false` to avoid first build with gcc +# * BUILD_CLANG set to `false` to avoid second build with clang +# * BUILD_ONLY set to `true` to break after building +# +### END USAGE test -d .git || { echo "Not at top-level." ; exit 1 ; } test -d src/modules || { echo "No src/modules." ; exit 1 ; } @@ -29,6 +40,31 @@ which cmake > /dev/null 2>&1 || { echo "No cmake(1) available." ; exit 1 ; } test -z "$BUILD_DEFAULT" && BUILD_DEFAULT=true test -z "$BUILD_CLANG" && BUILD_CLANG=true test -z "$BUILD_ONLY" && BUILD_ONLY=false +STRING_FREEZE=true + +while getopts "hBPT" opt ; do + case "$opt" in + h|\?) + sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0" + return 0 + ;; + B) + BUILD_DEFAULT=false + BUILD_CLANG=false + ;; + P) + BUILD_ONLY=true + ;; + T) + STRING_FREEZE=false + ;; + esac +done + + +if $STRING_FREEZE ; then + sh ci/txcheck.sh || { echo "! String freeze failed." ; exit 1 ; } +fi ### Setup # @@ -54,7 +90,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then rm -rf "$BUILDDIR" mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } ( cd "$BUILDDIR" && CC=clang CXX=clang++ 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 (clang)." ; exit 1 ; } fi fi @@ -63,11 +99,21 @@ if test "x$BUILD_ONLY" = "xtrue" ; then exit 1 fi +if test -f "$BUILDDIR/CMakeCache.txt" ; then + # Some build has created it, so that's good + : +else + # Presumably -B was given; just do the cmake part + rm -rf "$BUILDDIR" + mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; } + ( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; } +fi + ### Get version number for this release # # V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// ) -test -n "$V" || { echo "Could not obtain version." ; exit 1 ; } +test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; } ### Create signed tag # @@ -93,7 +139,7 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D") test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; } tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; } test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; } -( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed." ; exit 1 ; } +( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; } ### Cleanup # @@ -105,7 +151,7 @@ rm -rf "$TMPDIR" # From tarball # cat < /dev/null 2>&1 +} + +if test "x$1" = "x--cleanup" ; then + tx_cleanup + exit 0 +fi +test -z "$1" || { echo "! Usage: txcheck.sh [--cleanup]" ; exit 1 ; } + +if git describe translation > /dev/null 2>&1 ; then + : +else + echo "! No 'translation' tag exists for enforcing the string-freeze." + exit 1 +fi +# The tag exists, so now check that there's no unsaved changes +if test `git describe` = `git describe --dirty` ; then + : +else + echo "! There are local changes." + exit 1 +fi +# No unsaved changes; enforce a string freeze of one week +DATE_PREV=$( git log -1 translation --date=unix | sed -e '/^Date:/s+.*:++p' -e d ) +DATE_HEAD=$( date +%s -d "1 week ago" ) +test "$DATE_PREV" -le "$DATE_HEAD" || { echo "! Translation tag has not aged enough." ; git log -1 translation ; exit 1 ; } + +# Tag is good, do real work of checking strings: collect names of relevant files +test -f ".tx/config" || { echo "! No Transifex configuration is present." ; exit 1 ; } +# Print part after = for each source_file line and delete all the rest +TX_FILE_LIST=$( sed -e '/^source_file/s+.*=++p' -e d .tx/config ) +for f in $TX_FILE_LIST ; do + test -f $f || { echo "! Translation file '$f' does not exist." ; exit 1 ; } +done + +# The state of translations +tx_sum() +{ + WORKTREE_NAME="$1" + WORKTREE_TAG="$2" + + git worktree add $WORKTREE_NAME $WORKTREE_TAG > /dev/null 2>&1 || { echo "! Could not create worktree." ; exit 1 ; } + ( cd $WORKTREE_NAME && sh ci/txpush.sh --no-tx ) > /dev/null 2>&1 || { echo "! Could not re-create translations." ; exit 1 ; } + ( cd $WORKTREE_NAME && sed -i'' -e '/ /dev/null 2>&1 || export QT_SELECT=qt5 +lupdate -version > /dev/null 2>&1 || { echo "! No working lupdate" ; lupdate -version ; exit 1 ; } + # Don't pull branding translations in, # those are done separately. _srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml" -lupdate $_srcdirs -ts -no-obsolete lang/calamares_en.ts +lupdate -no-obsolete $_srcdirs -ts lang/calamares_en.ts +lupdate -no-obsolete -extensions cxxtr src/libcalamares/locale -ts lang/tz_en.ts tx push --source --no-interactive -r calamares.calamares-master +tx push --source --no-interactive -r calamares.tz tx push --source --no-interactive -r calamares.fdo ### PYTHON MODULES @@ -84,3 +100,6 @@ if test -n "$SHARED_PYTHON" ; then tx set -r calamares.python --source -l en "$POTFILE" tx push --source --no-interactive -r calamares.python fi + +txtag +exit 0 diff --git a/ci/txstats.py b/ci/txstats.py old mode 100644 new mode 100755 index d29e7dc75..34ef4fc97 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 # # Uses the Transifex API to get a list of enabled languages, # and outputs CMake settings for inclusion into CMakeLists.txt. @@ -56,6 +56,11 @@ def get_tx_stats(token): 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. + incomplete_languages = ( + "eo", # Not supported by QLocale + ) all_langs = [] @@ -66,6 +71,8 @@ def get_tx_stats(token): if lang_name in suppressed_languages: continue stats = languages[lang_name]["translated"]["percentage"] + if lang_name in incomplete_languages: + stats = 0.0 all_langs.append((stats, lang_name)) output_langs(all_langs, "complete", lambda s : s == 1.0) diff --git a/data/images/help-donate.svg b/data/images/help-donate.svg new file mode 100644 index 000000000..2370c127e --- /dev/null +++ b/data/images/help-donate.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/io.calamares.calamares.appdata.xml b/io.calamares.calamares.appdata.xml new file mode 100644 index 000000000..355f485c2 --- /dev/null +++ b/io.calamares.calamares.appdata.xml @@ -0,0 +1,29 @@ + + + io.calamares.calamares.desktop + CC0-1.0 + GPL-3.0+ + Calamares + Calamares + Calamares + Calamares + Calamares Linux Installer + Calamares Linux Installer + Linux Installatieprogramma Calamares + +

Calamares is an installer program for Linux distributions.

+

Calamares is een installatieprogramma voor Linux distributies.

+
+ https://calamares.io + https://https://github.com/calamares/calamares/issues/ + https://github.com/calamares/calamares/wiki + + + Calamares Welcome + https://calamares.io/images/cal_640.png + + + + calamares + +
diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 3a7d77f4d..fda046e72 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 قطاع الإقلاع الرئيسي ل %1 - + Boot Partition قسم الإقلاع - + System Partition قسم النظام - + Do not install a boot loader لا تثبّت محمّل إقلاع - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form نموذج - + GlobalStorage التّخزين العموميّ - + JobQueue صفّ المهامّ - + Modules الوحدات - + Type: النوع: - - + + none لاشيء - + Interface: الواجهة: - + Tools الأدوات - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information معلومات التّنقيح @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install ثبت @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done انتهى @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - شغّل الأمر %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 يشغّل الأمر %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. يشغّل عمليّة %1. - + Bad working directory path مسار سيء لمجلد العمل - + Working directory %1 for python job %2 is not readable. لا يمكن القراءة من مجلد العمل %1 الخاص بعملية بايثون %2. - + Bad main script file ملفّ السّكربت الرّئيس سيّء. - + Main script file %1 for python job %2 is not readable. ملفّ السّكربت الرّئيس %1 لمهمّة بايثون %2 لا يمكن قراءته. - + Boost.Python error in job "%1". خطأ Boost.Python في العمل "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &رجوع - - + + &Next &التالي - - + + &Cancel &إلغاء - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. الغاء الـ تثبيت من دون احداث تغيير في النظام - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install &ثبت - + Setup is complete. Close the setup program. - + 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. أتريد إلغاء عمليّة التّثبيت الحاليّة؟ سيخرج المثبّت وتضيع كلّ التّغييرات. - + + &Yes &نعم - + + &No &لا - + &Close &اغلاق - + Continue with setup? الإستمرار في التثبيت؟ - + 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> - + &Install now &ثبت الأن - + Go &back &إرجع - + &Done - + The installation is complete. Close the installer. اكتمل التثبيت , اغلق المثبِت - + Error خطأ - + Installation Failed فشل التثبيت @@ -371,40 +402,49 @@ 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 - + %1 Setup Program - + %1 Installer %1 المثبت - + Show debug information أظهر معلومات التّنقيح @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>تقسيم يدويّ</strong><br/>يمكنك إنشاء أو تغيير حجم الأقسام بنفسك. - + Boot loader location: مكان محمّل الإقلاع: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: الحاليّ: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. <strong>اختر قسمًا لتقليصه، ثمّ اسحب الشّريط السّفليّ لتغيير حجمه </strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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> كلّ البيانات الموجودة في جهاز التّخزين المحدّد. - + 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/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. 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. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. دليل Sudoers لا يمكن الكتابة فيه. - + Cannot create sudoers file for writing. تعذّر إنشاء ملفّ sudoers للكتابة. - + Cannot chmod sudoers file. تعذّر تغيير صلاحيّات ملفّ sudores. - + Cannot open groups file for reading. تعذّر فتح ملفّ groups للقراءة. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. النّظام ليس موصولًا بالإنترنت - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. المثبّت لا يعمل بصلاحيّات المدير. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script سكربت @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. نموذج - + I accept the terms and conditions above. أقبل الشّروط والأحكام أعلاه. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>اتّفاقيّة التّرخيص</h1>عمليّة الإعداد هذه ستثبّت برمجيّات مملوكة تخضع لشروط ترخيص. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تتابع عمليّة الإعداد. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>اتّفاقيّة التّرخيص</h1>يمكن لعمليّة الإعداد تثبيت برمجيّات مملوكة تخضع لشروط ترخيص وذلك لتوفير مزايا إضافيّة وتحسين تجربة المستخدم. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تُثبّت البرمجيّات المملوكة وستُستخدم تلك مفتوحة المصدر بدلها. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License الرّخصة @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: المنطقة: - + Zone: المجال: - - + + &Change... &غيّر... - + Set timezone to %1/%2.<br/> اضبط المنطقة الزّمنيّة إلى %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - يحمّل بيانات المواقع... - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + توليد معرف الجهاز + + + + Configuration Error + خطأ في الضبط + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name الاسم - + Description الوصف - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. ما اسمك؟ - + What name do you want to use to log in? ما الاسم الذي تريده لتلج به؟ - + 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>أدخل ذات كلمة المرور مرّتين، للتأكّد من عدم وجود أخطاء طباعيّة. تتكوّن كلمة المرور الجيّدة من خليط أحرف وأرقام وعلامات ترقيم، وطول لا يقلّ عن 8 محارف. كذلك يحبّذ تغييرها دوريًّا لزيادة الأمان.</small> - + What is the name of this computer? ما اسم هذا الحاسوب؟ - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>سيُستخدم الاسم لإظهار الحاسوب للآخرين عبر الشّبكة.</small> - + + Computer Name + + + + + + 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> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set راية قسم نظام 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>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ The installer will quit and all changes will be lost. 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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> لا يستوفِ هذا الحاسوب أدنى متطلّبات تثبيت %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. - + 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 على حاسوبك. - + For best results, please ensure that this computer: لأفضل النّتائج، تحقّق من أن الحاسوب: - + System requirements متطلّبات النّظام @@ -2591,29 +2828,29 @@ Output: 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 تعذّرت كتابة اسم المضيف إلى النّظام الهدف @@ -2754,22 +2991,22 @@ Output: rootMountPoint هو %1 - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. تعذّر ضبط كلمة مرور للمستخدم %1. - + usermod terminated with error code %1. أُنهي usermod برمز الخطأ %1. @@ -2792,22 +3029,22 @@ Output: المسار سيّء: %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 للكتابة @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - يحوي اسم المستخدم محارف غير صالح. المسموح هو الأحرف الصّغيرة والأرقام فقط. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. اسم المضيف قصير جدًّا. - + Your hostname is too long. اسم المضيف طويل جدًّا. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - يحوي اسم المضيف محارف غير صالحة. المسموح فقط الأحرف والأرقام والشُّرط. - - - - + Your passwords do not match! لا يوجد تطابق في كلمات السر! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users المستخدمين + + VariantModel + + + Key + + + + + Value + القيمة + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: الصيغة - - &Release notes - &ملاحظات الإصدار - - - - &Known issues - &مشاكل معروفة - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &ملاحظات الإصدار + + + + &Known issues + &مشاكل معروفة + + + &Support &الدعم @@ -3092,42 +3371,42 @@ Output: &حول - + <h1>Welcome to the %1 installer.</h1> <h1>مرحبًا بك في مثبّت %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support %1 الدعم @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome مرحبا بك diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index a559906a3..4c9d2894f 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partición d'arrinque - + System Partition Partición del sistema - + Do not install a boot loader Nenyures - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Páxina balera @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulariu - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Módulos - + Type: Triba: - - + + none nada - + Interface: Interfaz: - + Tools Ferramientes - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Información de la depuración @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Configuración - + Install Instalación @@ -123,15 +133,15 @@ Falló'l trabayu (%1) - + Programmed job failure was explicitly requested. - + El fallu del trabayu programáu solicitóse esplicitamente. Calamares::JobThread - + Done Fecho @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Execución del comandu %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Executando'l comandu %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Executando la operación %1. - + Bad working directory path El camín del direutoriu de trabayu ye incorreutu - + Working directory %1 for python job %2 is not readable. El direutoriu de trabayu %1 pal trabayu en Python %2 nun ye lleibe. - + Bad main script file El ficheru del script principal ye incorreutu - + Main script file %1 for python job %2 is not readable. El ficheru del script principal %1 pal trabayu en Python %2 nun ye lleibe. - + Boost.Python error in job "%1". Fallu de Boost.Python nel trabayu «%1». @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Esperando por %n móduluEsperando por %n módulos - + (%n second(s)) (%n segundu)(%n segundos) - + System-requirements checking is complete. Completóse la comprobación de los requirimientos del sistema. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Encaboxar - - + 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. - + Setup Failed + Falló la configuración + + + + Would you like to paste the install log to the web? - + + 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 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> - + &Set up now - + &Configurar agora - + &Set up - + &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. Completóse la configuración. Zarra'l programa de configuración. - + 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? L'instalador va colar y van perdese tolos cambeos. - + + &Yes &Sí - + + &No &Non - + &Close &Zarrar - + Continue with setup? ¿Siguir cola instalación? - + 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> - + &Install now &Instalar agora - + Go &back Dir p'&atrás - + &Done &Fecho - + The installation is complete. Close the installer. Completóse la instalación. Zarra l'instalador. - + Error Fallu - + Installation Failed Falló la instalación @@ -372,40 +403,49 @@ L'instalador va colar y van perdese tolos cambeos. CalamaresPython::Helper - + Unknown exception type Desconozse la triba de la esceición - + unparseable Python error Fallu de Python que nun pue analizase - + unparseable Python traceback Traza inversa de Python que nun pue analizase - + Unfetchable Python error. Fallu de Python al que nun pue dise en cata. - CalamaresWindow + CalamaresUtils - - %1 Setup Program + + Install log posted to: +%1 + + + CalamaresWindow - + + %1 Setup Program + Programa de configuración de %1 + + + %1 Installer Instalador de %1 - + Show debug information Amosar la depuración @@ -436,7 +476,7 @@ L'instalador va colar y van perdese tolos cambeos. <strong>Particionáu manual</strong><br/>Vas poder crear o redimensionar particiones. - + Boot loader location: Allugamientu del xestor d'arrinque: @@ -448,8 +488,8 @@ L'instalador va colar y van perdese tolos cambeos. - - + + Current: Anguaño: @@ -464,96 +504,96 @@ L'instalador va colar y van perdese tolos cambeos. <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 nueva de %3MB pa %4. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +642,18 @@ L'instalador va colar y van perdese tolos cambeos. CommandList - - + + Could not run command. Nun pudo executase'l comandu. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. El comandu execútase nel entornu del agospiu y precisa saber el camín raigañu pero nun se definió en rootMountPoint. - + The command needs to know the user's name, but no username is defined. El comandu precisa saber el nome del usuariu, pero nun se definió dengún. @@ -621,7 +661,7 @@ L'instalador va colar y van perdese tolos cambeos. ContextualProcessJob - + Contextual Processes Job Trabayu de procesos contestuales @@ -801,17 +841,17 @@ L'instalador va colar y van perdese tolos cambeos. 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. @@ -958,7 +998,7 @@ L'instalador va colar y van perdese tolos cambeos. DummyCppJob - + Dummy C++ Job Trabayu maniquín en C++ @@ -1125,12 +1165,12 @@ L'instalador va colar y van perdese tolos cambeos. <html><head/><body><p>Cuando se conseña esti caxellu, el sistema va reaniciase nel intre cuando calques en <span style="font-style:italic;">Fecho</span> o zarres l'instalador.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Falló la configuración</h1><br/>%1 nun se configuró nel ordenador.<br/>El mensaxe de fallu foi: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Falló la instalación</h1><br/>%1 nun s'instaló nel ordenador.<br/>El mensaxe de fallu foi: %2. @@ -1189,66 +1229,74 @@ L'instalador va colar y van perdese tolos cambeos. GeneralRequirements - + has at least %1 GiB available drive space - + tien polo menos %1 GiB d'espaciu disponible nel discu - + There is not enough drive space. At least %1 GiB is required. - + Nun hai espaciu abondu nel discu. Ríquense polo menos %1 GiB. - + has at least %1 GiB working memory - + tien polo menos %1 GiB memoria de trabayu - + The system does not have enough working memory. At least %1 GiB is required. - + El sistema nun tien abonda memoria de trabayu. Ríquense polo menos %1 GiB. - + is plugged in to a power source ta enchufáu a una fonte d'enerxía - + The system is not plugged in to a power source. El sistema nun ta enchufáu a una fonte d'enerxía. - + is connected to the Internet ta coneutáu a internet - + The system is not connected to the Internet. El sistema nun ta coneutáu a internet. - + The setup program is not running with administrator rights. El programa de configuración nun ta executándose con drechos alministrativos. - + The installer is not running with administrator rights. L'instalador nun ta executándose con drechos alministrativos. - + The screen is too small to display the setup program. La pantalla ye mui pequeña como p'amosar el programa de configuración. - + The screen is too small to display the installer. La pantalla ye mui pequeña como p'amosar l'instalador. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1275,6 +1323,22 @@ L'instalador va colar y van perdese tolos cambeos. Nun pudo escribise nel ficheru <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1296,7 +1360,7 @@ L'instalador va colar y van perdese tolos cambeos. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1389,22 @@ L'instalador va colar y van perdese tolos cambeos. LCLocaleDialog - + System locale setting Axuste de la locale del sistema - + 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>. L'axuste de la locale del sistema afeuta a la llingua y al conxuntu de caráuteres de dalgunos elementos de la interfaz d'usuariu en llinia de comandos. <br/>L'axuste actual ye <strong>%1</strong>. - + &Cancel &Encaboxar - + &OK &Aceutar @@ -1353,27 +1417,27 @@ L'instalador va colar y van perdese tolos cambeos. Formulariu - + I accept the terms and conditions above. Aceuto los términos y condiciones d'enriba. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Alcuerdu de llicencia</h1>Esti procedimientu d'instalación va instalar software privativu que ta suxetu a términos de llicencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Revisa los alcuerdos de llicencia d'usuariu final (EULAs) d'enriba, por favor.<br/>Si nun aceutes dalgún, el procedimientu d'instalación nun pue siguir. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Alcuerdu de llicencia</h1>Esti procedimientu d'instalación pue instalar software privativu que ta suxetu a términos de llicencia pa fornir carauterístiques adicionales y ameyorar la esperiencia del usuariu. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Revisa los alcuerdos de llicencia d'usuariu final (EULAs) d'enriba, por favor.<br/>Si nun aceutes dalgún, el software privativu nun va instalase y van usase les alternatives de códigu abiertu. @@ -1381,7 +1445,7 @@ L'instalador va colar y van perdese tolos cambeos. LicenseViewStep - + License Llicencia @@ -1389,64 +1453,64 @@ L'instalador va colar y van perdese tolos cambeos. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Controlador %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Controlador gráficu %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Plugin de restolador %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Códec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paquete %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1454,33 +1518,33 @@ L'instalador va colar y van perdese tolos cambeos. LocalePage - + 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. - + Region: Rexón: - + Zone: Zona: - - + + &Change... &Camudar... - + Set timezone to %1/%2.<br/> Va afitase'l fusu horariu a %1/%2.<br/> @@ -1488,38 +1552,92 @@ L'instalador va colar y van perdese tolos cambeos. LocaleViewStep - - Loading location data... - Cargando los datos del allugamientu... - - - + Location Allugamientu + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Xeneración de machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nome - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalación per rede. (Desactivada: Nun pue dise en cata de les llistes de paquetes, comprueba la conexón a internet) - + Network Installation. (Disabled: Received invalid groups data) Instalación per rede. (Desactivada: Recibiéronse datos non válidos de grupos) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1550,12 +1668,12 @@ L'instalador va colar y van perdese tolos cambeos. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1563,117 +1681,117 @@ 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ái 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 @@ -1683,125 +1801,171 @@ L'instalador va colar y van perdese tolos cambeos. 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ó denguna 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 + + + + + PackageChooserPage + + + Form + Formulariu + + + + Product Name + + + + + TextLabel + Etiqueta de testu + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1834,47 +1998,86 @@ L'instalador va colar y van perdese tolos cambeos. ¿Cómo te llames? - + What name do you want to use to log in? ¿Qué nome quies usar p'aniciar sesión? - + Choose a password to keep your account safe. Escueyi una contraseña pa caltener segura la cuenta. - + + <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>Introduz la mesma contraseña dos vegaes pa que pueas comprobar los fallos d'escritura. Una contraseña bona contién un mestu de lletres, númberos y signos de puntuación, debería ser de polo menos ocho caráuteres de llargor y debería camudase davezu.</small> - + What is the name of this computer? ¿Cómo va llamase esti ordenador? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Esti nome va usase si quies facer qu'esti ordenador seya visible a otres máquines nuna rede.</small> - + + Computer Name + + + + + + 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. Aniciar sesión automáticamente ensin pidir la contraseña. - + Use the same password for the administrator account. Usar la mesma contraseña pa la cuenta d'alministrador. - + Choose a password for the administrator account. Escueyi una contraseña pa la cuenta alministrativa. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Introduz la mesma contraseña dos vegaes pa que pueas comprobar los fallos d'escritura.</small> @@ -2039,107 +2242,107 @@ 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ó denguna 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>esp</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. Precísase una partición del sistema EFI p'aniciar %1. <br/><br/>Pa configurar una, volvi atrás y esbilla o crea un sistema de ficheros en FAT32 cola bandera <strong>esp</strong> activada y el puntu de montaxe <strong>%2</strong>.<br/><br/>Pues siguir ensin configurar una partición del sistema EFI pero el sistema fallaría al aniciase. - + EFI system partition flag not set Nun s'afitó la bandera del sistema 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>esp</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. Precísase una partición del sistema EFI p'aniciar %1.<br/><br/>Configuróse una partición col puntu de montaxe <strong>%2</strong> pero nun s'afitó la bandera <strong>esp</strong>. Pa facelo, volvi p'atrás y edita la partición.<br/><br/>Pues siguir ensin afitar esa bandera pero'l sistema fallaría al aniciar. - + 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 con espaciu disponible en discu - + There are no partitons to install on. Nun hai particiones onde instalar. @@ -2205,14 +2408,14 @@ L'instalador va colar y van perdese tolos cambeos. ProcessResult - + There was no output from the command. El comandu nun produxo denguna salida. - + Output: @@ -2221,52 +2424,52 @@ Salida: - + External command crashed. El comandu esternu cascó. - + Command <i>%1</i> crashed. El comandu <i>%1</i> cascó. - + External command failed to start. El comandu esternu falló al aniciar. - + Command <i>%1</i> failed to start. El comandu <i>%1</i> falló al aniciar. - + Internal error when starting command. Fallu internu al aniciar el comandu. - + Bad parameters for process job call. Los parámetros son incorreutos pa la llamada del trabayu de procesos. - + External command failed to finish. El comandu esternu finó al finar. - + Command <i>%1</i> failed to finish in %2 seconds. El comandu <i>%1</i> falló al finar en %2 segundos. - + External command finished with errors. El comandu esternu finó con fallos. - + Command <i>%1</i> finished with exit code %2. El comandu <i>%1</i> finó col códigu de salida %2. @@ -2315,16 +2518,50 @@ Salida: - + Requirements checking for module <i>%1</i> is complete. Completóse la comprobación de requirimientos del módulu <i>%1</i> - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,37 +2781,37 @@ Salida: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Esti ordenador nun satisfaz dalgún de los requirimientos mínimos pa configurar %1.<br/>La configuración nun pue siguir. <a href="#details">Detalles...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Esti ordenador nun satisfaz los requirimientos mínimos pa instalar %1.<br/>La instalación nun pue siguir. <a href="#details">Detalles...</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. Esti ordenador nun satisfaz dalgún de los requirimientos aconseyaos pa configurar %1.<br/>La configuración pue siguir pero dalgunes carauterístiques podríen desactivase. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Esti ordenador nun satisfaz dalgún requirimientu aconseyáu pa instalar %1.<br/>La instalación pue siguir pero podríen desactivase dalgunes carauterístiques. - + This program will ask you some questions and set up %2 on your computer. Esti programa va facete dalgunes entrugues y va configurar %2 nel ordenador. - + For best results, please ensure that this computer: Pa los meyores resultaos, asegúrate qu'esti ordenador: - + System requirements Requirimientos del sistema @@ -2595,29 +2832,29 @@ Salida: SetHostNameJob - + Set hostname %1 Afitamientu del nome d'agospiu a %1 - + Set hostname <strong>%1</strong>. Va afitase'l nome d'agospiu <strong>%1</strong>. - + Setting hostname %1. Afitando'l nome d'agospiu %1. - - + + Internal Error Fallu internu - - + + Cannot write hostname to target system Nun pue escribise'l nome d'agospiu nel sistema de destín @@ -2758,22 +2995,22 @@ Salida: rootMountPoint ye %1 - + Cannot disable root account. Nun pue desactivase la cuenta root. - + passwd terminated with error code %1. passwd terminó col códigu de fallu %1. - + Cannot set password for user %1. Nun pue afitase la contraseña del usuariu %1. - + usermod terminated with error code %1. usermod terminó col códigu de fallu %1. @@ -2796,22 +3033,22 @@ Salida: Camín incorreutu: %1 - + Cannot set timezone. Nun pue afitase'l fusu horariu. - + Link creation failed, target: %1; link name: %2 Falló la creación del enllaz, destín: %1 ; nome del enllaz: %2 - + Cannot set timezone, Nun pue afitase'l fusu horariu, - + Cannot open /etc/timezone for writing Nun pue abrise /etc/timezone pa la escritura @@ -2838,7 +3075,7 @@ Salida: This is an overview of what will happen once you start the setup procedure. - + Esto ye una previsualización de lo que va asoceder nel momentu qu'anicies el procesu de configuración. @@ -2857,22 +3094,22 @@ Salida: TrackingInstallJob - + Installation feedback Instalación del siguimientu - + Sending installation feedback. Unviando'l siguimientu de la instalación. - + Internal error in install-tracking. Fallu internu n'install-tracking. - + HTTP request timed out. Escosó'l tiempu d'espera de la solicitú HTTP. @@ -2880,28 +3117,28 @@ Salida: TrackingMachineNeonJob - + 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. @@ -2934,17 +3171,17 @@ Salida: Instalar el rastrexu ayuda a %1 a saber cuantos usuarios tien, el hardware qu'usen pa instalar %1 y (coles dos opciones d'embaxo), consiguir información continua tocante a les aplicaciones preferíes. Pa ver lo que va unviase, calca l'iconu d'ayuda al llau de cada área. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Esbillando esto vas unviar la información tocante a la instalación y el hardware. Esta información <b>namái va unviase una vegada</b> tres finar la instalación. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Esbillando esto vas unviar <b>dacuando</b> la información tocante a la instalación, el hardware y les aplicaciones a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Esbillando esto vas unviar <b>davezu</b> la información tocante a la instalación, el hardware, les aplicaciones y los patrones d'usu a %1. @@ -2952,7 +3189,7 @@ Salida: TrackingViewStep - + Feedback Siguimientu @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - El nome d'usuariu contién caráuteres non válidos. Namái se permiten les lletres minúscules y los númberos. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - El nome d'agospiu contién caráuteres non válidos. Namái se permiten lletres, númberos y guiones. - - - - + Your passwords do not match! ¡Les contraseñes nun concasen! @@ -3004,11 +3245,24 @@ Salida: UsersViewStep - + Users Usuarios + + VariantModel + + + Key + + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ Salida: Formulariu - - &Release notes - Notes de &llanzamientu - - - - &Known issues - &Problemes conocíos - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + Notes de &llanzamientu + + + + &Known issues + &Problemes conocíos + + + &Support &Sofitu @@ -3096,42 +3375,42 @@ Salida: &Tocante a - + <h1>Welcome to the %1 installer.</h1> <h1>Afáyate nel instalador de %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Afáyate nel instalador Calamares de %1.</h1> - + <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> - + About %1 setup Tocante a la configuración de %1 - + About %1 installer Tocante al instalador 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-2019 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/>pa %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Gracies al <a href="https://calamares.io/team/">equipu de Calamares</a> y l'<a href="https://www.transifex.com/calamares/calamares/">equipu de traductores de Calamares</a>.<br/><br/> El desendolcu de <a href="https://calamares.io/">Calamares</a> patrocínalu <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Sofitu de %1 @@ -3139,7 +3418,7 @@ Salida: WelcomeViewStep - + Welcome Acoyida diff --git a/lang/calamares_be.ts b/lang/calamares_be.ts index 7215913ff..c2386219f 100644 --- a/lang/calamares_be.ts +++ b/lang/calamares_be.ts @@ -20,99 +20,109 @@ 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 - + Усталяваць @@ -120,10 +130,10 @@ Job failed (%1) - + Задача схібіла (%1) - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -421,7 +461,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1024,7 +1064,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -1090,7 +1130,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1348,30 +1412,30 @@ The installer will quit and all changes will be lost. Form - + Форма - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Стварыць machine-id. + + + + Configuration Error + Памылка канфігурацыі + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,132 +1799,178 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard Form - + Форма @@ -1824,7 +1988,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -1961,7 +2164,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2161,7 +2364,7 @@ The installer will quit and all changes will be lost. Form - + Форма @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,14 +2513,48 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + %1 (%2) + + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. @@ -2345,7 +2582,7 @@ Output: Form - + Форма @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2906,7 +3143,7 @@ Output: Form - + Форма @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3062,26 +3316,51 @@ Output: Form - + Форма - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index b741be71f..3af0f4c2f 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Сектор за начално зареждане на %1 - + Boot Partition Дял за начално зареждане - + System Partition Системен дял - + Do not install a boot loader Не инсталирай програма за начално зареждане - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Празна страница @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Форма - + GlobalStorage Глобално съхранение - + JobQueue Опашка от задачи - + Modules Модули - + Type: Вид: - - + + none няма - + Interface: Интерфейс: - + Tools Инструменти - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Информация за отстраняване на грешки @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Инсталирай @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Готово @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Изпълни команда %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Изпълняване на команда %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Назад - - + + &Next &Напред - - + + &Cancel &Отказ - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Отказ от инсталацията без промяна на системата. - + Setup Failed - - Calamares Initialization Failed - Инициализацията на Calamares се провали + + Would you like to paste the install log to the web? + - - %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 е използван от дистрибуцията. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>Следните модули не могат да се заредят: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install &Инсталирай - + Setup is complete. Close the setup program. - + 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. Наистина ли искате да отмените текущият процес на инсталиране? Инсталатора ще прекъсне и всичките промени ще бъдат загубени. - + + &Yes &Да - + + &No &Не - + &Close &Затвори - + Continue with setup? Продължаване? - + 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> - + &Install now &Инсталирай сега - + Go &back В&ръщане - + &Done &Готово - + The installation is complete. Close the installer. Инсталацията е завършена. Затворете инсталаторa. - + Error Грешка - + Installation Failed Неуспешна инсталация @@ -371,40 +402,49 @@ 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 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Инсталатор - + Show debug information Покажи информация за отстраняване на грешки @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Самостоятелно поделяне</strong><br/>Можете да създадете или преоразмерите дяловете сами. - + Boot loader location: Локация на програмата за начално зареждане: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Сегашен: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. <strong>Изберете дял за смаляване, после влачете долната лента за преоразмеряване</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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> всички данни върху устройството за съхранение. - + 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/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. Командата не може да се изпълни. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Командата се изпълнява в средата на хоста и трябва да установи местоположението на основния дял, но rootMountPoint не е определен. - + The command needs to know the user's name, but no username is defined. Командата трябва да установи потребителското име на профила, но такова не е определено. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job Задача с контекстуални процеси @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. Директорията sudoers е незаписваема. - + Cannot create sudoers file for writing. Не може да се създаде sudoers файл за записване. - + Cannot chmod sudoers file. Не може да се изпълни chmod върху sudoers файла. - + Cannot open groups file for reading. Не може да се отвори файла на групите за четене. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Фиктивна С++ задача @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. <h1>Инсталацията е неуспешна</h1><br/>%1 не е инсталиран на Вашия компютър.<br/>Съобщението с грешката е: %2. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. Системата не е свързана с интернет. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Инсталаторът не е стартиран с права на администратор. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Скрипт @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 &ОК @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Приемам лицензионните условия. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Лицензионно Споразумение</h1>Тази процедура ще инсталира несвободен софтуер, който е обект на лицензионни условия. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Моля погледнете Лицензионните Условия за Крайния Потребител (ЛУКП).<br/>Ако не сте съгласни с условията, процедурата не може да продължи. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Лицензионно Споразумение</h1>Тази процедура може да инсталира несвободен софтуер, който е обект на лицензионни условия, за да предостави допълнителни функции и да подобри работата на потребителя. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Моля погледнете Лицензионните Условия за Крайния Потребител (ЛУКП).<br/>Ако не сте съгласни с условията, несвободния софтуер няма да бъде инсталиран и ще бъдат използвани безплатни алтернативи. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License Лиценз @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. Системният език ще бъде %1. - + The numbers and dates locale will be set to %1. Форматът на цифрите и датата ще бъде %1. - + Region: Регион: - + Zone: Зона: - - + + &Change... &Промени... - + Set timezone to %1/%2.<br/> Постави часовата зона на %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Зареждане на данните за местоположение - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Генерирай machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Име - + Description Описание - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Мрежова инсталация. (Изключена: Списъкът с пакети не може да бъде извлечен, проверете Вашата Интернет връзка) - + Network Installation. (Disabled: Received invalid groups data) Мрежова инсталация. (Изключена: Получени са данни за невалидни групи) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 Паролата е обърнат вариант на старата @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. Паролата съдържа по-малко от %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 + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. Какво е вашето име? - + What name do you want to use to log in? Какво име искате да използвате за влизане? - + 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> - + What is the name of this computer? Какво е името на този компютър? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Това име ще бъде използвано ако направите компютъра видим за други при мрежа.</small> - + + Computer Name + + + + + + 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> @@ -2038,107 +2241,107 @@ 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>esp</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>esp</strong> флаг и точка на монтиране <strong>%2</strong>.<br/><br/>Може да продължите без EFI системен дял, но системата може да не успее да стартира. - + EFI system partition flag not set Не е зададен флаг на 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>esp</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>esp</strong> флаг не е включен.<br/>За да включите флага се върнете назад и редактирайте дяла.<br/><br/>Може да продължите без флага, но системата може да не успее да стартира. - + 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 partitons to install on. @@ -2204,13 +2407,13 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. - + Output: @@ -2219,52 +2422,52 @@ 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. @@ -2313,16 +2516,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2542,38 +2779,38 @@ Output: 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> Този компютър не отговаря на минималните изисквания за инсталиране %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. - + 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 на вашия компютър. - + For best results, please ensure that this computer: За най-добри резултати, моля бъдете сигурни че този компютър: - + System requirements Системни изисквания @@ -2594,29 +2831,29 @@ Output: 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 Не може да се запише името на хоста на целевата система @@ -2757,22 +2994,22 @@ Output: rootMountPoint е %1 - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. Не може да се постави парола за потребител %1. - + usermod terminated with error code %1. usermod е прекратен с грешка %1. @@ -2795,22 +3032,22 @@ Output: Невалиден път: %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 за записване @@ -2856,22 +3093,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2879,28 +3116,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2933,17 +3170,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2951,7 +3188,7 @@ Output: TrackingViewStep - + Feedback Обратна връзка @@ -2959,43 +3196,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Потребителското ви име съдържа непозволени символи! Само малки букви и числа са позволени. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Вашето име на хоста е твърде кратко. - + Your hostname is too long. Вашето име на хоста е твърде дълго. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Вашето име на хоста съдържа непозволени символи! Само букви, цифри и тирета са позволени. - - - - + Your passwords do not match! Паролите Ви не съвпадат! @@ -3003,11 +3244,24 @@ Output: UsersViewStep - + Users Потребители + + VariantModel + + + Key + + + + + Value + Стойност + + VolumeGroupBaseDialog @@ -3069,23 +3323,48 @@ Output: Форма - - &Release notes - &Бележки по изданието - - - - &Known issues - &Съществуващи проблеми - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Бележки по изданието + + + + &Known issues + &Съществуващи проблеми + + + &Support &Поддръжка @@ -3095,42 +3374,42 @@ Output: &Относно - + <h1>Welcome to the %1 installer.</h1> <h1>Добре дошли при инсталатора на %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Добре дошли при инсталатора Calamares на %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support %1 поддръжка @@ -3138,7 +3417,7 @@ Output: WelcomeViewStep - + Welcome Добре дошли diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index c31cde6d6..b484cf217 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Registre d'inici mestre (MBR) de %1 - + Boot Partition Partició d'arrencada - + System Partition Partició del sistema - + Do not install a boot loader No instal·lis cap gestor d'arrencada - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Pàgina en blanc @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulari - + GlobalStorage Emmagatzematge global - + JobQueue Cua de tasques - + Modules Mòduls - + Type: Tipus: - - + + none cap - + Interface: Interfície: - + Tools Eines - + + Reload Stylesheet + Torna a carregar el full d’estil + + + + Widget Tree + Arbre de ginys + + + Debug information Informació de depuració @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Configuració - + Install Instal·la @@ -123,7 +133,7 @@ Ha fallat la tasca (%1) - + Programmed job failure was explicitly requested. S'ha demanat explícitament la fallada de la tasca programada. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Fet @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Executa l'ordre %1 %2 + Run command '%1' in target system. + Executa l'ordre "%1" al sistema de destinació. - + + Run command '%1'. + Executa l'ordre "%1". + + + Running command %1 %2 S'executa l'ordre %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. S'executa l'operació %1. - + Bad working directory path Camí incorrecte al directori de treball - + Working directory %1 for python job %2 is not readable. El directori de treball %1 per a la tasca python %2 no és llegible. - + Bad main script file Fitxer erroni d'script principal - + Main script file %1 for python job %2 is not readable. El fitxer de script principal %1 per a la tasca de python %2 no és llegible. - + Boost.Python error in job "%1". Error de Boost.Python a la tasca "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). S'espera %n mòdul.S'esperen %n mòduls. - + (%n second(s)) (%n segon)(%n segons) - + System-requirements checking is complete. S'ha completat la comprovació dels requeriments del sistema. @@ -211,201 +226,227 @@ Calamares::ViewManager - + + &Back &Enrere - - + + &Next &Següent - - + + &Cancel &Cancel·la - - + 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. - + Setup Failed Ha fallat la configuració. - + + Would you like to paste the install log to the web? + Voleu enganxar el registre d'instal·lació a la xarxa? + + + + 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 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> - + &Set up now Con&figura-ho ara - + &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ó. - + Cancel setup? Voleu cancel·lar la configuració? - + Cancel installation? - Cancel·lar la instal·lació? + 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? L'instal·lador es tancarà i tots els canvis es perdran. - + + &Yes &Sí - + + &No &No - + &Close Tan&ca - + Continue with setup? Voleu continuar la configuració? - + 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 de %1 està a punt de fer canvis al disc per tal d'instal·lar-hi %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + &Install now - &Instal·la ara + &Instal·la'l ara - + Go &back Ves &enrere - + &Done &Fet - + The installation is complete. Close the installer. La instal·lació s'ha acabat. Tanqueu l'instal·lador. - + Error Error - + Installation Failed - La instal·lació ha fallat + La instal·lació ha fallat. CalamaresPython::Helper - + Unknown exception type Tipus d'excepció desconeguda - + unparseable Python error Error de Python no analitzable - + unparseable Python traceback Traceback de Python no analitzable - + Unfetchable Python error. Error de Python irrecuperable. + + CalamaresUtils + + + Install log posted to: +%1 + Registre d'instal·lació penjat a +%1 + + CalamaresWindow - + %1 Setup Program Programa de configuració %1 - + %1 Installer Instal·lador de %1 - + Show debug information Mostra la informació de depuració @@ -436,7 +477,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Particions manuals</strong><br/>Podeu crear o canviar la mida de les particions vosaltres mateixos. - + Boot loader location: Ubicació del gestor d'arrencada: @@ -448,8 +489,8 @@ L'instal·lador es tancarà i tots els canvis es perdran. - - + + Current: Actual: @@ -464,96 +505,96 @@ L'instal·lador es tancarà i tots els canvis es perdran. <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. - + <strong>Select a partition to install on</strong> - <strong>Seleccioneu una partició per fer-hi la instal·lació</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. - + 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. - + 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 - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instal·la 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 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. @@ -602,18 +643,18 @@ L'instal·lador es tancarà i tots els canvis es perdran. CommandList - - + + Could not run command. No s'ha pogut executar l'ordre. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. L'odre s'executa a l'entorn de l'amfitrió i necessita saber el camí de l'arrel, però no hi ha definit el punt de muntatge de l'arrel. - + The command needs to know the user's name, but no username is defined. L'ordre necessita saber el nom de l'usuari, però no s'ha definit cap nom d'usuari. @@ -621,7 +662,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. ContextualProcessJob - + Contextual Processes Job Tasca de procés contextual @@ -801,17 +842,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. 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. @@ -958,7 +999,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. DummyCppJob - + Dummy C++ Job Tasca C++ fictícia @@ -1125,12 +1166,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. <html><head/><body><p>Quan aquesta casella està marcada, el sistema es reiniciarà immediatament quan cliqueu a <span style=" font-style:italic;">Fet</span> o tanqueu l'instal·lador.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. - <h1>La configuració ha fallat</h1><br/>No s'ha configurat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2. + <h1>La configuració ha fallat.</h1><br/>No s'ha configurat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>La instal·lació ha fallat</h1><br/>No s'ha instal·lat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2. @@ -1189,66 +1230,74 @@ L'instal·lador es tancarà i tots els canvis es perdran. GeneralRequirements - + has at least %1 GiB available drive space tingui com a mínim %1 GiB d'espai de disc disponible. - + There is not enough drive space. At least %1 GiB is required. No hi ha prou espai de disc disponible. Com a mínim hi ha d'haver %1 GiB. - + has at least %1 GiB working memory tingui com a mínim %1 GiB de memòria de treball. - + The system does not have enough working memory. At least %1 GiB is required. El sistema no té prou memòria de treball. Com a mínim hi ha d'haver %1 GiB. - + is plugged in to a power source estigui connectat a una presa de corrent. - + The system is not plugged in to a power source. El sistema no està connectat a una presa de corrent. - + is connected to the Internet estigui connectat a Internet. - + The system is not connected to the Internet. El sistema no està connectat a Internet. - + The setup program is not running with administrator rights. El programa de configuració no s'executa amb privilegis d'administrador. - + The installer is not running with administrator rights. - L'instal·lador no s'ha executat amb privilegis d'administrador. + L'instal·lador no s'executa amb privilegis d'administrador. - + The screen is too small to display the setup program. La pantalla és massa petita per mostrar el programa de configuració. - + The screen is too small to display the installer. La pantalla és massa petita per mostrar l'instal·lador. + + HostInfoJob + + + Collecting information about your machine. + Es recopila informació sobre la màquina. + + IDJob @@ -1257,7 +1306,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. OEM Batch Identifier - Identificador de lots OEM + Identificador de lots d'OEM @@ -1275,12 +1324,28 @@ L'instal·lador es tancarà i tots els canvis es perdran. No s'ha pogut escriure al fitxer <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Es creen initramfs amb mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Es creen initramfs. + + InteractiveTerminalPage Konsole not installed - El Konsole no està instal·lat + El Konsole no està instal·lat. @@ -1296,7 +1361,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1390,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. LCLocaleDialog - + System locale setting Configuració de la llengua del sistema - + 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>. La configuració local del sistema afecta la llengua i el joc de caràcters d'alguns elements de la interície de línia d'ordres. <br/>La configuració actual és <strong>%1</strong>. - + &Cancel &Cancel·la - + &OK D'ac&ord @@ -1353,27 +1418,27 @@ L'instal·lador es tancarà i tots els canvis es perdran. Formulari - + I accept the terms and conditions above. Accepto els termes i les condicions anteriors. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acord de llicència</h1> Aquest procediment de configuració instal·larà programari de propietat subjecte a termes de llicència. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Si us plau, reviseu l'acord de llicència End User License Agreements (EULAs) anterior.<br/>Si no esteu d'acord en els termes, el procediment de configuració no pot continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acord de llicència</h1> 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. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si us plau, reviseu l'acord de llicència End User License Agreements (EULAs) anterior.<br/>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. @@ -1381,7 +1446,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. LicenseViewStep - + License Llicència @@ -1389,64 +1454,64 @@ L'instal·lador es tancarà i tots els canvis es perdran. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - <strong>%1 controlador</strong><br/>de %2 + <strong>Controlador %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>%1 controlador gràfic</strong><br/><font color="Grey">de %2</font> + <strong>Controlador gràfic %1</strong><br/><font color="Grey">de %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - <strong>%1 connector del navegador</strong><br/><font color="Grey">de %2</font> + <strong>Connector del navegador %1</strong><br/><font color="Grey">de %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - <strong>%1 còdec</strong><br/><font color="Grey">de %2</font> + <strong>Còdec %1</strong><br/><font color="Grey">de %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> - <strong>%1 paquet</strong><br/><font color="Grey">de %2</font> + <strong>Paquet %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> - + Shows the complete license text Mostra el text complet de la llicència - + Hide license text Amaga el text de la llicència - + Show license agreement Mostra l'acord de llicència - + Hide license agreement Amaga l'acord de llicència - + Opens the license agreement in a browser window. Obre l'acord de llicència en una finestra del navegador. - + <a href="%1">View license agreement</a> <a href="%1">Mostra l'acord de llicència</a> @@ -1454,33 +1519,33 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocalePage - + 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. - + Region: Regió: - + Zone: Zona: - - + + &Change... &Canvia... - + Set timezone to %1/%2.<br/> Estableix la zona horària a %1/%2.<br/> @@ -1488,37 +1553,91 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocaleViewStep - - Loading location data... - Es carreguen les dades d'ubicació... - - - + Location Ubicació + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Es configura el fitxer de clau LUKS. + + + + + No partitions are defined. + No s'ha definit cap partició. + + + + + + Encrypted rootfs setup error + Error de configuració de rootfs encriptat. + + + + Root partition %1 is LUKS but no passphrase has been set. + La partició d'arrel %1 és LUKS però no se n'ha establert cap contrasenya. + + + + Could not create LUKS key file for root partition %1. + No s'ha pogut crear el fitxer de clau de LUKS per a la partició d'arrel %1. + + + + Could configure LUKS key file on partition %1. + S'ha pogut configurar el fitxer de clau de LUKS a la partició %1. + + + + MachineIdJob + + + Generate machine-id. + Generació de l'id. de la màquina. + + + + Configuration Error + Error de configuració + + + + No root mount point is set for MachineId. + No hi ha punt de muntatge d'arrel establert per a MachineId. + + NetInstallPage - + Name Nom - + Description Descripció - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instal·lació per xarxa. (Inhabilitada: no es poden obtenir les llistes de paquets, comproveu la connexió.) - + Network Installation. (Disabled: Received invalid groups data) - Instal·lació per xarxa. (Inhabilitat: dades de grups rebudes no vàlides) + Instal·lació per xarxa. (Inhabilitada: dades de grups rebudes no vàlides) + + + + Network Installation. (Disabled: Incorrect configuration) + Instal·lació per xarxa. (Inhabilitada: configuració incorrecta) @@ -1550,12 +1669,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. OEMViewStep - + OEM Configuration Configuració d'OEM - + Set the OEM Batch Identifier to <code>%1</code>. Estableix l'identificador de lots d'OEM a<code>%1</code>. @@ -1563,117 +1682,117 @@ L'instal·lador es tancarà i tots els canvis es perdran. 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. @@ -1683,125 +1802,171 @@ L'instal·lador es tancarà i tots els canvis es perdran. 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. + + + + PackageChooserPage + + + Form + Formulari + + + + Product Name + Nom del producte + + + + TextLabel + Etiqueta de text + + + + Long Product Description + Descripció llarga del producte + + + + Package Selection + Selecció de paquets + + + + Please pick a product from the list. The selected product will be installed. + Si us plau, trieu un producte de la llista. S'instal·larà el producte seleccionat. + + + + PackageChooserViewStep + + + Packages + Paquets + Page_Keyboard @@ -1834,47 +1999,86 @@ L'instal·lador es tancarà i tots els canvis es perdran. Com us dieu? - + What name do you want to use to log in? Quin nom voleu utilitzar per iniciar la sessió d'usuari? - + Choose a password to keep your account safe. Trieu una contrasenya per tal de mantenir el compte d'usuari segur. - + + <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>Escriviu la mateixa contrasenya dues vegades, de manera que se'n puguin comprovar els errors de mecanografia. Una bona contrasenya contindrà una barreja de lletres, números i signes de puntuació, hauria de tenir un mínim de 8 caràcters i s'hauria de modificar a intervals regulars de temps.</small> - + What is the name of this computer? Com es diu aquest ordinador? - + + Your Full Name + El nom complet + + + + login + entrada + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Aquest nom s'utilitzarà en cas que feu visible per a altres aquest ordinador en una xarxa.</small> - + + Computer Name + Nom de l'ordinador + + + + + Password + Contrasenya + + + + + Repeat Password + Repetiu la contrasenya. + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Quan aquesta casella està marcada, es comprova la fortalesa de la contrasenya i no en podreu fer una de dèbil. + + + + Require strong passwords. + Requereix contrasenyes fortes. + + + Log in automatically without asking for the password. Entra automàticament sense demanar la contrasenya. - + Use the same password for the administrator account. Usa la mateixa contrasenya per al compte d'administració. - + Choose a password for the administrator account. Trieu una contrasenya per al compte d'administració. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Escriviu la mateixa contrasenya dues vegades, per tal de poder-ne comprovar els errors de mecanografia.</small> @@ -2039,107 +2243,107 @@ L'instal·lador es tancarà i tots els canvis es perdran. 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>esp</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>esp</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. - + EFI system partition flag not set No s'ha establert la bandera de la partició EFI del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</strong>. 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. - + 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 partitons to install on. No hi ha cap partició per fer-hi la instal·lació. @@ -2205,14 +2409,14 @@ L'instal·lador es tancarà i tots els canvis es perdran. ProcessResult - + There was no output from the command. No hi ha hagut sortida de l'ordre. - + Output: @@ -2221,52 +2425,52 @@ Sortida: - + External command crashed. L'ordre externa ha fallat. - + Command <i>%1</i> crashed. L'ordre <i>%1</i> ha fallat. - + External command failed to start. L'ordre externa no s'ha pogut iniciar. - + Command <i>%1</i> failed to start. L'ordre <i>%1</i> no s'ha pogut iniciar. - + Internal error when starting command. Error intern en iniciar l'ordre. - + Bad parameters for process job call. Paràmetres incorrectes per a la crida de la tasca del procés. - + External command failed to finish. L'ordre externa no ha acabat correctament. - + Command <i>%1</i> failed to finish in %2 seconds. L'ordre <i>%1</i> no ha pogut acabar en %2 segons. - + External command finished with errors. L'ordre externa ha acabat amb errors. - + Command <i>%1</i> finished with exit code %2. L'ordre <i>%1</i> ha acabat amb el codi de sortida %2. @@ -2315,16 +2519,50 @@ Sortida: (sense punt de muntatge) - + Requirements checking for module <i>%1</i> is complete. S'ha completat la comprovació dels requeriments per al mòdul <i>%1</i>. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Cap producte + + + + No description provided. + No se n'ha proporcionat cap descripció. + + + + + + + + File not found + No s'ha trobat el fitxer. + + + + Path <pre>%1</pre> must be an absolute path. + El camí <pre>%1</pre> ha de ser un camí absolut. + + + + Could not create new random file <pre>%1</pre>. + No s'ha pogut crear el fitxer aleatori nou <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + No s'ha pogut llegir el fitxer aleatori <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Sortida: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Aquest ordinador no satisfà els requisits mínims per configurar-hi %1.<br/> La configuració no pot continuar. <a href="#details">Detalls...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Aquest ordinador no satisfà els requisits mínims per instal·lar-hi %1.<br/> La instal·lació no pot continuar. <a href="#details">Detalls...</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. - Aquest ordinador no satisfà alguns dels requisits recomanats per configurar-hi %1.<br/>La configuració pot continuar, però algunes característiques podrien estar desactivades. + Aquest ordinador no satisfà alguns dels requisits recomanats per configurar-hi %1.<br/>La configuració pot continuar, però algunes característiques podrien estar inhabilitades. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Aquest ordinador no satisfà alguns dels requisits recomanats per instal·lar-hi %1.<br/>La instal·lació pot continuar, però algunes característiques podrien estar desactivades. + Aquest ordinador no satisfà alguns dels requisits recomanats per instal·lar-hi %1.<br/>La instal·lació pot continuar, però algunes característiques podrien estar inhabilitades. - + This program will ask you some questions and set up %2 on your computer. Aquest programa us farà unes quantes preguntes i instal·larà %2 al vostre ordinador. - + For best results, please ensure that this computer: Per obtenir els millors resultats, assegureu-vos, si us plau, que aquest ordinador... - + System requirements Requisits del sistema @@ -2595,29 +2833,29 @@ Sortida: SetHostNameJob - + Set hostname %1 Estableix el nom d'amfitrió %1 - + Set hostname <strong>%1</strong>. Estableix el nom d'amfitrió <strong>%1</strong>. - + Setting hostname %1. S'estableix el nom d'amfitrió %1. - - + + Internal Error Error intern - - + + Cannot write hostname to target system No es pot escriure el nom d'amfitrió al sistema de destinació @@ -2758,22 +2996,22 @@ Sortida: El punt de muntatge de l'arrel és %1 - + Cannot disable root account. No es pot inhabilitar el compte d'arrel. - + passwd terminated with error code %1. El procés passwd ha acabat amb el codi d'error %1. - + Cannot set password for user %1. No es pot establir la contrasenya per a l'usuari %1. - + usermod terminated with error code %1. usermod ha terminat amb el codi d'error %1. @@ -2796,22 +3034,22 @@ Sortida: Camí incorrecte: %1 - + Cannot set timezone. No es pot assignar la zona horària. - + Link creation failed, target: %1; link name: %2 Ha fallat la creació del vincle; destinació: %1, nom del vincle: %2 - + Cannot set timezone, No es pot establir la zona horària, - + Cannot open /etc/timezone for writing No es pot obrir /etc/timezone per escriure-hi @@ -2857,22 +3095,22 @@ Sortida: TrackingInstallJob - + Installation feedback Informació de retorn de la instal·lació - + Sending installation feedback. S'envia la informació de retorn de la instal·lació. - + Internal error in install-tracking. Error intern a install-tracking. - + HTTP request timed out. La petició HTTP ha esgotat el temps d'espera. @@ -2880,28 +3118,28 @@ Sortida: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Sortida: El seguiment de la instal·lació ajuda %1 a veure quants usuaris tenen, en quin maquinari s'instal·la %1 i (amb les últimes dues opcions de baix), a obtenir informació contínua d'aplicacions preferides. Per veure el que s'enviarà, cliqueu a la icona d'ajuda contigua a cada àrea. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Si seleccioneu això, enviareu informació sobre la vostra instal·lació i el vostre maquinari. Aquesta informació <b>només s'enviarà un cop</b> després d'acabar la instal·lació. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Si seleccioneu això, enviareu informació <b>periòdicament</b>sobre la instal·lació, el maquinari i les aplicacions a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Si seleccioneu això, enviareu informació <b>regularment</b>sobre la instal·lació, el maquinari, les aplicacions i els patrons d'ús a %1. @@ -2952,7 +3190,7 @@ Sortida: TrackingViewStep - + Feedback Informació de retorn @@ -2960,43 +3198,47 @@ Sortida: 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 contains invalid characters. Only lowercase letters and numbers are allowed. - El nom d'usuari conté caràcters no vàlids. Només s'hi admeten lletres i números. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Només es permeten lletres, 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - El nom d'amfitrió conté caràcters no vàlids. Només s'hi admeten lletres, números i guions. - - - - + Your passwords do not match! Les contrasenyes no coincideixen! @@ -3004,11 +3246,24 @@ Sortida: UsersViewStep - + Users Usuaris + + VariantModel + + + Key + Clau + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Sortida: Formulari - + + + Select application and system language + Seleccioneu una aplicació i la llengua del sistema + + + + Open donations website + Obre el lloc web per a les donacions + + + + &Donate + Feu una &donació + + + + Open help and support website + Obre el lloc web per a l'ajuda i el suport + + + + Open issues and bug-tracking website + Obre el lloc web de problemes i de seguiment d'errors + + + + Open release notes website + Obre el lloc web de les notes de la versió + + + &Release notes &Notes de la versió - + &Known issues &Problemes coneguts - - - Select language - Seleccioneu una llengua - - - + &Support &Suport @@ -3096,42 +3376,42 @@ Sortida: &Quant a - + <h1>Welcome to the %1 installer.</h1> <h1>Us donem la benvinguda a l'instal·lador de %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Us donem la benvinguda a l'instal·lador Calamares per a %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Us donem la benvinguda al programa de configuració del Calamares per a %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Us donem la benvinguda a la configuració de %1.</h1> - + About %1 setup Quant a la configuració de %1 - + About %1 installer Quant a l'instal·lador %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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agraïments per a <a href="https://calamares.io/team/">l'equip del Calamares</a> i per a <a href="https://www.transifex.com/calamares/calamares/">l'equip de traductors del Calamares</a>.<br/><br/>El desenvolupament del<a href="https://calamares.io/">Calamares</a> està patrocinat per <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport @@ -3139,7 +3419,7 @@ Sortida: WelcomeViewStep - + Welcome Benvinguda diff --git a/lang/calamares_ca@valencia.ts b/lang/calamares_ca@valencia.ts index e738a9628..86873e7c5 100644 --- a/lang/calamares_ca@valencia.ts +++ b/lang/calamares_ca@valencia.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,52 +3370,52 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer - + Sobre %1 instal·lador - + <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-2019 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. - + %1 support - + %1 soport WelcomeViewStep - + Welcome - + Benvingut \ No newline at end of file diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index cada5548e..78d2f4c38 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Hlavní zaváděcí záznam (MBR) na %1 - + Boot Partition Zaváděcí oddíl - + System Partition Systémový oddíl - + Do not install a boot loader Neinstalovat zavaděč systému - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Prázdná stránka @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulář - + GlobalStorage Globální úložiště - + JobQueue Zpracovává se - + Modules Moduly - + Type: Typ: - - + + none žádný - + Interface: Rozhraní: - + Tools Nástroje - + + Reload Stylesheet + Znovunačíst sešit se styly + + + + Widget Tree + Strom widgetu + + + Debug information Ladící informace @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Nastavit - + Install Instalovat @@ -123,7 +133,7 @@ Úloha se nezdařila (%1) - + Programmed job failure was explicitly requested. Byl výslovně vyžádán nezdar naprogramované úlohy. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Hotovo @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Spustit příkaz %1 %2 + Run command '%1' in target system. + Spustit v cílovém systému příkaz „%1“. - + + Run command '%1'. + Spustit příkaz „%1“ + + + Running command %1 %2 Spouštění příkazu %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Spouštění %1 operace. - + Bad working directory path Chybný popis umístění pracovní složky - + Working directory %1 for python job %2 is not readable. Pracovní složku %1 pro Python skript %2 se nedaří otevřít pro čtení. - + Bad main script file Nesprávný soubor s hlavním skriptem - + Main script file %1 for python job %2 is not readable. Hlavní soubor s python skriptem %1 pro úlohu %2 se nedaří otevřít pro čtení.. - + Boost.Python error in job "%1". Boost.Python chyba ve skriptu „%1“. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Čeká se na %n modulČeká se na %n modulyČeká se na %n modulůČeká se na %n moduly - + (%n second(s)) (%n sekundu)(%n sekundy)(%n sekund)(%n sekundy) - + System-requirements checking is complete. Kontrola požadavků na systém dokončena. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Zpět - - + + &Next &Další - - + + &Cancel &Storno - - + 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. - + Setup Failed Nastavení se nezdařilo - + + Would you like to paste the install log to the web? + Chcete vyvěsit záznam událostí při instalaci na web? + + + + 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 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> - + &Set up now Na&stavit nyní - + &Set up Na&stavit - + &Install Na&instalovat - + Setup is complete. Close the setup program. Nastavení je dokončeno. Ukončete nastavovací program. - + 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? Instalační program bude ukončen a všechny změny ztraceny. - + + &Yes &Ano - + + &No &Ne - + &Close &Zavřít - + Continue with setup? Pokračovat s instalací? - + 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> - + &Install now &Spustit instalaci - + Go &back Jít &zpět - + &Done &Hotovo - + The installation is complete. Close the installer. Instalace je dokončena. Ukončete instalátor. - + Error Chyba - + Installation Failed Instalace se nezdařila @@ -372,40 +403,50 @@ Instalační program bude ukončen a všechny změny ztraceny. CalamaresPython::Helper - + Unknown exception type Neznámý typ výjimky - + unparseable Python error Chyba při zpracovávání (parse) Python skriptu. - + unparseable Python traceback Chyba při zpracovávání (parse) Python záznamu volání funkcí (traceback). - + Unfetchable Python error. Chyba při načítání Python skriptu. + + CalamaresUtils + + + Install log posted to: +%1 + Záznam událostí instalace vyvěšen na: +%1 + + CalamaresWindow - + %1 Setup Program Instalátor %1 - + %1 Installer %1 instalátor - + Show debug information Zobrazit ladící informace @@ -436,7 +477,7 @@ Instalační program bude ukončen a všechny změny ztraceny. <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. - + Boot loader location: Umístění zavaděče: @@ -448,8 +489,8 @@ Instalační program bude ukončen a všechny změny ztraceny. - - + + Current: Stávající: @@ -464,96 +505,96 @@ Instalační program bude ukončen a všechny změny ztraceny. <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. - + <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í. - + 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í. - + 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 - - - - + + + + <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 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í. @@ -602,18 +643,18 @@ Instalační program bude ukončen a všechny změny ztraceny. CommandList - - + + Could not run command. Nedaří se spustit příkaz. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Příkaz bude spuštěn v prostředí hostitele a potřebuje znát popis umístění kořene souborového systému. rootMountPoint ale není zadaný. - + The command needs to know the user's name, but no username is defined. Příkaz potřebuje znát uživatelské jméno, to ale zadáno nebylo. @@ -621,7 +662,7 @@ Instalační program bude ukončen a všechny změny ztraceny. ContextualProcessJob - + Contextual Processes Job Úloha kontextuálních procesů @@ -801,17 +842,17 @@ Instalační program bude ukončen a všechny změny ztraceny. 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í. @@ -958,7 +999,7 @@ Instalační program bude ukončen a všechny změny ztraceny. DummyCppJob - + Dummy C++ Job Výplňová úloha C++ @@ -1125,12 +1166,12 @@ Instalační program bude ukončen a všechny změny ztraceny. <html><head/><body><p>Když je tato kolonka zaškrtnutá, systém se restartuje jakmile kliknete na <span style="font-style:italic;">Hotovo</span> nebo zavřete instalátor.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Instalace se nezdařila</h1><br/>%1 nebyl instalován na váš počítač.<br/>Hlášení o chybě: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalace se nezdařila</h1><br/>%1 nebylo nainstalováno na váš počítač.<br/>Hlášení o chybě: %2. @@ -1189,66 +1230,74 @@ Instalační program bude ukončen a všechny změny ztraceny. GeneralRequirements - + has at least %1 GiB available drive space má alespoň %1 GiB dostupného prostoru - + There is not enough drive space. At least %1 GiB is required. Nedostatek místa na úložišti. Je potřeba nejméně %1 GiB. - + has at least %1 GiB working memory má alespoň %1 GiB operační paměti - + The system does not have enough working memory. At least %1 GiB is required. Systém nemá dostatek operační paměti. Je potřeba nejméně %1 GiB. - + is plugged in to a power source je připojený ke zdroji napájení - + The system is not plugged in to a power source. Systém není připojen ke zdroji napájení. - + is connected to the Internet je připojený k Internetu - + The system is not connected to the Internet. Systém není připojený k Internetu. - + The setup program is not running with administrator rights. Nastavovací program není spuštěn s právy správce systému. - + The installer is not running with administrator rights. Instalační program není spuštěn s právy správce systému. - + The screen is too small to display the setup program. Rozlišení obrazovky je příliš malé pro zobrazení nastavovacího programu. - + The screen is too small to display the installer. Rozlišení obrazovky je příliš malé pro zobrazení instalátoru. + + HostInfoJob + + + Collecting information about your machine. + Shromažďují se informací o stroji. + + IDJob @@ -1275,6 +1324,22 @@ Instalační program bude ukončen a všechny změny ztraceny. Nedaří se zapsat do souboru <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Vytváření initramfs pomocí mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Vytváření initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Instalační program bude ukončen a všechny změny ztraceny. InteractiveTerminalViewStep - + Script Skript @@ -1325,22 +1390,22 @@ Instalační program bude ukončen a všechny změny ztraceny. LCLocaleDialog - + System locale setting Místní a jazykové nastavení systému - + 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>. Místní a jazykové nastavení systému ovlivňuje jazyk a znakovou sadu některých prvků rozhraní příkazového řádku.<br/>Stávající nastavení je <strong>%1</strong>. - + &Cancel &Storno - + &OK &OK @@ -1353,27 +1418,27 @@ Instalační program bude ukončen a všechny změny ztraceny. Formulář - + I accept the terms and conditions above. Souhlasím s výše uvedenými podmínkami. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licenční ujednání</h1>Tato instalace nainstaluje také proprietární software, který podléhá licenčním podmínkám. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Projděte si výše uvedené „licenční smlouvy s koncovým uživatelem“ (EULA).<br/> Pokud s podmínkami v nich nesouhlasíte, ukončete instalační proces. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licenční ujednání</h1>Tento instalační postup může nainstalovat také proprietární software, který podléhá licenčním podmínkám, ale který poskytuje některé další funkce a zlepšuje uživatelskou přivětivost. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Projděte si výše uvedené „licenční smlouvy s koncovým uživatelem“ (EULA).<br/> Pokud s podmínkami v nich nesouhlasíte, místo proprietárního software budou použity open source alternativy. @@ -1381,7 +1446,7 @@ Instalační program bude ukončen a všechny změny ztraceny. LicenseViewStep - + License Licence @@ -1389,64 +1454,64 @@ Instalační program bude ukončen a všechny změny ztraceny. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 ovladač</strong><br/>od %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 ovladač grafiky</strong><br/><font color="Grey">od %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 doplněk prohlížeče</strong><br/><font color="Grey">od %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">od %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 balíček</strong><br/><font color="Grey">od %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">od %2</font> - + Shows the complete license text Zobrazit úplný text znění licence - + Hide license text Skrýt text licence - + Show license agreement Zobrazit licenční ujednání - + Hide license agreement Skrýt licenční ujednání - + Opens the license agreement in a browser window. Otevřít licenční ujednání v okně webového prohlížeče - + <a href="%1">View license agreement</a> <a href="%1">Zobrazit licenční ujednání</a> @@ -1454,33 +1519,33 @@ Instalační program bude ukončen a všechny změny ztraceny. LocalePage - + 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. - + Region: Oblast: - + Zone: Pásmo: - - + + &Change... &Změnit… - + Set timezone to %1/%2.<br/> Nastavit časové pásmo na %1/%2.<br/> @@ -1488,38 +1553,92 @@ Instalační program bude ukončen a všechny změny ztraceny. LocaleViewStep - - Loading location data... - Načítání informací o poloze… - - - + Location Poloha + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Nastavování souboru s klíčem pro LUKS šifrování. + + + + + No partitions are defined. + Nejsou definovány žádné oddíly. + + + + + + Encrypted rootfs setup error + Chyba nastavení šifrovaného kořenového oddílu + + + + Root partition %1 is LUKS but no passphrase has been set. + Kořenový oddíl %1 je LUKS, ale nebyla nastavena žádná heslová fráze. + + + + Could not create LUKS key file for root partition %1. + Nedaří se vytvořit LUKS klíč pro kořenový oddíl %1. + + + + Could configure LUKS key file on partition %1. + Nedaří se nastavit LUKS klíč pro oddíl %1. + + + + MachineIdJob + + + Generate machine-id. + Vytvořit identifikátor stroje. + + + + Configuration Error + Chyba nastavení + + + + No root mount point is set for MachineId. + Pro MachineId není nastaven žádný kořenový přípojný bod. + + NetInstallPage - + Name Jméno - + Description Popis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Síťová instalace. (Vypnuto: Nedaří se stáhnout seznamy balíčků – zkontrolujte připojení k síti) - + Network Installation. (Disabled: Received invalid groups data) Síťová instalace. (Vypnuto: Obdrženy neplatné údaje skupin) + + + Network Installation. (Disabled: Incorrect configuration) + Síťová instalace. (vypnuto: nesprávné nastavení) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Instalační program bude ukončen a všechny změny ztraceny. OEMViewStep - + OEM Configuration Nastavení pro OEM - + Set the OEM Batch Identifier to <code>%1</code>. Nastavit identifikátor OEM série na <code>%1</code>. @@ -1563,117 +1682,117 @@ Instalační program bude ukončen a všechny změny ztraceny. 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 @@ -1683,125 +1802,171 @@ Instalační program bude ukončen a všechny změny ztraceny. 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é + + + + PackageChooserPage + + + Form + Form + + + + Product Name + Název produktu + + + + TextLabel + TextovýPopisek + + + + Long Product Description + Podrobnější popis produktu + + + + Package Selection + Výběr balíčků + + + + Please pick a product from the list. The selected product will be installed. + Vyberte produkt ze seznamu. Ten vybraný bude nainstalován. + + + + PackageChooserViewStep + + + Packages + Balíčky + Page_Keyboard @@ -1834,47 +1999,86 @@ Instalační program bude ukončen a všechny změny ztraceny. Jak se jmenujete? - + What name do you want to use to log in? Jaké jméno chcete používat pro přihlašování do systému? - + Choose a password to keep your account safe. Zvolte si heslo pro ochranu svého účtu. - + + <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>Zadání hesla zopakujte i do kontrolní kolonky, abyste měli jistotu, že jste napsali, co zamýšleli (že nedošlo k překlepu). Dobré heslo se bude skládat z písmen, číslic a interpunkce a mělo by být alespoň osm znaků dlouhé. Heslo byste také měli pravidelně měnit (prevence škod z jeho případného prozrazení).</small> - + What is the name of this computer? Jaký je název tohoto počítače? - + + Your Full Name + Vaše celé jméno + + + + login + uživatelské jméno + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Pod tímto názvem se bude počítač případně zobrazovat ostatním počítačům v síti.</small> - + + Computer Name + Název počítače + + + + + Password + Heslo + + + + + Repeat Password + Zopakování zadání hesla + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Když je toto zaškrtnuto, je prověřována odolnost hesla a nebude umožněno použít snadno prolomitelné heslo. + + + + Require strong passwords. + Vyžaduje odolné heslo. + + + Log in automatically without asking for the password. Při spouštění systému se přihlašovat automaticky (bez zadávání hesla). - + Use the same password for the administrator account. Použít stejné heslo i pro účet správce systému. - + Choose a password for the administrator account. Zvolte si heslo pro účet správce systému. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Zadání hesla zopakujte i do kontrolní kolonky, abyste měli jistotu, že jste napsali, co zamýšleli (že nedošlo k překlepu).</small> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</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. - + EFI system partition flag not set Příznak EFI systémového oddílu není nastavený - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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 partitons to install on. Nejsou zde žádné oddíly na které by se dalo nainstalovat. @@ -2205,14 +2409,14 @@ Instalační program bude ukončen a všechny změny ztraceny. ProcessResult - + There was no output from the command. Příkaz neposkytl žádný výstup. - + Output: @@ -2221,52 +2425,52 @@ Výstup: - + External command crashed. Vnější příkaz byl neočekávaně ukončen. - + Command <i>%1</i> crashed. Příkaz <i>%1</i> byl neočekávaně ukončen. - + External command failed to start. Vnější příkaz se nepodařilo spustit. - + Command <i>%1</i> failed to start. Příkaz <i>%1</i> se nepodařilo spustit. - + Internal error when starting command. Vnitřní chyba při spouštění příkazu. - + Bad parameters for process job call. Chybné parametry volání úlohy procesu. - + External command failed to finish. Vnější příkaz se nepodařilo dokončit. - + Command <i>%1</i> failed to finish in %2 seconds. Příkaz <i>%1</i> se nepodařilo dokončit do %2 sekund. - + External command finished with errors. Vnější příkaz skončil s chybami. - + Command <i>%1</i> finished with exit code %2. Příkaz <i>%1</i> skončil s návratovým kódem %2. @@ -2315,16 +2519,50 @@ Výstup: (žádný přípojný bod) - + Requirements checking for module <i>%1</i> is complete. Kontrola požadavků pro modul <i>%1</i> dokončena. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Žádný produkt + + + + No description provided. + Nebyl poskytnut žádný popis. + + + + + + + + File not found + Soubor nenalezen + + + + Path <pre>%1</pre> must be an absolute path. + Je třeba, aby <pre>%1</pre>byl úplný popis umístění. + + + + Could not create new random file <pre>%1</pre>. + Nepodařilo se vytvořit nový náhodný soubor <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Nepodařilo se číst náhodný soubor <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Výstup: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Počítač nesplňuje minimální požadavky pro instalaci %1.<br/>Instalace nemůže pokračovat <a href="#details">Podrobnosti…</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Počítač nesplňuje minimální požadavky pro instalaci %1.<br/>Instalace nemůže pokračovat <a href="#details">Podrobnosti…</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. 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. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. 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. - + This program will ask you some questions and set up %2 on your computer. Tento program vám položí několik dotazů, aby na základě odpovědí příslušně nainstaloval %2 na váš počítač. - + For best results, please ensure that this computer: Nejlepších výsledků se dosáhne, pokud tento počítač bude: - + System requirements Požadavky na systém @@ -2595,29 +2833,29 @@ Výstup: SetHostNameJob - + Set hostname %1 Nastavit název počítače %1 - + Set hostname <strong>%1</strong>. Nastavit název počítače <strong>%1</strong>. - + Setting hostname %1. Nastavuje se název počítače %1. - - + + Internal Error Vnitřní chyba - - + + Cannot write hostname to target system Název počítače se nedaří zapsat do cílového systému @@ -2758,22 +2996,22 @@ Výstup: Přípojný bod kořenového souborového systému (root) je %1 - + Cannot disable root account. Nedaří se zakázat účet správce systému (root). - + passwd terminated with error code %1. Příkaz passwd ukončen s chybovým kódem %1. - + Cannot set password for user %1. Nepodařilo se nastavit heslo uživatele %1. - + usermod terminated with error code %1. Příkaz usermod ukončen s chybovým kódem %1. @@ -2796,22 +3034,22 @@ Výstup: Chybný popis umístění: %1 - + Cannot set timezone. Časovou zónu se nedaří nastavit. - + Link creation failed, target: %1; link name: %2 Odkaz se nepodařilo vytvořit, cíl: %1; název odkazu: %2 - + Cannot set timezone, Nedaří se nastavit časovou zónu, - + Cannot open /etc/timezone for writing Soubor /etc/timezone se nedaří otevřít pro zápis @@ -2857,22 +3095,22 @@ Výstup: TrackingInstallJob - + Installation feedback Zpětná vazba z instalace - + Sending installation feedback. Posílání zpětné vazby z instalace. - + Internal error in install-tracking. Vnitřní chyba v install-tracking. - + HTTP request timed out. Překročen časový limit HTTP požadavku. @@ -2880,28 +3118,28 @@ Výstup: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Výstup: Sledování instalace pomůže %1 zjistit, kolik má uživatelů, na jakém hardware %1 instalují a (s posledními dvěma možnostmi níže), získávat průběžné informace o upřednostňovaných aplikacích. Co bude posíláno je možné si zobrazit kliknutím na ikonu nápovědy v každé z oblastí. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent 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 <b>periodically</b> send information about your installation, hardware and applications, to %1. Výběrem tohoto budete <b>pravidelně</b> posílat informace o své instalaci, hardware a aplikacích do %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Výběrem tohoto budete <b>pravidelně</b> posílat informace o své instalaci, hardware, aplikacích a způsobu využití do %1. @@ -2952,7 +3190,7 @@ Výstup: TrackingViewStep - + Feedback Zpětná vazba @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Vaše uživatelské jméno obsahuje neplatné znaky. Je možné použít pouze malá písmena a číslice. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Je možné použít pouze 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ý. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Název stroje obsahuje neplatné znaky. Je možné použít pouze písmena, číslice a spojovníky. - - - - + Your passwords do not match! Zadání hesla se neshodují! @@ -3004,11 +3246,24 @@ Výstup: UsersViewStep - + Users Uživatelé + + VariantModel + + + Key + Klíč + + + + Value + Hodnota + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Výstup: Formulář - + + + Select application and system language + Vybrat jazyk pro aplikace a systém + + + + Open donations website + Otevřít webovou stránku po poskytnutí daru + + + + &Donate + &Darovat + + + + Open help and support website + Otevřít webovou stránku s nápovědou a podporou + + + + Open issues and bug-tracking website + Otevřít webovou stránku se správou hlášení problémů + + + + Open release notes website + Otevřít webovou stránku s poznámkami k vydání + + + &Release notes &Poznámky k vydání - + &Known issues &Známé problémy - - - Select language - Vyberte jazyk - - - + &Support &Podpora @@ -3096,42 +3376,42 @@ Výstup: &O projektu - + <h1>Welcome to the %1 installer.</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 (nejen) pro %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Vítejte v Calamares, instalačním programu (nejen) pro %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Vítejte v instalátoru pro %1.</h1> - + About %1 setup O nastavování %1 - + About %1 installer O instalátoru %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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poděkování <a href="https://calamares.io/team/">týmu Calamares</a> a <a href="https://www.transifex.com/calamares/calamares/">týmu překladatelů Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> vývoj je sponzorován <br/><a href="http://www.blue-systems.com/">Blue Systems</a> – Liberating Software. - + %1 support %1 podpora @@ -3139,7 +3419,7 @@ Výstup: WelcomeViewStep - + Welcome Vítejte diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index ad5f7cf6b..50c8cae6d 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record af %1 - + Boot Partition Bootpartition - + System Partition Systempartition - + Do not install a boot loader Installér ikke en bootloader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Tom side @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formular - + GlobalStorage Globalt lager - + JobQueue Jobkø - + Modules Moduler - + Type: Type: - - + + none ingen - + Interface: Grænseflade: - + Tools Værktøjer - + + Reload Stylesheet + Genindlæs stilark + + + + Widget Tree + Widgettræ + + + Debug information Fejlretningsinformation @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Sæt op - + Install Installation @@ -123,7 +133,7 @@ Job mislykkedes (%1) - + Programmed job failure was explicitly requested. Mislykket programmeret job blev udtrykkeligt anmodet. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Færdig @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Kør kommando %1 %2 + Run command '%1' in target system. + Kør kommandoen '%1' i målsystemet. - + + Run command '%1'. + Kør kommandoen '%1'. + + + Running command %1 %2 Kører kommando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Kører %1-handling. - + Bad working directory path Ugyldig arbejdsmappesti - + Working directory %1 for python job %2 is not readable. Arbejdsmappen %1 til python-jobbet %2 er ikke læsbar. - + Bad main script file Ugyldig primær skriptfil - + Main script file %1 for python job %2 is not readable. Primær skriptfil %1 til python-jobbet %2 er ikke læsbar. - + Boost.Python error in job "%1". Boost.Python-fejl i job "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Venter på %n modul.Venter på %n moduler. - + (%n second(s)) (%n sekund)(%n sekunder) - + System-requirements checking is complete. Tjek af systemkrav er fuldført. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Tilbage - - + + &Next &Næste - - + + &Cancel &Annullér - - + 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. - + Setup Failed Opsætningen mislykkedes - + + Would you like to paste the install log to the web? + Vil du indsætte installationsloggen på webbet? + + + + 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 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> - + &Set up now &Sæt op nu - + &Set up &Sæt op - + &Install &Installér - + Setup is complete. Close the setup program. Opsætningen er fuldført. Luk opsætningsprogrammet. - + 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? Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - + + &Yes &Ja - + + &No &Nej - + &Close &Luk - + Continue with setup? Fortsæt med opsætningen? - + 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> - + &Install now &Installér nu - + Go &back Gå &tilbage - + &Done &Færdig - + The installation is complete. Close the installer. Installationen er fuldført. Luk installationsprogrammet. - + Error Fejl - + Installation Failed Installation mislykkedes @@ -372,40 +403,50 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CalamaresPython::Helper - + Unknown exception type Ukendt undtagelsestype - + unparseable Python error Python-fejl som ikke kan fortolkes - + unparseable Python traceback Python-traceback som ikke kan fortolkes - + Unfetchable Python error. Python-fejl som ikke kan hentes. + + CalamaresUtils + + + Install log posted to: +%1 + Installationslog indsendt til: +%1 + + CalamaresWindow - + %1 Setup Program %1-opsætningsprogram - + %1 Installer %1-installationsprogram - + Show debug information Vis fejlretningsinformation @@ -436,7 +477,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.<strong>Manuel partitionering</strong><br/>Du kan selv oprette og ændre størrelse på partitioner. - + Boot loader location: Placering af bootloader: @@ -448,8 +489,8 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - - + + Current: Nuværende: @@ -464,96 +505,96 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.<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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CommandList - - + + Could not run command. Kunne ikke køre kommando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Kommandoen kører i værtsmiljøet og har brug for at kende rodstien, men der er ikke defineret nogen rootMountPoint. - + The command needs to know the user's name, but no username is defined. Kommandoen har brug for at kende brugerens navn, men der er ikke defineret noget brugernavn. @@ -621,7 +662,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ContextualProcessJob - + Contextual Processes Job Kontekstuelt procesjob @@ -801,17 +842,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.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. @@ -958,7 +999,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. DummyCppJob - + Dummy C++ Job Dummy C++-job @@ -1117,7 +1158,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. <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>Færdig.</h1><br/>%1 er blevet installeret på din computer.<br/>Du kan nu genstarte for at komme ind i dit nye system eller fortsætte med at bruge %2 live-miljøet. + <h1>Færdig.</h1><br/>%1 er blevet installeret på din computer.<br/>Du kan nu genstarte for at komme ind i dit nye system eller fortsætte med at bruge %2 livemiljøet. @@ -1125,12 +1166,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.<html><head/><body><p>Når boksen er tilvalgt, vil dit system genstarte med det samme når du klikker på <span style="font-style:italic;">Færdig</span> eller lukker installationsprogrammet.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Opsætningen mislykkede</h1><br/>%1 er ikke blevet sat op på din computer.<br/>Fejlmeddelelsen var: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation mislykkede</h1><br/>%1 er ikke blevet installeret på din computer.<br/>Fejlmeddelelsen var: %2. @@ -1189,66 +1230,74 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. GeneralRequirements - + has at least %1 GiB available drive space har mindst %1 GiB ledig plads på drevet - + There is not enough drive space. At least %1 GiB is required. Der er ikke nok ledig plads på drevet. Mindst %1 GiB er påkrævet. - + has at least %1 GiB working memory har mindst %1 GiB hukkommelse - + The system does not have enough working memory. At least %1 GiB is required. Systemet har ikke nok arbejdshukommelse. Mindst %1 GiB er påkrævet. - + is plugged in to a power source er tilsluttet en strømkilde - + The system is not plugged in to a power source. Systemet er ikke tilsluttet en strømkilde. - + is connected to the Internet er forbundet til internettet - + The system is not connected to the Internet. Systemet er ikke forbundet til internettet. - + The setup program is not running with administrator rights. Opsætningsprogrammet kører ikke med administratorrettigheder. - + The installer is not running with administrator rights. Installationsprogrammet kører ikke med administratorrettigheder. - + The screen is too small to display the setup program. Skærmen er for lille til at vise opsætningsprogrammet. - + The screen is too small to display the installer. Skærmen er for lille til at vise installationsprogrammet. + + HostInfoJob + + + Collecting information about your machine. + Indsamler information om din maskine. + + IDJob @@ -1275,6 +1324,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Kunne ikke skrive til filen <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Opretter initramfs med mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Opretter initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. InteractiveTerminalViewStep - + Script Skript @@ -1325,22 +1390,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LCLocaleDialog - + System locale setting Systemets lokalitetsindstilling - + 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>. Systemets lokalitetsindstilling har indflydelse på sproget og tegnsættet for nogle kommandolinje-brugerelementer.<br/>Den nuværende indstilling er <strong>%1</strong>. - + &Cancel &Annullér - + &OK &OK @@ -1353,27 +1418,27 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Formular - + I accept the terms and conditions above. Jeg accepterer de ovenstående vilkår og betingelser. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensaftale</h1>Opsætningsproceduren installerer proprietær software der er underlagt licenseringsvilkår. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår, kan opsætningsproceduren ikke fortsætte. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensaftale</h1>Opsætningsproceduren kan installere proprietær software der er underlagt licenseringsvilkår, for at kunne tilbyde yderligere funktionaliteter og forbedre brugeroplevelsen. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår vil der ikke blive installeret proprietær software, og open source-alternativer vil blive brugt i stedet. @@ -1381,7 +1446,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LicenseViewStep - + License Licens @@ -1389,64 +1454,64 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>af %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 grafikdriver</strong><br/><font color="Grey">af %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 browser-plugin</strong><br/><font color="Grey">af %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">af %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakke</strong><br/><font color="Grey">af %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">af %2</font> - + Shows the complete license text Viser den fulde licenstekst - + Hide license text Skjul licenstekst - + Show license agreement Vis licensaftale - + Hide license agreement Skjul licensaftale - + Opens the license agreement in a browser window. Åbner licensaftalen i et browservindue. - + <a href="%1">View license agreement</a> <a href="%1">Vis licensaftale</a> @@ -1454,33 +1519,33 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocalePage - + 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. - + Region: Region: - + Zone: Zone: - - + + &Change... &Skift ... - + Set timezone to %1/%2.<br/> Sæt tidszone til %1/%2.<br/> @@ -1488,38 +1553,92 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocaleViewStep - - Loading location data... - Indlæser placeringsdata ... - - - + Location Placering + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Konfigurerer LUKS-nøglefil. + + + + + No partitions are defined. + Der er ikke defineret nogen partitioner. + + + + + + Encrypted rootfs setup error + Fejl ved opsætning af krypteret rootfs + + + + Root partition %1 is LUKS but no passphrase has been set. + Rodpartitionen %1 er LUKS men der er ikke indstillet nogen adgangskode. + + + + Could not create LUKS key file for root partition %1. + Kunne ikke oprette LUKS-nøglefil for rodpartitionen %1. + + + + Could configure LUKS key file on partition %1. + Kunne ikke konfigurere LUKS-nøglefil på partitionen %1. + + + + MachineIdJob + + + Generate machine-id. + Generér maskin-id. + + + + Configuration Error + Fejl ved konfiguration + + + + No root mount point is set for MachineId. + Der er ikke angivet noget rodmonteringspunkt for MachineId. + + NetInstallPage - + Name Navn - + Description Beskrivelse - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netværksinstallation. (Deaktiveret: Kunne ikke hente pakkelister, tjek din netværksforbindelse) - + Network Installation. (Disabled: Received invalid groups data) Netværksinstallation. (Deaktiveret: Modtog ugyldige gruppers data) + + + Network Installation. (Disabled: Incorrect configuration) + Netværksinstallation. (deaktiveret: forkert konfiguration) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. OEMViewStep - + OEM Configuration OEM-konfiguration - + Set the OEM Batch Identifier to <code>%1</code>. Indstil OEM-batchidentifikatoren til <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.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 + + + + PackageChooserPage + + + Form + Formular + + + + Product Name + Produktnavn + + + + TextLabel + Tekstetiket + + + + Long Product Description + Lang produktbeskrivelse + + + + Package Selection + Valg af pakke + + + + Please pick a product from the list. The selected product will be installed. + Vælg venligst et produkt fra listen. Det valgte produkt installeres. + + + + PackageChooserViewStep + + + Packages + Pakker + Page_Keyboard @@ -1834,47 +1999,86 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Hvad er dit navn? - + What name do you want to use to log in? Hvilket navn skal bruges til at logge ind? - + Choose a password to keep your account safe. Vælg en adgangskode for at beskytte din konto. - + + <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>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl. En god adgangskode indeholder en blanding af bogstaver, tal og specialtegn, og bør være mindst 8 tegn langt og bør skiftes jævnligt.</small> - + What is the name of this computer? Hvad er navnet på computeren? - + + Your Full Name + Dit fulde navn + + + + login + login + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Navnet bruges, hvis du gør computeren synlig for andre på et netværk.</small> - + + Computer Name + Computernavn + + + + + Password + Adgangskode + + + + + Repeat Password + Gentag adgangskode + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Når boksen er tilvalgt, så foretages der tjek af adgangskodens styrke og du vil ikke være i stand til at bruge en svag adgangskode. + + + + Require strong passwords. + Kræv stærke adgangskoder. + + + Log in automatically without asking for the password. Log ind automatisk uden at spørge efter adgangskoden. - + Use the same password for the administrator account. Brug den samme adgangskode til administratorkontoen. - + Choose a password for the administrator account. Vælg en adgangskode til administratorkontoen. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl.</small> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</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. - + EFI system partition flag not set EFI-systempartitionsflag ikke sat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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 partitons to install on. Der er ikke installeret nogen partitioner på den. @@ -2168,12 +2372,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. 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. - Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er sat op. Ved klik på et udseende og fremtoning giver det dig en live forhåndsvisning af det. + Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er sat op. Ved klik på et udseende og fremtoning giver det dig en liveforhåndsvisning af det. 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. - Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. Ved klik på et udseende og fremtoning giver det dig en live forhåndsvisning af det. + Vælg venligst et udseende og fremtoning til KDE Plasma-skrivebordet. Du kan også springe trinnet over og konfigurere udseendet og fremtoningen når systemet er installeret. Ved klik på et udseende og fremtoning giver det dig en liveforhåndsvisning af det. @@ -2205,14 +2409,14 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. ProcessResult - + There was no output from the command. Der var ikke nogen output fra kommandoen. - + Output: @@ -2221,52 +2425,52 @@ Output: - + External command crashed. Ekstern kommando holdt op med at virke. - + Command <i>%1</i> crashed. Kommandoen <i>%1</i> holdte op med at virke. - + External command failed to start. Ekstern kommando kunne ikke starte. - + Command <i>%1</i> failed to start. Kommandoen <i>%1</i> kunne ikke starte. - + Internal error when starting command. Intern fejl ved start af kommando. - + Bad parameters for process job call. Ugyldige parametre til kald af procesjob. - + External command failed to finish. Ekstern kommando blev ikke færdig. - + Command <i>%1</i> failed to finish in %2 seconds. Kommandoen <i>%1</i> blev ikke færdig på %2 sekunder. - + External command finished with errors. Ekstern kommando blev færdig med fejl. - + Command <i>%1</i> finished with exit code %2. Kommandoen <i>%1</i> blev færdig med afslutningskoden %2. @@ -2315,16 +2519,50 @@ Output: (intet monteringspunkt) - + Requirements checking for module <i>%1</i> is complete. Tjek at krav for modulet <i>%1</i> er fuldført. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Intet produkt + + + + No description provided. + Der er ikke angivet nogen beskrivelse. + + + + + + + + File not found + Filen blev ikke fundet + + + + Path <pre>%1</pre> must be an absolute path. + Stien <pre>%1</pre> skal være en absolut sti. + + + + Could not create new random file <pre>%1</pre>. + Kunne ikke oprette den tilfældige fil <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Kunne ikke læse den tilfældige fil <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Output: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Computeren imødekommer ikke minimumsystemkravene for at opsætte %1.<br/>Opsætningen kan ikke fortsætte. <a href="#details">Detaljer ...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Computeren imødekommer ikke minimumsystemkravene for at installere %1.<br/>Installationen kan ikke fortsætte. <a href="#details">Detaljer ...</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. Computeren imødekommer ikke nogle af de anbefalede systemkrav for at opsætte %1.<br/>Opsætningen kan fortsætte, men nogle funktionaliteter kan være deaktiveret. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Computeren imødekommer ikke nogle af de anbefalede systemkrav for at installere %1.<br/>Installationen kan fortsætte, men nogle funktionaliteter kan være deaktiveret. - + This program will ask you some questions and set up %2 on your computer. Programmet vil stille dig nogle spørgsmål og opsætte %2 på din computer. - + For best results, please ensure that this computer: For at få det bedste resultat sørg venligst for at computeren: - + System requirements Systemkrav @@ -2595,29 +2833,29 @@ Output: SetHostNameJob - + Set hostname %1 Sæt værtsnavn %1 - + Set hostname <strong>%1</strong>. Sæt værtsnavn <strong>%1</strong>. - + Setting hostname %1. Sætter værtsnavn %1. - - + + Internal Error Intern fejl - - + + Cannot write hostname to target system Kan ikke skrive værtsnavn til destinationssystem @@ -2758,22 +2996,22 @@ Output: rodMonteringsPunkt er %1 - + Cannot disable root account. Kan ikke deaktivere root-konto. - + passwd terminated with error code %1. passwd stoppet med fejlkode %1. - + Cannot set password for user %1. Kan ikke sætte adgangskode for bruger %1. - + usermod terminated with error code %1. usermod stoppet med fejlkode %1. @@ -2796,22 +3034,22 @@ Output: Ugyldig sti: %1 - + Cannot set timezone. Kan ikke sætte tidszone. - + Link creation failed, target: %1; link name: %2 Oprettelse af link mislykkedes, destination: %1; linknavn: %2 - + Cannot set timezone, Kan ikke sætte tidszone, - + Cannot open /etc/timezone for writing Kan ikke åbne /etc/timezone til skrivning @@ -2857,22 +3095,22 @@ Output: TrackingInstallJob - + Installation feedback Installationsfeedback - + Sending installation feedback. Sender installationsfeedback. - + Internal error in install-tracking. Intern fejl i installationssporing. - + HTTP request timed out. HTTP-anmodning fik timeout. @@ -2880,28 +3118,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Output: Installationssporing hjælper %1 til at se hvor mange brugere de har, hvilket hardware de installere %1 på og (med de sidste to valgmuligheder nedenfor), hente information om fortrukne programmer løbende. Klik venligst på hjælp-ikonet ved siden af hvert område, for at se hvad der vil blive sendt. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Vælges dette sender du information om din installation og hardware. Informationen vil <b>første blive sendt</b> efter installationen er færdig. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Vælges dette sender du <b>periodisk</b> information om din installation, hardware og programmer, til %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Vælges dette sender du <b>regelmæssigt</b> information om din installation, hardware, programmer og anvendelsesmønstre, til %1. @@ -2952,7 +3190,7 @@ Output: TrackingViewStep - + Feedback Feedback @@ -2960,43 +3198,47 @@ Output: 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Dit brugernavn indeholder ugyldige tegn. Kun små bogstaver og tal er tilladt. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Det er kun tilladt at bruge bogstaver, 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Dit værtsnavn indeholder ugyldige tegn. Kun bogstaver, tal og tankestreger er tilladt. - - - - + Your passwords do not match! Dine adgangskoder er ikke ens! @@ -3004,11 +3246,24 @@ Output: UsersViewStep - + Users Brugere + + VariantModel + + + Key + Nøgle + + + + Value + Værdi + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Output: Formular - + + + Select application and system language + Vælg program- og systemsprog + + + + Open donations website + Åbn websted for donationer + + + + &Donate + &Donér + + + + Open help and support website + Åbn websted for hjælp og support + + + + Open issues and bug-tracking website + Åbn websted for issues og bug-tracking + + + + Open release notes website + Åbn websted med udgivelsesnoter + + + &Release notes &Udgivelsesnoter - + &Known issues &Kendte problemer - - - Select language - Vælg sprog - - - + &Support &Support @@ -3096,42 +3376,42 @@ Output: &Om - + <h1>Welcome to the %1 installer.</h1> <h1>Velkommen til %1-installationsprogrammet.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Velkommen til Calamares-installationsprogrammet for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Velkommen til Calamares-opsætningsprogrammet til %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Velkommen til %1-opsætningen.</h1> - + About %1 setup Om %1-opsætningen - + About %1 installer Om %1-installationsprogrammet - + <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-2019 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/>til %3</strong><br/><br/>Ophavsret 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ophavsret 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tak til <a href="https://calamares.io/team/">Calamares-teamet</a> og <a href="https://www.transifex.com/calamares/calamares/">Calamares oversætter-teamet</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support @@ -3139,7 +3419,7 @@ Output: WelcomeViewStep - + Welcome Velkommen diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 919a4d03e..8b1bdce5c 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record von %1 - + Boot Partition Boot Partition - + System Partition Systempartition - + Do not install a boot loader Installiere keinen Bootloader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Leere Seite @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formular - + GlobalStorage Globale Einstellungen - + JobQueue Job-Queue - + Modules Module - + Type: Typ: - - + + none keiner - + Interface: Schnittstelle: - + Tools Werkzeuge - + + Reload Stylesheet + Stylesheet neu laden + + + + Widget Tree + Widget-Baum + + + Debug information Debug-Information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Einrichten - + Install Installieren @@ -123,7 +133,7 @@ Auftrag fehlgeschlagen (%1) - + Programmed job failure was explicitly requested. Ein programmierter Auftragsfehler wurde explizit gefordert. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Fertig @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Führe Befehl %1%2 aus + Run command '%1' in target system. + Führen Sie den Befehl '%1' im Zielsystem aus. - + + Run command '%1'. + Führen Sie Befehl '%1' aus. + + + Running command %1 %2 Befehl %1 %2 wird ausgeführt @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Operation %1 wird ausgeführt. - + Bad working directory path Fehlerhafter Arbeitsverzeichnis-Pfad - + Working directory %1 for python job %2 is not readable. Arbeitsverzeichnis %1 für Python-Job %2 ist nicht lesbar. - + Bad main script file Fehlerhaftes Hauptskript - + Main script file %1 for python job %2 is not readable. Hauptskript-Datei %1 für Python-Job %2 ist nicht lesbar. - + Boost.Python error in job "%1". Boost.Python-Fehler in Job "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Warten auf %n Modul.Warten auf %n Modul(e). - + (%n second(s)) (%n Sekunde)(%n Sekunde(n)) - + System-requirements checking is complete. Die Überprüfung der Systemvoraussetzungen ist abgeschlossen. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Zurück - - + + &Next &Weiter - - + + &Cancel &Abbrechen - - + Cancel setup without changing the system. Brechen Sie die Installation ab, ohne das System zu verändern. - - + Cancel installation without changing the system. Installation abbrechen, ohne das System zu verändern. - + Setup Failed Setup fehlgeschlagen - + + Would you like to paste the install log to the web? + Möchten Sie das Installationsprotokoll in das Internet einfügen? + + + + Install Log Paste URL + Einfüge-URL des Installationsprotokolls + + + + The upload was unsuccessful. No web-paste was done. + Der Upload ist fehlgeschlagen. Es wurde nichts ins Internet eingefügt. + + + 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 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> - + &Set up now &Jetzt einrichten - + &Set up &Einrichten - + &Install &Installieren - + Setup is complete. Close the setup program. Setup ist abgeschlossen. Schließe das Installationsprogramm. - + 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 wirklich die aktuelle Installation abbrechen? Dies wird das Installationsprogramm beenden 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? Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - + + &Yes &Ja - + + &No &Nein - + &Close &Schließen - + Continue with setup? Setup fortsetzen? - + 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> - + &Install now Jetzt &installieren - + Go &back Gehe &zurück - + &Done &Erledigt - + The installation is complete. Close the installer. Die Installation ist abgeschlossen. Schließe das Installationsprogramm. - + Error Fehler - + Installation Failed Installation gescheitert @@ -372,40 +403,50 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CalamaresPython::Helper - + Unknown exception type Unbekannter Ausnahmefehler - + unparseable Python error Nicht analysierbarer Python-Fehler - + unparseable Python traceback Nicht analysierbarer Python-Traceback - + Unfetchable Python error. Nicht zuzuordnender Python-Fehler + + CalamaresUtils + + + Install log posted to: +%1 + Installationsprotokoll geposted: +%1 + + CalamaresWindow - + %1 Setup Program %1 Installationsprogramm - + %1 Installer %1 Installationsprogramm - + Show debug information Debug-Information anzeigen @@ -436,7 +477,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <strong>Manuelle Partitionierung</strong><br/>Sie können Partitionen eigenhändig erstellen oder in der Grösse verändern. - + Boot loader location: Installationsziel des Bootloaders: @@ -448,8 +489,8 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - - + + Current: Aktuell: @@ -464,96 +505,96 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <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. - + <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>. - + 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. - + No Swap Kein Swap - + Reuse Swap Swap wiederverwenden - + Swap (no Hibernate) Swap (ohne Ruhezustand) - + Swap (with Hibernate) Swap (mit Ruhezustand) - + Swap to file Swap in Datei - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CommandList - - + + Could not run command. Befehl konnte nicht ausgeführt werden. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Dieser Befehl wird im installierten System ausgeführt und muss daher den Root-Pfad kennen, jedoch wurde kein rootMountPoint definiert. - + The command needs to know the user's name, but no username is defined. Dieser Befehl benötigt den Benutzernamen, jedoch ist kein Benutzername definiert. @@ -621,7 +662,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ContextualProcessJob - + Contextual Processes Job Job für kontextuale Prozesse @@ -801,17 +842,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. 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. @@ -958,7 +999,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1125,12 +1166,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. <html><head/><body><p>Wenn diese Option aktiviert ist, genügt zum Neustart des Systems ein Klick auf <span style="font-style:italic;">Fertig</span> oder das Schließen des Installationsprogramms.</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 fehlgeschlagen</h1><br/>%1 wurde nicht auf Ihrem Computer eingerichtet.<br/>Die Fehlermeldung war: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation fehlgeschlagen</h1><br/>%1 wurde nicht auf deinem Computer installiert.<br/>Die Fehlermeldung lautet: %2. @@ -1145,7 +1186,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Setup Complete - Installation komplett + Installation abgeschlossen @@ -1189,66 +1230,74 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. GeneralRequirements - + has at least %1 GiB available drive space mindestens %1 GiB freien Festplattenplatz hat - + There is not enough drive space. At least %1 GiB is required. Der Speicherplatz auf der Festplatte ist unzureichend. Es wird mindestens %1 GiB benötigt. - + has at least %1 GiB working memory mindestens %1 GiB Arbeitsspeicher hat - + The system does not have enough working memory. At least %1 GiB is required. Das System hat nicht genug Arbeitsspeicher. Es wird mindestens %1GiB benötigt. - + is plugged in to a power source ist an eine Stromquelle angeschlossen - + The system is not plugged in to a power source. Das System ist an keine Stromquelle angeschlossen. - + is connected to the Internet ist mit dem Internet verbunden - + The system is not connected to the Internet. Das System ist nicht mit dem Internet verbunden. - + The setup program is not running with administrator rights. Das Installationsprogramm wird nicht mit Administratorrechten ausgeführt. - + The installer is not running with administrator rights. Das Installationsprogramm wird nicht mit Administratorrechten ausgeführt. - + The screen is too small to display the setup program. Der Bildschirm ist zu klein, um das Installationsprogramm anzuzeigen. - + The screen is too small to display the installer. Der Bildschirm ist zu klein, um das Installationsprogramm anzuzeigen. + + HostInfoJob + + + Collecting information about your machine. + Sammeln von Informationen über Ihre Maschine. + + IDJob @@ -1275,6 +1324,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Konnte nicht in die Datei <code>%1</code> schreiben. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Erstelle initramfs mit mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Erstelle initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. InteractiveTerminalViewStep - + Script Skript @@ -1325,22 +1390,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LCLocaleDialog - + System locale setting Regions- und Spracheinstellungen - + 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>. Die Lokalisierung des Systems beeinflusst die Sprache und den Zeichensatz einiger Elemente der Kommandozeile.<br/>Die derzeitige Einstellung ist <strong>%1</strong>. - + &Cancel &Abbrechen - + &OK &OK @@ -1353,27 +1418,27 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Formular - + I accept the terms and conditions above. Ich akzeptiere die obigen Allgemeinen Geschäftsbedingungen. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Lizenzvereinbarung</h1>Dieses Installationsprogramm wird proprietäre Software installieren, welche Lizenzbedingungen unterliegt. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Bitte überprüfen Sie die obigen Lizenzvereinbarungen für Endbenutzer (EULAs).<br/>Wenn Sie mit diesen Bedingungen nicht einverstanden sind, kann das Installationsprogramm nicht fortgesetzt werden. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1> Lizenzvereinbarung </ h1> Dieses Installationsprogramm kann proprietäre Software installieren, welche Lizenzbedingungen unterliegt, um zusätzliche Funktionen bereitzustellen und die Benutzerfreundlichkeit zu verbessern. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Bitte überprüfen Sie die obigen Lizenzvereinbarungen für Endbenutzer (EULAs).<br/>Wenn Sie mit diesen Bedingungen nicht einverstanden sind, wird keine proprietäre Software installiert werden. Stattdessen werden quelloffene Alternativen verwendet. @@ -1381,7 +1446,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LicenseViewStep - + License Lizenz @@ -1389,64 +1454,64 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 Treiber</strong><br/>by %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 Grafiktreiber</strong><br/><font color="Grey">von %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 Browser-Plugin</strong><br/><font color="Grey">von %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 Codec</strong><br/><font color="Grey">von %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 Paket</strong><br/><font color="Grey">von %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">von %2</font> - + Shows the complete license text - Zeigt den vollständigen Lizenztext an. + Zeigt den vollständigen Lizenztext an - + Hide license text Lizenztext ausblenden - + Show license agreement Lizenzvereinbarung anzeigen - + Hide license agreement Lizenzvereinbarung ausblenden - + Opens the license agreement in a browser window. Öffnet die Lizenzvereinbarung in einem Browserfenster. - + <a href="%1">View license agreement</a> <a href="%1">Lizenzvereinbarung anzeigen</a> @@ -1454,33 +1519,33 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocalePage - + 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. - + Region: Region: - + Zone: Zeitzone: - - + + &Change... &Ändern... - + Set timezone to %1/%2.<br/> Setze Zeitzone auf %1/%2.<br/> @@ -1488,38 +1553,92 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocaleViewStep - - Loading location data... - Lade Standortdaten... - - - + Location Standort + + LuksBootKeyFileJob + + + Configuring LUKS key file. + LUKS-Schlüsseldatei konfigurieren. + + + + + No partitions are defined. + Keine Partitionen definiert. + + + + + + Encrypted rootfs setup error + Verschlüsselter Rootfs-Setup-Fehler + + + + Root partition %1 is LUKS but no passphrase has been set. + Root-Partition %1 ist mit LUKS verschlüsselt, aber es wurde kein Passwort gesetzt. + + + + Could not create LUKS key file for root partition %1. + Konnte die LUKS-Schlüsseldatei für die Root-Partition %1 nicht erstellen. + + + + Could configure LUKS key file on partition %1. + Konnte die LUKS-Schlüsseldatei auf der Root-Partition %1 konfigurieren. + + + + MachineIdJob + + + Generate machine-id. + Generiere Computer-ID + + + + Configuration Error + Konfigurationsfehler + + + + No root mount point is set for MachineId. + Für MachineId ist kein Root-Mount-Punkt gesetzt. + + NetInstallPage - + Name Name - + Description Beschreibung - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netzwerk-Installation. (Deaktiviert: Paketlisten nicht erreichbar, prüfe deine Netzwerk-Verbindung) - + Network Installation. (Disabled: Received invalid groups data) Netwerk-Installation. (Deaktiviert: Ungültige Gruppen-Daten eingegeben) + + + Network Installation. (Disabled: Incorrect configuration) + Netwerk-Installation. (Deaktiviert: Ungültige Konfiguration) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. OEMViewStep - + OEM Configuration OEM-Konfiguration - + Set the OEM Batch Identifier to <code>%1</code>. Stellen Sie die OEM-Batch-Identifikation auf <code>%1</code>. @@ -1563,117 +1682,117 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. 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 @@ -1683,125 +1802,171 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. 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 ist leer + + + + PackageChooserPage + + + Form + Formular + + + + Product Name + Produktname + + + + TextLabel + TextLabel + + + + Long Product Description + Lange Produktbeschreibung + + + + Package Selection + Paketauswahl + + + + Please pick a product from the list. The selected product will be installed. + Bitte wählen Sie ein Produkt aus der Liste aus. Das ausgewählte Produkt wird installiert. + + + + PackageChooserViewStep + + + Packages + Pakete + Page_Keyboard @@ -1834,47 +1999,86 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Wie ist Ihr Vor- und Nachname? - + What name do you want to use to log in? Welchen Namen möchten Sie zum Anmelden benutzen? - + Choose a password to keep your account safe. Wählen Sie ein Passwort, um Ihr Konto zu sichern. - + + <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>Bitte geben Sie Ihr Passwort zweimal ein, um Tippfehler auszuschliessen. Ein gutes Passwort enthält Buchstaben, Zahlen und Sonderzeichen. Ferner sollte es mindestens acht Zeichen umfassen und regelmässig geändert werden.</small> - + What is the name of this computer? Wie ist der Name dieses Computers? - + + Your Full Name + Ihr vollständiger Name + + + + login + Anmeldung + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Dieser Name wird benutzt, wenn Sie den Computer im Netzwerk sichtbar machen.</small> - + + Computer Name + Computername + + + + + Password + Passwort + + + + + Repeat Password + Passwort wiederholen + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Wenn dieses Kontrollkästchen aktiviert ist, wird eine Überprüfung der Kennwortstärke durchgeführt und Sie können kein schwaches Kennwort verwenden. + + + + Require strong passwords. + Erfordert sichere Passwörter. + + + Log in automatically without asking for the password. Automatisches Einloggen ohne Passwortabfrage. - + Use the same password for the administrator account. Nutze das gleiche Passwort auch für das Administratorkonto. - + Choose a password for the administrator account. Wählen Sie ein Passwort für das Administrationskonto. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Geben Sie das Passwort zweimal ein, um es auf Tippfehler zu prüfen.</small> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</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. - + EFI system partition flag not set Die Markierung als EFI-Systempartition wurde nicht gesetzt - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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> wurd eingerichtet, jedoch wurde dort keine <strong>esp</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. - + 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. hat mindestens ein Festplattengerät zur Verfügung. - + There are no partitons to install on. Es gibt keine Partitonen, auf denen man installieren könnte. @@ -2205,14 +2409,14 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ProcessResult - + There was no output from the command. Dieser Befehl hat keine Ausgabe erzeugt. - + Output: @@ -2221,52 +2425,52 @@ Ausgabe: - + External command crashed. Externes Programm abgestürzt. - + Command <i>%1</i> crashed. Programm <i>%1</i> abgestürzt. - + External command failed to start. Externes Programm konnte nicht gestartet werden. - + Command <i>%1</i> failed to start. Das Programm <i>%1</i> konnte nicht gestartet werden. - + Internal error when starting command. Interner Fehler beim Starten des Programms. - + Bad parameters for process job call. Ungültige Parameter für Prozessaufruf. - + External command failed to finish. Externes Programm konnte nicht abgeschlossen werden. - + Command <i>%1</i> failed to finish in %2 seconds. Programm <i>%1</i> konnte nicht innerhalb von %2 Sekunden abgeschlossen werden. - + External command finished with errors. Externes Programm mit Fehlern beendet. - + Command <i>%1</i> finished with exit code %2. Befehl <i>%1</i> beendet mit Exit-Code %2. @@ -2315,16 +2519,50 @@ Ausgabe: (kein Einhängepunkt) - + Requirements checking for module <i>%1</i> is complete. Die Anforderungsprüfung für das Modul <i>%1</i> ist abgeschlossen. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Kein Produkt + + + + No description provided. + Keine Beschreibung vorhanden. + + + + + + + + File not found + Datei nicht gefunden + + + + Path <pre>%1</pre> must be an absolute path. + Pfad <pre>%1</pre> muss ein absoluter Pfad sein. + + + + Could not create new random file <pre>%1</pre>. + Es konnte keine neue Zufallsdatei <pre>%1</pre> erstellt werden. + + + + Could not read random file <pre>%1</pre>. + Konnte keine zufällige Datei <pre>%1</pre> lesen. + RemoveVolumeGroupJob @@ -2447,7 +2685,7 @@ Ausgabe: Calamares cannot start KPMCore for the file-system resize job. - Calamares konnte KPMCore nicht zur Änderung der Dateisystemgröße starten. + Calamares kann KPMCore zur Änderung der Dateisystemgröße nicht starten. @@ -2544,37 +2782,37 @@ Ausgabe: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Dieser Computer erfüllt nicht die Mindestvoraussetzungen für die Installation von %1.<br/>Die Installation kann nicht fortgesetzt werden. <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> Dieser Computer erfüllt nicht die Mindestvoraussetzungen für die Installation von %1.<br/>Die Installation kann nicht fortgesetzt werden. <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. Dieser Computer erfüllt nicht alle Voraussetzungen für die Installation von %1.<br/>Die Installation kann fortgesetzt werden, aber es werden eventuell nicht alle Funktionen verfügbar sein. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Dieser Computer erfüllt nicht alle Voraussetzungen für die Installation von %1.<br/>Die Installation wird fortgesetzt, aber es werden eventuell nicht alle Funktionen verfügbar sein. - + This program will ask you some questions and set up %2 on your computer. Dieses Programm wird Ihnen einige Fragen stellen, um %2 auf Ihrem Computer zu installieren. - + For best results, please ensure that this computer: Für das beste Ergebnis stellen Sie bitte sicher, dass dieser Computer: - + System requirements Systemanforderungen @@ -2595,29 +2833,29 @@ Ausgabe: SetHostNameJob - + Set hostname %1 Setze Computername auf %1 - + Set hostname <strong>%1</strong>. Setze Computernamen <strong>%1</strong>. - + Setting hostname %1. Setze Computernamen %1. - - + + Internal Error Interner Fehler - - + + Cannot write hostname to target system Kann den Computernamen nicht auf das Zielsystem schreiben @@ -2758,22 +2996,22 @@ Ausgabe: root-Einhängepunkt ist %1 - + Cannot disable root account. Das Root-Konto kann nicht deaktiviert werden. - + passwd terminated with error code %1. Passwd beendet mit Fehlercode %1. - + Cannot set password for user %1. Passwort für Benutzer %1 kann nicht gesetzt werden. - + usermod terminated with error code %1. usermod wurde mit Fehlercode %1 beendet. @@ -2796,22 +3034,22 @@ Ausgabe: Ungültiger Pfad: %1 - + Cannot set timezone. Zeitzone kann nicht gesetzt werden. - + Link creation failed, target: %1; link name: %2 Erstellen der Verknüpfung fehlgeschlagen, Ziel: %1; Verknüpfung: %2 - + Cannot set timezone, Kann die Zeitzone nicht setzen, - + Cannot open /etc/timezone for writing Kein Schreibzugriff auf /etc/timezone @@ -2857,22 +3095,22 @@ Ausgabe: TrackingInstallJob - + Installation feedback Rückmeldungen zur Installation - + Sending installation feedback. Senden der Rückmeldungen zur Installation. - + Internal error in install-tracking. Interner Fehler bei der Überwachung der Installation. - + HTTP request timed out. Zeitüberschreitung bei HTTP-Anfrage @@ -2880,28 +3118,28 @@ Ausgabe: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Ausgabe: Rückinformationen über die Installation helfen %1 festzustellen, wieviele Menschen es benutzen und auf welcher Hardware sie %1 installieren. Mit den beiden letzten Optionen gestatten Sie die Erhebung kontinuierlicher Informationen über Ihre bevorzugte Software. Um zu prüfen, welche Informationen gesendet werden, klicken Sie bitte auf das Hilfesymbol neben dem jeweiligen Abschnitt. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Wenn Sie diese Option auswählen, senden Sie Informationen zu Ihrer Installation und Hardware. Diese Informationen werden <b>nur einmalig</b> nach Abschluss der Installation gesendet. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware und Anwendungen an %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware, Anwendungen und Nutzungsmuster an %1. @@ -2952,7 +3190,7 @@ Ausgabe: TrackingViewStep - + Feedback Rückmeldung @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Ihr Nutzername enthält ungültige Zeichen. Nur Kleinbuchstaben und Ziffern sind 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Es sind nur Buchstaben, Zahlen, Unter- und Bindestriche erlaubt. + + + Your hostname is too short. Ihr Hostname ist zu kurz. - + Your hostname is too long. Ihr Hostname ist zu lang. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Ihr Hostname enthält ungültige Zeichen. Nur Buchstaben, Ziffern und Striche sind erlaubt. - - - - + Your passwords do not match! Ihre Passwörter stimmen nicht überein! @@ -3004,11 +3246,24 @@ Ausgabe: UsersViewStep - + Users Benutzer + + VariantModel + + + Key + Schlüssel + + + + Value + Wert + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Ausgabe: Form - + + + Select application and system language + Anwendung und Systemsprache auswählen + + + + Open donations website + Öffene Spenden-Website + + + + &Donate + Spen&den + + + + Open help and support website + Öffnen Sie die Webseite für Hilfe und Support + + + + Open issues and bug-tracking website + Offene Probleme und Bug-Tracking-Webseite + + + + Open release notes website + Öffnen Sie die Webseite mit den Versionshinweisen + + + &Release notes &Veröffentlichungshinweise - + &Known issues &Bekannte Probleme - - - Select language - Sprache auswählen - - - + &Support &Unterstützung @@ -3096,42 +3376,42 @@ Ausgabe: &Über - + <h1>Welcome to the %1 installer.</h1> <h1>Willkommen im %1 Installationsprogramm.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Willkommen beim Calamares-Installationsprogramm für %1. - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Willkommen beim Calamares Installationsprogramm für %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Willkommen zur Installation von %1.</h1> - + About %1 setup Über das Installationsprogramm %1 - + About %1 installer Über das %1 Installationsprogramm - + <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-2019 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/>für %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dank an <a href="https://calamares.io/team/">das Calamares-Team</a> und das <a href="https://www.transifex.com/calamares/calamares/">Calamares Übersetzerteam</a>.<br/><br/>Die <a href="https://calamares.io/">Calamares</a>-Entwicklung wird unterstützt von<br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Unterstützung für %1 @@ -3139,7 +3419,7 @@ Ausgabe: WelcomeViewStep - + Welcome Willkommen diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index f6076390d..1ad6e433a 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record του %1 - + Boot Partition Κατάτμηση εκκίνησης - + System Partition Κατάτμηση συστήματος - + Do not install a boot loader Να μην εγκατασταθεί το πρόγραμμα εκκίνησης - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Κενή Σελίδα @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Τύπος - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Αρθρώματα - + Type: Τύπος: - - + + none κανένα - + Interface: Διεπαφή: - + Tools Εργαλεία - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Πληροφορίες αποσφαλμάτωσης @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Εγκατάσταση @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Ολοκληρώθηκε @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Εκτέλεση εντολής %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Εκτελείται η εντολή %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Προηγούμενο - - + + &Next &Επόμενο - - + + &Cancel &Ακύρωση - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Ακύρωση της εγκατάστασης χωρίς αλλαγές στο σύστημα. - + Setup Failed - - 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. + + Would you like to paste the install log to the web? - - <br/>The following modules could not be loaded: + + Install Log Paste URL - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install &Εγκατάσταση - + Setup is complete. Close the setup program. - + 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. Θέλετε πραγματικά να ακυρώσετε τη διαδικασία εγκατάστασης; Το πρόγραμμα εγκατάστασης θα τερματιστεί και όλες οι αλλαγές θα χαθούν. - + + &Yes &Ναι - + + &No &Όχι - + &Close &Κλείσιμο - + Continue with setup? Συνέχεια με την εγκατάσταση; - + 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> - + &Install now &Εγκατάσταση τώρα - + Go &back Μετάβαση &πίσω - + &Done &Ολοκληρώθηκε - + The installation is complete. Close the installer. Η εγκτάσταση ολοκληρώθηκε. Κλείστε το πρόγραμμα εγκατάστασης. - + Error Σφάλμα - + Installation Failed Η εγκατάσταση απέτυχε @@ -371,40 +402,49 @@ 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 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Εφαρμογή εγκατάστασης του %1 - + Show debug information Εμφάνιση πληροφοριών απασφαλμάτωσης @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Χειροκίνητη τμηματοποίηση</strong><br/>Μπορείτε να δημιουργήσετε κατατμήσεις ή να αλλάξετε το μέγεθός τους μόνοι σας. - + Boot loader location: Τοποθεσία προγράμματος εκκίνησης: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Τρέχον: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. <strong>Επιλέξτε ένα διαμέρισμα για σμίκρυνση, και μετά σύρετε το κάτω τμήμα της μπάρας για αλλαγή του μεγέθους</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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> όλα τα αρχεία στην επιλεγμένη συσκευή αποθήκευσης. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. 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. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. Ο κατάλογος sudoers δεν είναι εγγράψιμος. - + Cannot create sudoers file for writing. Δεν είναι δυνατή η δημιουργία του αρχείου sudoers για εγγραφή. - + Cannot chmod sudoers file. Δεν είναι δυνατό το chmod στο αρχείο sudoers. - + Cannot open groups file for reading. Δεν είναι δυνατό το άνοιγμα του αρχείου ομάδων για ανάγνωση. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. Το σύστημα δεν είναι συνδεδεμένο στο διαδίκτυο. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Το πρόγραμμα εγκατάστασης δεν εκτελείται με δικαιώματα διαχειριστή. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Σενάριο @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. Τύπος - + I accept the terms and conditions above. Δέχομαι τους παραπάνω όρους και προϋποθέσεις. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Άδεια χρήσης</h1>Η διαδικασία ρύθμισης θα εγκαταστήσει ιδιόκτητο λογισμικό που υπόκειται στους όρους αδειών. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Άδεια χρήσης</h1>Η διαδικασία ρύθμισης θα εγκαταστήσει ιδιόκτητο λογισμικό που υπόκειται στους όρους αδειών προκειμένου να παρέχει πρόσθετες δυνατότητες και να ενισχύσει την εμπειρία του χρήστη. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License Άδεια @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. Η τοπική γλώσσα του συστήματος έχει οριστεί σε %1. - + The numbers and dates locale will be set to %1. - + Region: Περιοχή: - + Zone: Ζώνη: - - + + &Change... &Αλλαγή... - + Set timezone to %1/%2.<br/> Ορισμός της ζώνης ώρας σε %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Γίνεται φόρτωση των δεδομένων τοποθεσίας... - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Όνομα - + Description Περιγραφή - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. Ποιο είναι το όνομά σας; - + What name do you want to use to log in? Ποιο όνομα θα θέλατε να χρησιμοποιείτε για σύνδεση; - + 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> - + What is the name of this computer? Ποιο είναι το όνομά του υπολογιστή; - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Αυτό το όνομα θα χρησιμοποιηθεί αν κάνετε τον υπολογιστή ορατό στους άλλους σε ένα δίκτυο.</small> - + + Computer Name + + + + + + 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> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ The installer will quit and all changes will be lost. 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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> Ο υπολογιστής δεν ικανοποιεί τις ελάχιστες απαιτήσεις για την εγκατάσταση του %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. - + 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 στον υπολογιστή σας. - + For best results, please ensure that this computer: Για καλύτερο αποτέλεσμα, παρακαλώ βεβαιωθείτε ότι ο υπολογιστής: - + System requirements Απαιτήσεις συστήματος @@ -2591,29 +2828,29 @@ Output: 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 Δεν είναι δυνατή η εγγραφή του ονόματος υπολογιστή στο σύστημα @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. Αδυναμία ορισμού ζώνης ώρας. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Αδυναμία ορισμού ζώνης ώρας, - + Cannot open /etc/timezone for writing Αδυναμία ανοίγματος /etc/timezone για εγγραφή @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Το όνομα χρήστη περιέχει μη έγκυρους χαρακτήρες. Επιτρέπονται μόνο πεζά γράμματα και αριθμητικά ψηφία. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Το όνομα υπολογιστή είναι πολύ σύντομο. - + Your hostname is too long. Το όνομα υπολογιστή είναι πολύ μακρύ. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Το όνομα υπολογιστή περιέχει μη έγκυρους χαρακτήρες. Επιτρέπονται μόνο γράμματα, αριθμητικά ψηφία και παύλες. - - - - + Your passwords do not match! Οι κωδικοί πρόσβασης δεν ταιριάζουν! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users Χρήστες + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Τύπος - - &Release notes - Ση&μειώσεις έκδοσης - - - - &Known issues - &Γνωστά προβλήματα - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + Ση&μειώσεις έκδοσης + + + + &Known issues + &Γνωστά προβλήματα + + + &Support &Υποστήριξη @@ -3092,42 +3371,42 @@ Output: Σ&χετικά με - + <h1>Welcome to the %1 installer.</h1> <h1>Καλώς ήλθατε στην εγκατάσταση του %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support Υποστήριξη %1 @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Καλώς ήλθατε diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index 3d18cf210..e88d97377 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record of %1 - + Boot Partition Boot Partition - + System Partition System Partition - + Do not install a boot loader Do not install a boot loader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Modules - + Type: Type: - - + + none none - + Interface: Interface: - + Tools Tools - + + Reload Stylesheet + Reload Stylesheet + + + + Widget Tree + Widget Tree + + + Debug information Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Set up - + Install Install @@ -123,7 +133,7 @@ Job failed (%1) - + Programmed job failure was explicitly requested. Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Run command %1 %2 + Run command '%1' in target system. + Run command '%1' in target system. - + + Run command '%1'. + Run command '%1'. + + + Running command %1 %2 Running command %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Waiting for %n module(s).Waiting for %n module(s). - + (%n second(s)) (%n second(s))(%n second(s)) - + System-requirements checking is complete. System-requirements checking is complete. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Back - - + + &Next &Next - - + + &Cancel &Cancel - - + Cancel setup without changing the system. Cancel setup without changing the system. - - + Cancel installation without changing the system. Cancel installation without changing the system. - + Setup Failed Setup Failed - + + Would you like to paste the install log to the web? + Would you like to paste the install log to the web? + + + + 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 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> - + &Set up now &Set up now - + &Set up &Set up - + &Install &Install - + Setup is complete. Close the setup program. Setup is complete. Close the setup program. - + 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? The installer will quit and all changes will be lost. - + + &Yes &Yes - + + &No &No - + &Close &Close - + Continue with setup? Continue with setup? - + 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> - + &Install now &Install now - + Go &back Go &back - + &Done &Done - + The installation is complete. Close the installer. The installation is complete. Close the installer. - + Error Error - + Installation Failed Installation Failed @@ -372,40 +403,50 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Unknown exception type - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + Install log posted to: +%1 + + CalamaresWindow - + %1 Setup Program %1 Setup Program - + %1 Installer %1 Installer - + Show debug information Show debug information @@ -436,7 +477,7 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: Boot loader location: @@ -448,8 +489,8 @@ The installer will quit and all changes will be lost. - - + + Current: Current: @@ -464,96 +505,96 @@ The installer will quit and all changes will be lost. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. 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 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. The command needs to know the user's name, but no username is defined. @@ -621,7 +662,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job Contextual Processes Job @@ -801,17 +842,17 @@ The installer will quit and all changes will be lost. 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. @@ -958,7 +999,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1125,12 +1166,12 @@ The installer will quit and all changes will be lost. <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>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. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1189,66 +1230,74 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space has at least %1 GiB available drive space - + There is not enough drive space. At least %1 GiB is required. There is not enough drive space. At least %1 GiB is required. - + has at least %1 GiB working memory has at least %1 GiB working memory - + The system does not have enough working memory. At least %1 GiB is required. The system does not have enough working memory. At least %1 GiB is required. - + is plugged in to a power source is plugged in to a power source - + The system is not plugged in to a power source. The system is not plugged in to a power source. - + is connected to the Internet is connected to the Internet - + The system is not connected to the Internet. The system is not connected to the Internet. - + The setup program is not running with administrator rights. The setup program is not running with administrator rights. - + The installer is not running with administrator rights. The installer is not running with administrator rights. - + The screen is too small to display the setup program. The screen is too small to display the setup program. - + The screen is too small to display the installer. The screen is too small to display the installer. + + HostInfoJob + + + Collecting information about your machine. + Collecting information about your machine. + + IDJob @@ -1275,6 +1324,22 @@ The installer will quit and all changes will be lost. Could not write to file <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Creating initramfs with mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Creating initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1390,22 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting 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>. 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 &Cancel - + &OK &OK @@ -1353,27 +1418,27 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1381,7 +1446,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License License @@ -1389,64 +1454,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>by %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 graphics driver</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <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 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</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> <strong>%1</strong><br/><font color="Grey">by %2</font> - + Shows the complete license text Shows the complete license text - + Hide license text Hide license text - + Show license agreement Show license agreement - + Hide license agreement Hide license agreement - + Opens the license agreement in a browser window. Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> <a href="%1">View license agreement</a> @@ -1454,33 +1519,33 @@ The installer will quit and all changes will be lost. LocalePage - + 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. - + Region: Region: - + Zone: Zone: - - + + &Change... &Change... - + Set timezone to %1/%2.<br/> Set timezone to %1/%2.<br/> @@ -1488,38 +1553,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Loading location data... - - - + Location Location + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Configuring LUKS key file. + + + + + No partitions are defined. + No partitions are defined. + + + + + + Encrypted rootfs setup error + Encrypted rootfs setup error + + + + Root partition %1 is LUKS but no passphrase has been set. + Root partition %1 is LUKS but no passphrase has been set. + + + + Could not create LUKS key file for root partition %1. + Could not create LUKS key file for root partition %1. + + + + Could configure LUKS key file on partition %1. + Could configure LUKS key file on partition %1. + + + + MachineIdJob + + + Generate machine-id. + Generate machine-id. + + + + Configuration Error + Configuration Error + + + + No root mount point is set for MachineId. + No root mount point is set for MachineId. + + NetInstallPage - + Name Name - + Description Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + Network Installation. (Disabled: Incorrect configuration) + NetInstallViewStep @@ -1550,12 +1669,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. Set the OEM Batch Identifier to <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ The installer will quit and all changes will be lost. 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 + + + + PackageChooserPage + + + Form + Form + + + + Product Name + Product Name + + + + TextLabel + TextLabel + + + + Long Product Description + Long Product Description + + + + Package Selection + Package Selection + + + + Please pick a product from the list. The selected product will be installed. + Please pick a product from the list. The selected product will be installed. + + + + PackageChooserViewStep + + + Packages + Packages + Page_Keyboard @@ -1834,47 +1999,86 @@ The installer will quit and all changes will be lost. What is your name? - + What name do you want to use to log in? What name do you want to use to log in? - + Choose a password to keep your account safe. 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>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> - + What is the name of this computer? What is the name of this computer? - + + Your Full Name + Your Full Name + + + + login + login + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + Computer Name + + + + + Password + Password + + + + + Repeat Password + Repeat Password + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak 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. + Require strong passwords. + + + Log in automatically without asking for the password. Log in automatically without asking for the password. - + Use the same password for the administrator account. Use the same password for the administrator account. - + Choose a 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>Enter the same password twice, so that it can be checked for typing errors.</small> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</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 system partition flag not set EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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 partitons to install on. There are no partitons to install on. @@ -2205,14 +2409,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. There was no output from the command. - + Output: @@ -2221,52 +2425,52 @@ Output: - + External command crashed. External command crashed. - + Command <i>%1</i> crashed. Command <i>%1</i> crashed. - + External command failed to start. External command failed to start. - + Command <i>%1</i> failed to start. Command <i>%1</i> failed to start. - + Internal error when starting command. Internal error when starting command. - + Bad parameters for process job call. Bad parameters for process job call. - + External command failed to finish. External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. External command finished with errors. - + Command <i>%1</i> finished with exit code %2. Command <i>%1</i> finished with exit code %2. @@ -2315,16 +2519,50 @@ Output: (no mount point) - + Requirements checking for module <i>%1</i> is complete. Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + No product + + + + No description provided. + No description provided. + + + + + + + + File not found + File not found + + + + Path <pre>%1</pre> must be an absolute path. + Path <pre>%1</pre> must be an absolute path. + + + + Could not create new random file <pre>%1</pre>. + Could not create new random file <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Could not read random file <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Output: 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 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 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 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 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. This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: For best results, please ensure that this computer: - + System requirements System requirements @@ -2595,29 +2833,29 @@ Output: SetHostNameJob - + Set hostname %1 Set hostname %1 - + Set hostname <strong>%1</strong>. Set hostname <strong>%1</strong>. - + Setting hostname %1. Setting hostname %1. - - + + Internal Error Internal Error - - + + Cannot write hostname to target system Cannot write hostname to target system @@ -2758,22 +2996,22 @@ Output: rootMountPoint is %1 - + Cannot disable root account. Cannot disable root account. - + passwd terminated with error code %1. passwd terminated with error code %1. - + Cannot set password for user %1. Cannot set password for user %1. - + usermod terminated with error code %1. usermod terminated with error code %1. @@ -2796,22 +3034,22 @@ Output: Bad path: %1 - + Cannot set timezone. Cannot set timezone. - + Link creation failed, target: %1; link name: %2 Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Cannot set timezone, - + Cannot open /etc/timezone for writing Cannot open /etc/timezone for writing @@ -2857,22 +3095,22 @@ Output: TrackingInstallJob - + Installation feedback Installation feedback - + Sending installation feedback. Sending installation feedback. - + Internal error in install-tracking. Internal error in install-tracking. - + HTTP request timed out. HTTP request timed out. @@ -2880,28 +3118,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Output: Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. 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 <b>only be sent once</b> after the installation finishes. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2952,7 +3190,7 @@ Output: TrackingViewStep - + Feedback Feedback @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - + Your passwords do not match! Your passwords do not match! @@ -3004,11 +3246,24 @@ Output: UsersViewStep - + Users Users + + VariantModel + + + Key + Key + + + + Value + Value + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Output: Form - + + + Select application and system language + Select application and system language + + + + Open donations website + Open donations website + + + + &Donate + &Donate + + + + Open help and support website + Open help and support website + + + + Open issues and bug-tracking website + Open issues and bug-tracking website + + + + Open release notes website + Open release notes website + + + &Release notes &Release notes - + &Known issues &Known issues - - - Select language - Select language - - - + &Support &Support @@ -3096,42 +3376,42 @@ Output: &About - + <h1>Welcome to the %1 installer.</h1> <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Welcome to %1 setup.</h1> - + About %1 setup About %1 setup - + About %1 installer 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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 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. - + %1 support %1 support @@ -3139,7 +3419,7 @@ Output: WelcomeViewStep - + Welcome Welcome diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index bc3053321..f0eb9799c 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record of %1 - + Boot Partition Boot Partition - + System Partition System Partition - + Do not install a boot loader Do not install a boot loader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Modules - + Type: Type: - - + + none none - + Interface: Interface: - + Tools Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Run command %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Running command %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Back - - + + &Next &Next - - + + &Cancel &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed - Calamares Initialisation Failed + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>The following modules could not be loaded: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install &Install - + Setup is complete. Close the setup program. - + 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? The installer will quit and all changes will be lost. - + + &Yes &Yes - + + &No &No - + &Close &Close - + Continue with setup? Continue with setup? - + 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> - + &Install now &Install now - + Go &back Go &back - + &Done &Done - + The installation is complete. Close the installer. The installation is complete. Close the installer. - + Error Error - + Installation Failed Installation Failed @@ -371,40 +402,49 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Unknown exception type - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Installer - + Show debug information Show debug information @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: Boot loader location: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Current: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. <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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. 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 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. The command needs to know the user's name, but no username is defined. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. 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. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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 is plugged in to a power source - + The system is not plugged in to a power source. The system is not plugged in to a power source. - + is connected to the Internet is connected to the Internet - + The system is not connected to the Internet. The system is not connected to the Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. The installer is not running with administrator rights. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. The screen is too small to display the installer. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Script @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting 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>. 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 &Cancel - + &OK &OK @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License License @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>by %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 graphics driver</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <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 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</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> <strong>%1</strong><br/><font color="Grey">by %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + 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. - + Region: Region: - + Zone: Zone: - - + + &Change... &Change... - + Set timezone to %1/%2.<br/> Set timezone to %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Loading location data... - - - + Location 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generate machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Name - + Description Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. 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 + + + + + PackageChooserPage + + + Form + Form + + + + Product Name + + + + + TextLabel + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. What is your name? - + What name do you want to use to log in? What name do you want to use to log in? - + Choose a password to keep your account safe. 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>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> - + What is the name of this computer? What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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. Log in automatically without asking for the password. - + Use the same password for the administrator account. Use the same password for the administrator account. - + Choose a 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>Enter the same password twice, so that it can be checked for typing errors.</small> @@ -2038,107 +2241,107 @@ 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>esp</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>esp</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 system partition flag not set EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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 partitons to install on. @@ -2204,14 +2407,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. There was no output from the command. - + Output: @@ -2220,52 +2423,52 @@ Output: - + External command crashed. External command crashed. - + Command <i>%1</i> crashed. Command <i>%1</i> crashed. - + External command failed to start. External command failed to start. - + Command <i>%1</i> failed to start. Command <i>%1</i> failed to start. - + Internal error when starting command. Internal error when starting command. - + Bad parameters for process job call. Bad parameters for process job call. - + External command failed to finish. External command failed to finish. - + Command <i>%1</i> failed to finish in %2 seconds. Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. External command finished with errors. - + Command <i>%1</i> finished with exit code %2. Command <i>%1</i> finished with exit code %2. @@ -2314,16 +2517,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2543,37 +2780,37 @@ Output: 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 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 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. This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: For best results, please ensure that this computer: - + System requirements System requirements @@ -2594,29 +2831,29 @@ Output: SetHostNameJob - + Set hostname %1 Set hostname %1 - + Set hostname <strong>%1</strong>. Set hostname <strong>%1</strong>. - + Setting hostname %1. Setting hostname %1. - - + + Internal Error Internal Error - - + + Cannot write hostname to target system Cannot write hostname to target system @@ -2757,22 +2994,22 @@ Output: rootMountPoint is %1 - + Cannot disable root account. Cannot disable root account. - + passwd terminated with error code %1. passwd terminated with error code %1. - + Cannot set password for user %1. Cannot set password for user %1. - + usermod terminated with error code %1. usermod terminated with error code %1. @@ -2795,22 +3032,22 @@ Output: Bad path: %1 - + Cannot set timezone. Cannot set timezone. - + Link creation failed, target: %1; link name: %2 Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Cannot set timezone, - + Cannot open /etc/timezone for writing Cannot open /etc/timezone for writing @@ -2856,22 +3093,22 @@ Output: TrackingInstallJob - + Installation feedback Installation feedback - + Sending installation feedback. Sending installation feedback. - + Internal error in install-tracking. Internal error in install-tracking. - + HTTP request timed out. HTTP request timed out. @@ -2879,28 +3116,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2933,17 +3170,17 @@ Output: Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. 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 <b>only be sent once</b> after the installation finishes. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2951,7 +3188,7 @@ Output: TrackingViewStep - + Feedback Feedback @@ -2959,43 +3196,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - + Your passwords do not match! Your passwords do not match! @@ -3003,11 +3244,24 @@ Output: UsersViewStep - + Users Users + + VariantModel + + + Key + + + + + Value + Value + + VolumeGroupBaseDialog @@ -3069,23 +3323,48 @@ Output: Form - - &Release notes - &Release notes - - - - &Known issues - &Known issues - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Release notes + + + + &Known issues + &Known issues + + + &Support &Support @@ -3095,42 +3374,42 @@ Output: &About - + <h1>Welcome to the %1 installer.</h1> <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer 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-2019 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. - + %1 support %1 support @@ -3138,7 +3417,7 @@ Output: WelcomeViewStep - + Welcome Welcome diff --git a/lang/calamares_eo.ts b/lang/calamares_eo.ts index df38c5e88..33bde53d5 100644 --- a/lang/calamares_eo.ts +++ b/lang/calamares_eo.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) %1(%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formularo - + GlobalStorage - + JobQueue - + Modules Moduloj - + Type: Tipo: - - + + none neniu - + Interface: Interfaco: - + Tools Iloj - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Aranĝu - + Install Instali @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Finita @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back - + &Reen - - + + &Next - + &Sekva - - + + &Cancel &Nuligi - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Nuligi instalado sen ŝanĝante la sistemo. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Aranĝu nun - + &Set up - + &Aranĝu - + &Install &Instali - + Setup is complete. Close the setup program. - + 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? La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + + &Yes &Jes - + + &No &Ne - + &Close &Fermi - + Continue with setup? - + 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> - + &Install now &Instali nun - + Go &back - + Iru &Reen - + &Done &Finita - + The installation is complete. Close the installer. - + Error Eraro - + Installation Failed @@ -371,40 +402,49 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Instalilo - + Show debug information @@ -435,20 +475,20 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Boot loader location: Select storage de&vice: - + Elektita &tenada aparato - - + + Current: @@ -463,96 +503,96 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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. @@ -620,7 +660,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. ContextualProcessJob - + Contextual Processes Job @@ -630,7 +670,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Create a Partition - + Kreiu Subdisko @@ -640,57 +680,57 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Partition &Type: - + &Speco de Subdisko: &Primary - + &Ĉefsubdisko E&xtended - + &Kromsubdisko Fi&le System: - + &Dosiersistemo: LVM LV name - + LVM LV nomo Flags: - + Flagoj: &Mount Point: - + &Muntopunkto: Si&ze: - + &Grandeco: En&crypt - + &Ĉifras Logical - + Logika Primary - + Ĉefa @@ -700,7 +740,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Mountpoint already in use. Please select another one. - + Muntopunkto jam utiliĝi. Bonvolu elektu alian. @@ -800,17 +840,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -957,7 +997,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. DummyCppJob - + Dummy C++ Job @@ -977,7 +1017,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. &Keep - + &Tenu @@ -992,12 +1032,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. &Mount Point: - + &Muntopunkto: Si&ze: - + &Grandeco: @@ -1007,17 +1047,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Fi&le System: - + &Dosiersistemo: Flags: - + &Flagoj: Mountpoint already in use. Please select another one. - + Muntopunkto jam utiliĝi. Bonvolu elektu alian. @@ -1030,7 +1070,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. En&crypt system - + &Ĉifru la sistemo @@ -1101,7 +1141,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. &Restart now - + &Restartigu nun @@ -1124,12 +1164,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + <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. @@ -1188,66 +1228,74 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. InteractiveTerminalViewStep - + Script @@ -1324,24 +1388,24 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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 &Nuligi - + &OK - + &Daŭrigu @@ -1352,27 +1416,27 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Formularo - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LicenseViewStep - + License @@ -1388,64 +1452,64 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + &Ŝanĝu... - + Set timezone to %1/%2.<br/> @@ -1487,38 +1551,92 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generi maŝino-legitimilo. + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1533,7 +1651,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Ba&tch: - + &Baĉo @@ -1549,12 +1667,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + 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 + Formularo + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -1967,12 +2170,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Storage de&vice: - + &Tenada aparato &Revert All Changes - + &Malfari Sanĝojn @@ -1982,17 +2185,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. Cre&ate - + &Kreiu &Edit - + &Redaktu &Delete - + &Forviŝu @@ -2038,107 +2241,107 @@ 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: - + 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos. 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. @@ -2288,7 +2491,7 @@ Output: extended - + kromsubdisko @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1(%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Formularo - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3092,42 +3371,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 74128ccde..a31b3d36a 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -21,27 +21,27 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partición de Arranque - + System Partition Partición del Sistema - + Do not install a boot loader No instalar el gestor de arranque - + %1 (%2) %1 (%2) @@ -49,7 +49,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::BlankViewStep - + Blank Page Página vacía @@ -57,48 +57,58 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::DebugWindow - + Form Formulario - + GlobalStorage Almacenamiento Global - + JobQueue Lista de trabajos pendientes - + Modules Módulos - + Type: Tipo: - - + + none ninguno - + Interface: Interfaz: - + Tools Herramientas - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Información de depuración. @@ -106,12 +116,12 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ExecutionViewStep - + Set up - + Install Instalar @@ -124,7 +134,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Trabajo fallido (%1) - + Programmed job failure was explicitly requested. @@ -132,7 +142,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::JobThread - + Done Hecho @@ -149,11 +159,16 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ProcessJob - Run command %1 %2 - Ejecutar comando %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Ejecutando comando %1 %2 @@ -161,32 +176,32 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::PythonJob - + Running %1 operation. Ejecutando %1 operación. - + Bad working directory path Error en la ruta del directorio de trabajo - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -194,17 +209,17 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -212,159 +227,175 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Calamares::ViewManager - + + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Cancelar - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Cancelar instalación sin cambiar el sistema. - + Setup Failed - - Calamares Initialization Failed - La inicialización de Calamares falló + + Would you like to paste the install log to the web? + - - %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 + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - Los siguientes módulos no se pudieron cargar: - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. + 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 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> - + &Set up now - + &Set up - + &Install &Instalar - + Setup is complete. Close the setup program. - + Cancel setup? - + 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? Saldrá del instalador y se perderán todos los cambios. - + + &Yes &Sí - + + &No &No - + &Close &Cerrar - + Continue with setup? ¿Continuar con la configuración? - + 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> - + &Install now &Instalar ahora - + Go &back Regresar - + &Done &Hecho - + The installation is complete. Close the installer. La instalación se ha completado. Cierre el instalador. - + Error Error - + Installation Failed Error en la Instalación @@ -372,40 +403,49 @@ Saldrá del instalador y se perderán todos los cambios. CalamaresPython::Helper - + Unknown exception type Excepción desconocida - + unparseable Python error error unparseable Python - + unparseable Python traceback rastreo de Python unparseable - + Unfetchable Python error. Error de Python Unfetchable. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Instalador - + Show debug information Mostrar información de depuración. @@ -436,7 +476,7 @@ Saldrá del instalador y se perderán todos los cambios. <strong>Particionado manual </strong><br/> Usted puede crear o cambiar el tamaño de las particiones usted mismo. - + Boot loader location: Ubicación del cargador de arranque: @@ -448,10 +488,10 @@ Saldrá del instalador y se perderán todos los cambios. - - + + Current: - Corriente + Actual: @@ -464,96 +504,96 @@ Saldrá del instalador y se perderán todos los cambios. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +642,18 @@ Saldrá del instalador y se perderán todos los cambios. CommandList - - + + Could not run command. No se pudo ejecutar el comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. El comando corre en el ambiente anfitrión y necesita saber el directorio raiz, pero no está definido el punto de montaje de la raiz - + The command needs to know the user's name, but no username is defined. El comando necesita saber el nombre de usuario, pero no hay nombre de usuario definido. @@ -621,7 +661,7 @@ Saldrá del instalador y se perderán todos los cambios. ContextualProcessJob - + Contextual Processes Job Tarea Contextual Processes @@ -801,17 +841,17 @@ Saldrá del instalador y se perderán todos los cambios. 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. @@ -958,7 +998,7 @@ Saldrá del instalador y se perderán todos los cambios. DummyCppJob - + Dummy C++ Job Tarea C++ ficticia @@ -1125,12 +1165,12 @@ Saldrá del instalador y se perderán todos los cambios. - + <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. <h1>La instalación falló</h1><br/>%1 no se ha instalado en su equipo.<br/>El mensaje de error fue: %2. @@ -1189,66 +1229,74 @@ Saldrá del instalador y se perderán todos los cambios. 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 esta conectado a una fuente de alimentación - + The system is not plugged in to a power source. El sistema no esta conectado a una fuente de alimentación. - + is connected to the Internet esta conectado a Internet - + The system is not connected to the Internet. El sistema no esta conectado a Internet - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. El instalador no esta ejecutándose con permisos de administrador. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. La pantalla es demasiado pequeña para mostrar el instalador. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1275,6 +1323,22 @@ Saldrá del instalador y se perderán todos los cambios. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1296,7 +1360,7 @@ Saldrá del instalador y se perderán todos los cambios. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1389,22 @@ Saldrá del instalador y se perderán todos los cambios. LCLocaleDialog - + System locale setting Configuración regional del sistema. - + 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>. La configuración regional del sistema afecta al idioma y a al conjunto de caracteres para algunos elementos de interfaz de la linea de comandos.<br/>La configuración actual es <strong>%1</strong>. - + &Cancel &Cancelar - + &OK &Aceptar @@ -1353,27 +1417,27 @@ Saldrá del instalador y se perderán todos los cambios. Formulario - + I accept the terms and conditions above. Acepto los términos y condiciones anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acuerdo de licencia</ h1> Este procedimiento de instalación instalará el software propietario que está sujeto a los términos de licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise los acuerdos de licencia de usuario final (EULAs) anterior. <br/>Si usted no está de acuerdo con los términos, el procedimiento de instalación no puede continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acuerdo de licencia</ h1> Este procedimiento de configuración se puede instalar el software propietario que está sujeta a condiciones de licencia con el fin de proporcionar características adicionales y mejorar la experiencia del usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor, revise los acuerdos de licencia de usuario final (EULAs) anterior.<br/>Si usted no está de acuerdo con los términos, el software propietario no se instalará, y las alternativas de código abierto se utilizarán en su lugar. @@ -1381,7 +1445,7 @@ Saldrá del instalador y se perderán todos los cambios. LicenseViewStep - + License Licencia @@ -1389,64 +1453,64 @@ Saldrá del instalador y se perderán todos los cambios. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>por %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 driver gráficos</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin del navegador</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paquete</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1454,33 +1518,33 @@ Saldrá del instalador y se perderán todos los cambios. LocalePage - + 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. - + Region: Región: - + Zone: Zona: - - + + &Change... &Cambiar... - + Set timezone to %1/%2.<br/> Configurar zona horaria a %1/%2.<br/> @@ -1488,38 +1552,92 @@ Saldrá del instalador y se perderán todos los cambios. LocaleViewStep - - Loading location data... - Detectando ubicación... - - - + Location Ubicación + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generar identificación-de-máquina. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nombre - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalación a través de la Red. (Desactivada: no se ha podido obtener una lista de paquetes, comprueba tu conexión a la red) - + Network Installation. (Disabled: Received invalid groups data) Instalación de red. (Deshabilitada: Se recibieron grupos de datos no válidos) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1550,12 +1668,12 @@ Saldrá del instalador y se perderán todos los cambios. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1563,117 +1681,117 @@ 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 @@ -1683,125 +1801,171 @@ Saldrá del instalador y se perderán todos los cambios. 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 + + + + + PackageChooserPage + + + Form + Formulario + + + + Product Name + + + + + TextLabel + Etiqueta de texto + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1834,47 +1998,86 @@ Saldrá del instalador y se perderán todos los cambios. Nombre - + What name do you want to use to log in? ¿Qué nombre desea usar para ingresar? - + Choose a password to keep your account safe. Elija una contraseña para mantener su cuenta segura. - + + <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>Ingrese la misma contraseña dos veces para poder revisar los errores al escribir. Una buena contraseña debe contener una mezcla entre letras, números y puntuación, deberá contener al menos ocho caracteres de longitud, y ser cambiada con regularidad.</small> - + What is the name of this computer? Nombre del equipo - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Este nombre será utilizado si hace este equipo visible para otros en una red.</small> - + + Computer Name + + + + + + 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. Conectarse automaticamente sin pedir la contraseña. - + Use the same password for the administrator account. Usar la misma contraseña para la cuenta de administrador. - + Choose a password for the administrator account. Elegir una contraseña para la cuenta de administrador. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Escriba dos veces la contraseña para que se puede verificar en caso de errores al escribir.</small> @@ -2039,107 +2242,107 @@ 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>esp</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 partición EFI del sistema es necesaria para empezar %1.<br/><br/>Para configurar una partición EFI, vuelva atrás y seleccione crear un sistema de archivos FAT32 con el argumento <strong>esp</strong> activado y montada en <strong>%2</strong>.<br/><br/>Puede continuar sin configurar una partición EFI pero su sistema puede fallar al arrancar. - + EFI system partition flag not set Bandera EFI no establecida en la partición del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 partición EFI del sistema es necesaria para empezar %1.<br/><br/>Una partición EFI fue configurada para ser montada en <strong>%2</strong> pero su argumento <strong>esp</strong> no fue seleccionado.<br/>Para activar el argumento, vuelva atrás y edite la partición.<br/><br/>Puede continuar sin configurar el argumento pero su sistema puede fallar al arrancar. - + 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 partitons to install on. @@ -2205,14 +2408,14 @@ Saldrá del instalador y se perderán todos los cambios. ProcessResult - + There was no output from the command. No hubo salida del comando. - + Output: @@ -2221,52 +2424,52 @@ Salida: - + External command crashed. El comando externo falló. - + Command <i>%1</i> crashed. El comando <i>%1</i> falló. - + External command failed to start. El comando externo no se pudo iniciar. - + Command <i>%1</i> failed to start. El comando <i>%1</i> no se pudo iniciar. - + Internal error when starting command. Error interno al iniciar el comando. - + Bad parameters for process job call. Parámetros erróneos para la llamada de la tarea del procreso. - + External command failed to finish. El comando externo no se pudo finalizar. - + Command <i>%1</i> failed to finish in %2 seconds. El comando <i>%1</i> no se pudo finalizar en %2 segundos. - + External command finished with errors. El comando externo finalizó con errores. - + Command <i>%1</i> finished with exit code %2. El comando <i>%1</i> finalizó con un código de salida %2. @@ -2315,16 +2518,50 @@ Salida: (sin punto de montaje) - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,37 +2781,37 @@ Salida: 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> Este ordenador no cumple los requisitos mínimos para la instalación. %1.<br/>La instalación no puede continuar. <a href="#details">Detalles...</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. Este ordenador no cumple alguno de los requisitos recomendados para la instalación %1.<br/>La instalación puede continuar, pero algunas funcionalidades podrían ser deshabilitadas. - + This program will ask you some questions and set up %2 on your computer. El programa le preguntará algunas cuestiones y configurará %2 en su ordenador. - + For best results, please ensure that this computer: Para obtener los mejores resultados, por favor asegúrese que este ordenador: - + System requirements Requisitos del sistema @@ -2595,29 +2832,29 @@ Salida: SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Configurar hostname <strong>%1</strong>. - + Setting hostname %1. Configurando hostname %1. - - + + Internal Error Error interno - - + + Cannot write hostname to target system No es posible escribir el hostname en el sistema de destino @@ -2758,22 +2995,22 @@ Salida: El punto de montaje de la raíz es %1 - + Cannot disable root account. No se puede deshabilitar la cuenta root - + passwd terminated with error code %1. passwd finalizó con el código de error %1. - + Cannot set password for user %1. No se puede definir contraseña para el usuario %1. - + usermod terminated with error code %1. usermod ha terminado con el código de error %1 @@ -2796,22 +3033,22 @@ Salida: Ruta errónea: %1 - + Cannot set timezone. No se puede definir la zona horaria - + Link creation failed, target: %1; link name: %2 Fallo al crear el enlace, destino: %1; nombre del enlace: %2 - + Cannot set timezone, No se puede establecer la zona horaria, - + Cannot open /etc/timezone for writing No se puede abrir/etc/timezone para la escritura @@ -2857,22 +3094,22 @@ Salida: TrackingInstallJob - + Installation feedback Respuesta de la instalación - + Sending installation feedback. Enviar respuesta de la instalación - + Internal error in install-tracking. Error interno en el seguimiento-de-instalación. - + HTTP request timed out. La petición HTTP agotó el tiempo de espera. @@ -2880,28 +3117,28 @@ Salida: TrackingMachineNeonJob - + 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. @@ -2934,17 +3171,17 @@ Salida: El seguimiento de instalación ayuda a %1 a ver cuántos usuarios tiene, en qué hardware se instala %1, y (con las últimas dos opciones de debajo) a obtener información continua acerca de las aplicaciones preferidas. Para ver lo que se enviará, por favor, pulse en el icono de ayuda junto a cada área. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Al seleccionar esto enviará información acerca de su instalación y hardware. Esta información <b>sólo se enviará una vez</b> después de que finalice la instalación. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Al seleccionar esto enviará información <b>periódicamente</b> acerca de su instalación, hardware y aplicaciones, a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Al seleccionar esto enviará información <b>regularmente</b> acerca de su instalación, hardware, aplicaciones y patrones de uso, a %1. @@ -2952,7 +3189,7 @@ Salida: TrackingViewStep - + Feedback Respuesta @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Su nombre de usuario contiene caracteres inválidos. Solo se admiten letras minúsculas y números. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - El nombre del Host contiene caracteres inválidos. Solo se admiten letras, números y guiones. - - - - + Your passwords do not match! ¡Sus contraseñas no coinciden! @@ -3004,11 +3245,24 @@ Salida: UsersViewStep - + Users Usuarios + + VariantModel + + + Key + + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ Salida: Formulario - - &Release notes - &Notas de publicación - - - - &Known issues - &Problemas conocidos - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Notas de publicación + + + + &Known issues + &Problemas conocidos + + + &Support &Ayuda @@ -3096,42 +3375,42 @@ Salida: &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenido al instalador %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Bienvenido al instalador de Calamares para %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup Acerca de la configuración %1 - + About %1 installer Acerca del instalador %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-2019 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. - + %1 support %1 ayuda @@ -3139,7 +3418,7 @@ Salida: WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index f3411597f..863b8ca91 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partición de arranque - + System Partition Partición del Sistema - + Do not install a boot loader No instalar el gestor de arranque - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Página en blanco @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulario - + GlobalStorage Almacenamiento Global - + JobQueue Cola de trabajo - + Modules Módulos - + Type: Tipo: - - + + none ninguno - + Interface: Interfaz: - + Tools Herramientas - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Información de depuración @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Preparar - + Install Instalar @@ -123,7 +133,7 @@ Trabajo fallido (%1) - + Programmed job failure was explicitly requested. Falla del trabajo programado fue solicitado explícitamente. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Hecho @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Ejecutar comando %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Ejecutando comando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Ejecutando operación %1. - + Bad working directory path Ruta a la carpeta de trabajo errónea - + Working directory %1 for python job %2 is not readable. La carpeta de trabajo %1 para la tarea de python %2 no es accesible. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. Chequeo de requerimientos del sistema completado. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Atrás - - + + &Next &Siguiente - - + + &Cancel &Cancelar - - + 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. - + Setup Failed Fallo en la configuración. - + + Would you like to paste the install log to the web? + + + + + 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 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> - + &Set up now &Configurar ahora - + &Set up &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. Configuración completa. Cierre el programa de instalación. - + 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? El instalador terminará y se perderán todos los cambios. - + + &Yes &Si - + + &No &No - + &Close &Cerrar - + Continue with setup? ¿Continuar con la instalación? - + 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> - + &Install now &Instalar ahora - + Go &back &Regresar - + &Done &Hecho - + The installation is complete. Close the installer. Instalación completa. Cierre el instalador. - + Error Error - + Installation Failed Instalación Fallida @@ -372,40 +403,49 @@ El instalador terminará y se perderán todos los cambios. CalamaresPython::Helper - + Unknown exception type Tipo de excepción desconocida - + unparseable Python error error Python no analizable - + unparseable Python traceback rastreo de Python no analizable - + Unfetchable Python error. Error de Python inalcanzable. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program %1 Programa de instalación - + %1 Installer %1 Instalador - + Show debug information Mostrar información de depuración @@ -436,7 +476,7 @@ El instalador terminará y se perderán todos los cambios. <strong>Particionado manual </strong><br/> Puede crear o cambiar el tamaño de las particiones usted mismo. - + Boot loader location: Ubicación del cargador de arranque: @@ -448,8 +488,8 @@ El instalador terminará y se perderán todos los cambios. - - + + Current: Actual: @@ -464,97 +504,97 @@ El instalador terminará y se perderán todos los cambios. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -603,18 +643,18 @@ El instalador terminará y se perderán todos los cambios. CommandList - - + + Could not run command. No puede ejecutarse el comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Este comando se ejecuta en el entorno host y necesita saber la ruta root, pero no hay rootMountPoint definido. - + The command needs to know the user's name, but no username is defined. Este comando necesita saber el nombre de usuario, pero no hay nombre de usuario definido. @@ -622,7 +662,7 @@ El instalador terminará y se perderán todos los cambios. ContextualProcessJob - + Contextual Processes Job Tareas de procesos contextuales @@ -802,17 +842,17 @@ El instalador terminará y se perderán todos los cambios. 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. @@ -959,7 +999,7 @@ El instalador terminará y se perderán todos los cambios. DummyCppJob - + Dummy C++ Job Trabajo C++ Simulado @@ -1126,12 +1166,12 @@ El instalador terminará y se perderán todos los cambios. - + <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. <h1>Instalación fallida</h1> <br/>%1 no ha sido instalado en su computador. <br/>El mensaje de error es: %2. @@ -1190,66 +1230,74 @@ El instalador terminará y se perderán todos los cambios. 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 está conectado a una fuente de energía - + The system is not plugged in to a power source. El sistema no está conectado a una fuente de energía. - + is connected to the Internet está conectado a Internet - + The system is not connected to the Internet. El sistema no está conectado a Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. El instalador no se está ejecutando con privilegios de administrador. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. La pantalla es muy pequeña para mostrar el instalador + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1276,6 +1324,22 @@ El instalador terminará y se perderán todos los cambios. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1297,7 +1361,7 @@ El instalador terminará y se perderán todos los cambios. InteractiveTerminalViewStep - + Script Script @@ -1326,22 +1390,22 @@ El instalador terminará y se perderán todos los cambios. LCLocaleDialog - + System locale setting Configuración de localización del sistema - + 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>. La configuración regional del sistema afecta al idioma y a al conjunto de caracteres para algunos elementos de interfaz de la linea de comandos.<br/>La configuración actual es <strong>%1</strong>. - + &Cancel &Cancelar - + &OK &OK @@ -1354,27 +1418,27 @@ El instalador terminará y se perderán todos los cambios. Formulario - + I accept the terms and conditions above. Acepto los terminos y condiciones anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acuerdo de Licencia</h1>Este procediemiento de configuración instalará software que está sujeto a terminos de la licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise el acuerdo de licencia de usuario final (EULAs) anterior. <br/>Si usted no está de acuerdo con los términos, el procedimiento de configuración no podrá continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acuerdo de licencia</ h1> Este procedimiento de configuración se puede instalar software privativo que está sujeto a condiciones de licencia con el fin de proporcionar características adicionales y mejorar la experiencia del usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor revise los acuerdos de licencia de usuario final (EULAs) anterior.<br/>Si usted no está de acuerdo con los términos, el software privativo no se instalará, y las alternativas de código abierto se utilizarán en su lugar. @@ -1382,7 +1446,7 @@ El instalador terminará y se perderán todos los cambios. LicenseViewStep - + License Licencia @@ -1390,64 +1454,64 @@ El instalador terminará y se perderán todos los cambios. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>controlador %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>controladores gráficos de %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>plugin del navegador %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>codec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>paquete %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1455,33 +1519,33 @@ El instalador terminará y se perderán todos los cambios. LocalePage - + 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. - + Region: Región: - + Zone: Zona: - - + + &Change... &Cambiar... - + Set timezone to %1/%2.<br/> Definir la zona horaria como %1/%2.<br/> @@ -1489,38 +1553,92 @@ El instalador terminará y se perderán todos los cambios. LocaleViewStep - - Loading location data... - Cargando datos de ubicación... - - - + Location Ubicación + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generar identificación de la maquina. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nombre - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalación de Red. (Deshabilitada: No se puede acceder a la lista de paquetes, verifique su conección de red) - + Network Installation. (Disabled: Received invalid groups data) Instalación de Red. (Deshabilitada: Grupos de datos invalidos recibidos) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1551,12 +1669,12 @@ El instalador terminará y se perderán todos los cambios. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1564,117 +1682,117 @@ 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 @@ -1684,125 +1802,171 @@ El instalador terminará y se perderán todos los cambios. 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 + + + + + PackageChooserPage + + + Form + Formulario + + + + Product Name + + + + + TextLabel + Etiqueta de texto + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1835,47 +1999,86 @@ El instalador terminará y se perderán todos los cambios. ¿Cuál es su nombre? - + What name do you want to use to log in? ¿Qué nombre desea usar para acceder al sistema? - + Choose a password to keep your account safe. Seleccione una contraseña para mantener segura su cuenta. - + + <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>Escribe dos veces la misma contraseña para que se pueda comprobar si tiene errores. Una buena contraseña está formada por letras, números y signos de puntuación, tiene por lo menos ocho caracteres y hay que cambiarla cada cierto tiempo.</small> - + What is the name of this computer? ¿Cuál es el nombre de esta computadora? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Este nombre sera usado si hace esta computadora visible para otros en una red.</small> - + + Computer Name + + + + + + 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. Iniciar sesión automáticamente sin preguntar por la contraseña. - + Use the same password for the administrator account. Usar la misma contraseña para la cuenta de administrador. - + Choose a password for the administrator account. Elegir una contraseña para la cuenta de administrador. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Escribe dos veces la contraseña para comprobar si tiene errores</small> @@ -2040,107 +2243,107 @@ 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>esp</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. Un sistema de partición EFI es necesario para iniciar %1. <br/><br/>Para configurar un sistema de partición EFI, Regrese y seleccione o cree un sistema de archivos FAT32 con la bandera <strong>esp</strong> activada y el punto de montaje <strong>%2</strong>. <br/><br/>Puede continuar sin configurar una partición de sistema EFI, pero su sistema podría fallar al iniciar. - + EFI system partition flag not set Indicador de partición del sistema EFI no configurado - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 partición del sistema EFI es necesaria para iniciar% 1. <br/><br/>Una partición se configuró con el punto de montaje <strong>% 2</strong>, pero su bandera <strong>esp</strong> no está configurada. <br/>Para establecer el indicador, retroceda y edite la partición.<br/><br/> Puede continuar sin configurar el indicador, pero su sistema puede fallar al iniciar. - + 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 partitons to install on. @@ -2206,14 +2409,14 @@ El instalador terminará y se perderán todos los cambios. ProcessResult - + There was no output from the command. No hubo salida desde el comando. - + Output: @@ -2222,52 +2425,52 @@ Salida - + External command crashed. El comando externo ha fallado. - + Command <i>%1</i> crashed. El comando <i>%1</i> ha fallado. - + External command failed to start. El comando externo falló al iniciar. - + Command <i>%1</i> failed to start. El comando <i>%1</i> Falló al iniciar. - + Internal error when starting command. Error interno al iniciar el comando. - + Bad parameters for process job call. Parámetros erróneos en la llamada al proceso. - + External command failed to finish. Comando externo falla al finalizar - + Command <i>%1</i> failed to finish in %2 seconds. Comando <i>%1</i> falló al finalizar en %2 segundos. - + External command finished with errors. Comando externo finalizado con errores - + Command <i>%1</i> finished with exit code %2. Comando <i>%1</i> finalizó con código de salida %2. @@ -2316,16 +2519,50 @@ Salida - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2546,37 +2783,37 @@ Salida 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> Este equipo no cumple los requisitos mínimos para la instalación. %1.<br/>La instalación no puede continuar. <a href="#details">Detalles...</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. Este equipo no cumple alguno de los requisitos recomendados para la instalación %1.<br/>La instalación puede continuar, pero algunas funcionalidades podrían ser deshabilitadas. - + This program will ask you some questions and set up %2 on your computer. El programa le hará algunas preguntas y configurará %2 en su ordenador. - + For best results, please ensure that this computer: Para mejores resultados, por favor verifique que esta computadora: - + System requirements Requisitos de sistema @@ -2597,29 +2834,29 @@ Salida SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Establecer nombre del equipo <strong>%1</strong>. - + Setting hostname %1. Configurando nombre de host %1. - - + + Internal Error Error interno - - + + Cannot write hostname to target system No es posible escribir el hostname en el sistema de destino @@ -2760,22 +2997,22 @@ Salida El punto de montaje de root es %1 - + Cannot disable root account. No se puede deshabilitar la cuenta root. - + passwd terminated with error code %1. Contraseña terminada con un error de código %1. - + Cannot set password for user %1. No se puede definir contraseña para el usuario %1. - + usermod terminated with error code %1. usermod ha terminado con el código de error %1 @@ -2798,22 +3035,22 @@ Salida Ruta errónea: %1 - + Cannot set timezone. No se puede definir la zona horaria - + Link creation failed, target: %1; link name: %2 Fallo al crear el enlace, destino: %1; nombre del enlace: %2 - + Cannot set timezone, No se puede establer la zona horaria. - + Cannot open /etc/timezone for writing No se puede abrir /etc/timezone para escritura @@ -2859,22 +3096,22 @@ Salida TrackingInstallJob - + Installation feedback Retroalimentacion de la instalación - + Sending installation feedback. Envío de retroalimentación de instalación. - + Internal error in install-tracking. Error interno en el seguimiento de instalación. - + HTTP request timed out. Tiempo de espera en la solicitud HTTP agotado. @@ -2882,28 +3119,28 @@ Salida TrackingMachineNeonJob - + 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. @@ -2936,17 +3173,17 @@ Salida El seguimiento de instalación ayuda a% 1 a ver cuántos usuarios tienen, qué hardware instalan% 1 y (con las dos últimas opciones a continuación), obtener información continua sobre las aplicaciones preferidas. Para ver qué se enviará, haga clic en el ícono de ayuda al lado de cada área. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Al seleccionar esto usted enviará información acerca de su instalación y hardware. Esta informacion será <b>enviada unicamente una vez</b> después de terminada la instalación. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Al seleccionar esto usted enviará información <b>periodicamente</b> acerca de su instalación, hardware y aplicaciones a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Al seleccionar esto usted enviará información <b>regularmente</b> acerca de su instalación, hardware y patrones de uso de aplicaciones a %1. @@ -2954,7 +3191,7 @@ Salida TrackingViewStep - + Feedback Retroalimentación @@ -2962,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Tu nombre de usuario contiene caracteres no válidos. Solo se pueden usar letras minúsculas y números. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Tu nombre de equipo contiene caracteres no válidos Sólo se pueden usar letras, números y guiones. - - - - + Your passwords do not match! Las contraseñas no coinciden! @@ -3006,11 +3247,24 @@ Salida UsersViewStep - + Users Usuarios + + VariantModel + + + Key + + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3072,23 +3326,48 @@ Salida Formulario - + + + Select application and system language + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + &Release notes &Notas de lanzamiento - + &Known issues &Problemas Conocidos - - - Select language - Seleccione el idioma - - - + &Support &Soporte @@ -3098,42 +3377,42 @@ Salida &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenido al instalador de %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Bienvenido al instalador Calamares para %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Bienvenido al programa de instalación Calamares para %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Bienvenido a la configuración %1</h1> - + About %1 setup Acerca de la configuración %1 - + About %1 installer Acerca del instalador %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-2019 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. - + %1 support %1 Soporte @@ -3141,7 +3420,7 @@ Salida WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index d86113636..bcc26fab5 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Registro de arranque maestro de %1 - + Boot Partition Partición de arranque - + System Partition Partición del sistema - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulario - + GlobalStorage AlmacenamientoGlobal - + JobQueue ColadeTrabajos - + Modules Módulos - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Información de depuración @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instalar @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Hecho @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Ejecutar comando %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path La ruta del directorio de trabajo es incorrecta - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back &Atrás - - + + &Next &Próximo - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Error - + Installation Failed Falló la instalación @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. Formulario - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - - - - + Location Ubicación + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + Formulario + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. Parámetros erróneos para el trabajo en proceso. - + 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: Formulario - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index c5e83f825..3e58daea3 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1 Master Boot Record - + Boot Partition Käivituspartitsioon - + System Partition Süsteemipartitsioon - + Do not install a boot loader Ära paigalda käivituslaadurit - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Tühi leht @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Moodulid - + Type: Tüüp: - - + + none puudub - + Interface: Liides: - + Tools Tööriistad - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Silumisteave @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Paigalda @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Valmis @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Käivita käsklus %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Käivitan käsklust %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Käivitan %1 tegevust. - + Bad working directory path Halb töökausta tee - + Working directory %1 for python job %2 is not readable. Töökaust %1 python tööle %2 pole loetav. - + Bad main script file Halb põhiskripti fail - + Main script file %1 for python job %2 is not readable. Põhiskripti fail %1 python tööle %2 pole loetav. - + Boost.Python error in job "%1". Boost.Python viga töös "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Tagasi - - + + &Next &Edasi - - + + &Cancel &Tühista - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Tühista paigaldamine ilma süsteemi muutmata. - + Setup Failed - - Calamares Initialization Failed - Calamarese alglaadimine ebaõnnestus + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>Järgnevaid mooduleid ei saanud laadida: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Seadista kohe - + &Set up - + &Seadista - + &Install &Paigalda - + Setup is complete. Close the setup program. - + 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? Paigaldaja sulgub ning kõik muutused kaovad. - + + &Yes &Jah - + + &No &Ei - + &Close &Sulge - + Continue with setup? Jätka seadistusega? - + 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> - + &Install now &Paigalda kohe - + Go &back Mine &tagasi - + &Done &Valmis - + The installation is complete. Close the installer. Paigaldamine on lõpetatud. Sulge paigaldaja. - + Error Viga - + Installation Failed Paigaldamine ebaõnnestus @@ -371,40 +402,49 @@ Paigaldaja sulgub ning kõik muutused kaovad. CalamaresPython::Helper - + Unknown exception type Tundmatu veateade - + unparseable Python error mittetöödeldav Python'i viga - + unparseable Python traceback mittetöödeldav Python'i traceback - + Unfetchable Python error. Kättesaamatu Python'i viga. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 paigaldaja - + Show debug information Kuva silumisteavet @@ -435,7 +475,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. <strong>Käsitsi partitsioneerimine</strong><br/>Sa võid ise partitsioone luua või nende suurust muuta. - + Boot loader location: Käivituslaaduri asukoht: @@ -447,8 +487,8 @@ Paigaldaja sulgub ning kõik muutused kaovad. - - + + Current: Hetkel: @@ -463,96 +503,96 @@ Paigaldaja sulgub ning kõik muutused kaovad. <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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Paigaldaja sulgub ning kõik muutused kaovad. CommandList - - + + Could not run command. Käsku ei saanud käivitada. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. See käsklus käivitatakse hostikeskkonnas ning peab teadma juurteed, kuid rootMountPoint pole defineeritud. - + The command needs to know the user's name, but no username is defined. Käsklus peab teadma kasutaja nime, aga kasutajanimi pole defineeritud. @@ -620,7 +660,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. ContextualProcessJob - + Contextual Processes Job Kontekstipõhiste protsesside töö @@ -800,17 +840,17 @@ Paigaldaja sulgub ning kõik muutused kaovad. 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. @@ -957,7 +997,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. DummyCppJob - + Dummy C++ Job Testiv C++ töö @@ -1096,7 +1136,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. <Restart checkbox tooltip> - + <Restart checkbox tooltip> @@ -1124,12 +1164,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. - + <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. <h1>Paigaldamine ebaõnnestus</h1><br/>%1 ei paigaldatud sinu arvutisse.<br/>Veateade oli: %2. @@ -1144,7 +1184,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. Setup Complete - + Seadistus valmis @@ -1188,66 +1228,74 @@ Paigaldaja sulgub ning kõik muutused kaovad. 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 on ühendatud vooluallikasse - + The system is not plugged in to a power source. Süsteem pole ühendatud vooluallikasse. - + is connected to the Internet on ühendatud Internetti - + The system is not connected to the Internet. Süsteem pole ühendatud Internetti. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Paigaldaja pole käivitatud administraatoriõigustega. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Ekraan on paigaldaja kuvamiseks liiga väike. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Paigaldaja sulgub ning kõik muutused kaovad. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. InteractiveTerminalViewStep - + Script Skript @@ -1324,22 +1388,22 @@ Paigaldaja sulgub ning kõik muutused kaovad. LCLocaleDialog - + System locale setting Süsteemilokaali valik - + 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>. Süsteemilokaali valik mõjutab keelt ja märgistikku teatud käsurea kasutajaliideste elementidel.<br/>Praegune valik on <strong>%1</strong>. - + &Cancel &Tühista - + &OK &OK @@ -1352,27 +1416,27 @@ Paigaldaja sulgub ning kõik muutused kaovad. Form - + I accept the terms and conditions above. Ma nõustun alljärgevate tingimustega. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Litsensileping</h1>See seadistusprotseduur paigaldab omandiõigusega tarkvara, mis vastab litsensitingimustele. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei saa seadistusprotseduur jätkata. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Litsensileping</h1>See seadistusprotseduur võib paigaldada omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei paigaldata omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. @@ -1380,7 +1444,7 @@ Paigaldaja sulgub ning kõik muutused kaovad. LicenseViewStep - + License Litsents @@ -1388,64 +1452,64 @@ Paigaldaja sulgub ning kõik muutused kaovad. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 draiver</strong><br/>autorilt %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 graafikadraiver</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 brauseriplugin</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 koodek</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakett</strong><br/><font color="Grey">autorilt %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">autorilt %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Paigaldaja sulgub ning kõik muutused kaovad. LocalePage - + 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. - + Region: Regioon: - + Zone: Tsoon: - - + + &Change... &Muuda... - + Set timezone to %1/%2.<br/> Määra ajatsooniks %1/%2.<br/> @@ -1487,38 +1551,92 @@ Paigaldaja sulgub ning kõik muutused kaovad. LocaleViewStep - - Loading location data... - Laadin asukohaandmeid... - - - + Location Asukoht + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Genereeri masina-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nimi - + Description Kirjeldus - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Võrgupaigaldus. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) - + Network Installation. (Disabled: Received invalid groups data) Võrgupaigaldus. (Keelatud: vastu võetud sobimatud grupiandmed) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Paigaldaja sulgub ning kõik muutused kaovad. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Paigaldaja sulgub ning kõik muutused kaovad. 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 + + + + + PackageChooserPage + + + Form + Form + + + + Product Name + + + + + TextLabel + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Paigaldaja sulgub ning kõik muutused kaovad. Mis on su nimi? - + What name do you want to use to log in? Mis nime soovid sisselogimiseks kasutada? - + Choose a password to keep your account safe. Vali parool, et hoida oma konto turvalisena. - + + <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>Sisesta sama parool kaks korda, et kontrollida kirjavigade puudumist. Hea parool sisaldab segu tähtedest, numbritest ja kirjavahemärkidest, peaks olema vähemalt kaheksa märki pikk ja seda peaks muutma regulaarselt.</small> - + What is the name of this computer? Mis on selle arvuti nimi? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Seda nime kasutatakse, kui teed arvuti võrgus teistele nähtavaks.</small> - + + Computer Name + + + + + + 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. Logi automaatselt sisse ilma parooli küsimata. - + Use the same password for the administrator account. Kasuta sama parooli administraatorikontole. - + Choose a password for the administrator account. Vali administraatori kontole parool. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Sisesta sama parooli kaks korda, et kontrollida kirjavigade puudumist.</small> @@ -2038,107 +2241,107 @@ 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>esp</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 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Et seadistada EFI süsteemipartitsiooni, mine tagasi ja vali või loo FAT32 failisüsteem sildiga <strong>esp</strong> ja monteerimispunktiga <strong>%2</strong>.<br/><br/>Sa võid jätkata ilma EFI süsteemipartitsiooni seadistamata aga su süsteem ei pruugi käivituda. - + EFI system partition flag not set EFI süsteemipartitsiooni silt pole määratud - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 käivitamiseks on vajalik EFI süsteemipartitsioon.<br/><br/>Partitsioon seadistati monteerimispunktiga <strong>%2</strong> aga sellel ei määratud <strong>esp</strong> silti.<br/>Sildi määramiseks mine tagasi ja muuda partitsiooni.<br/><br/>Sa võid jätkata ilma silti seadistamata aga su süsteem ei pruugi käivituda. - + 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 partitons to install on. @@ -2204,14 +2407,14 @@ Paigaldaja sulgub ning kõik muutused kaovad. ProcessResult - + There was no output from the command. Käsul polnud väljundit. - + Output: @@ -2220,52 +2423,52 @@ Väljund: - + External command crashed. Väline käsk jooksis kokku. - + Command <i>%1</i> crashed. Käsk <i>%1</i> jooksis kokku. - + External command failed to start. Välise käsu käivitamine ebaõnnestus. - + Command <i>%1</i> failed to start. Käsu <i>%1</i> käivitamine ebaõnnestus. - + Internal error when starting command. Käsu käivitamisel esines sisemine viga. - + Bad parameters for process job call. Protsessi töö kutsel olid halvad parameetrid. - + External command failed to finish. Väline käsk ei suutnud lõpetada. - + Command <i>%1</i> failed to finish in %2 seconds. Käsk <i>%1</i> ei suutnud lõpetada %2 sekundi jooksul. - + External command finished with errors. Väline käsk lõpetas vigadega. - + Command <i>%1</i> finished with exit code %2. Käsk <i>%1</i> lõpetas sulgemiskoodiga %2. @@ -2314,16 +2517,50 @@ Väljund: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2543,37 +2780,37 @@ Väljund: 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> See arvuti ei rahulda %1 paigldamiseks vajalikke minimaaltingimusi.<br/>Paigaldamine ei saa jätkuda. <a href="#details">Detailid...</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. See arvuti ei rahulda mõnda %1 paigaldamiseks soovitatud tingimust.<br/>Paigaldamine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. - + This program will ask you some questions and set up %2 on your computer. See programm küsib sult mõned küsimused ja seadistab %2 sinu arvutisse. - + For best results, please ensure that this computer: Parimate tulemuste jaoks palun veendu, et see arvuti: - + System requirements Süsteeminõudmised @@ -2594,29 +2831,29 @@ Väljund: SetHostNameJob - + Set hostname %1 Määra hostinimi %1 - + Set hostname <strong>%1</strong>. Määra hostinimi <strong>%1</strong>. - + Setting hostname %1. Määran hostinime %1. - - + + Internal Error Sisemine viga - - + + Cannot write hostname to target system Hostinime ei saa sihtsüsteemile kirjutada @@ -2757,22 +2994,22 @@ Väljund: rootMountPoint on %1 - + Cannot disable root account. Juurkasutajat ei saa keelata. - + passwd terminated with error code %1. passwd peatatud veakoodiga %1. - + Cannot set password for user %1. Kasutajale %1 ei saa parooli määrata. - + usermod terminated with error code %1. usermod peatatud veateatega %1. @@ -2795,22 +3032,22 @@ Väljund: Halb tee: %1 - + Cannot set timezone. Ajatsooni ei saa määrata. - + Link creation failed, target: %1; link name: %2 Lingi loomine ebaõnnestus, siht: %1; lingi nimi: %2 - + Cannot set timezone, Ajatsooni ei saa määrata, - + Cannot open /etc/timezone for writing /etc/timezone ei saa kirjutamiseks avada @@ -2856,22 +3093,22 @@ Väljund: TrackingInstallJob - + Installation feedback Paigalduse tagasiside - + Sending installation feedback. Saadan paigalduse tagasisidet. - + Internal error in install-tracking. Paigaldate jälitamisel esines sisemine viga. - + HTTP request timed out. HTTP taotlusel esines ajalõpp. @@ -2879,28 +3116,28 @@ Väljund: TrackingMachineNeonJob - + 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. @@ -2933,17 +3170,17 @@ Väljund: Paigalduse jälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 paigaldavad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Seda valides saadad sa teavet oma paigalduse ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale paigalduse lõppu. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma paigalduse, riistvara ja rakenduste kohta. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma paigalduse, riistvara, rakenduste ja kasutusharjumuste kohta. @@ -2951,7 +3188,7 @@ Väljund: TrackingViewStep - + Feedback Tagasiside @@ -2959,43 +3196,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Sinu kasutajanimi sisaldab sobimatuid tähemärke. Lubatud on ainult väiketähed ja numbrid. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Sinu hostinimi sisaldab sobimatuid tähemärke. Ainult tähed, numbrid ja sidekriipsud on lubatud. - - - - + Your passwords do not match! Sinu paroolid ei ühti! @@ -3003,11 +3244,24 @@ Väljund: UsersViewStep - + Users Kasutajad + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3069,23 +3323,48 @@ Väljund: Form - - &Release notes - &Väljalaskemärkmed - - - - &Known issues - &Teadaolevad vead - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Väljalaskemärkmed + + + + &Known issues + &Teadaolevad vead + + + &Support &Tugi @@ -3095,42 +3374,42 @@ Väljund: &Teave - + <h1>Welcome to the %1 installer.</h1> <h1>Tere tulemast %1 paigaldajasse.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Tere tulemast Calamares'i paigaldajasse %1 jaoks.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer Teave %1 paigaldaja kohta - + <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-2019 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. - + %1 support %1 tugi @@ -3138,7 +3417,7 @@ Väljund: WelcomeViewStep - + Welcome Tervist diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 29824da9e..a95c90977 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1-(e)n Master Boot Record - + Boot Partition Abio partizioa - + System Partition Sistema-partizioa - + Do not install a boot loader Ez instalatu abio kargatzailerik - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Orri zuria @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulario - + GlobalStorage Biltegiratze globala - + JobQueue LanIlara - + Modules Moduluak - + Type: Mota: - - + + none Ezer ez - + Interface: Interfasea: - + Tools Tresnak - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Arazte informazioa @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instalatu @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Egina @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - %1 %2 komandoa abiarazi + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 %1 %2 komandoa exekutatzen @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. %1 eragiketa burutzen. - + Bad working directory path Direktorio ibilbide ezegokia - + Working directory %1 for python job %2 is not readable. %1 lanerako direktorioa %2 python lanak ezin du irakurri. - + Bad main script file Script fitxategi nagusi okerra - + Main script file %1 for python job %2 is not readable. %1 script fitxategi nagusia ezin da irakurri python %2 lanerako - + Boost.Python error in job "%1". Boost.Python errorea "%1" lanean. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Atzera - - + + &Next &Hurrengoa - - + + &Cancel &Utzi - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Instalazioa bertan behera utsi da sisteman aldaketarik gabe. - + Setup Failed - - Calamares Initialization Failed - Calamares instalazioak huts egin du + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/> Ondorengo moduluak ezin izan dira kargatu: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install &Instalatu - + Setup is complete. Close the setup program. - + 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? Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - + + &Yes &Bai - + + &No &Ez - + &Close &Itxi - + Continue with setup? Ezarpenarekin jarraitu? - + 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> - + &Install now &Instalatu orain - + Go &back &Atzera - + &Done E&ginda - + The installation is complete. Close the installer. Instalazioa burutu da. Itxi instalatzailea. - + Error Akatsa - + Installation Failed Instalazioak huts egin du @@ -371,40 +402,49 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. CalamaresPython::Helper - + Unknown exception type Salbuespen-mota ezezaguna - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Instalatzailea - + Show debug information Erakutsi arazte informazioa @@ -435,7 +475,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. <strong>Eskuz partizioak landu</strong><br/>Zure kasa sortu edo tamainaz alda dezakezu partizioak. - + Boot loader location: Abio kargatzaile kokapena: @@ -447,8 +487,8 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - - + + Current: Unekoa: @@ -463,96 +503,96 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. <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. - + <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">ezbatuko</font> ditu biltegiratze-gailutik. - + 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 - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. CommandList - - + + Could not run command. Ezin izan da komandoa exekutatu. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komandoa exekutatzen da ostalariaren inguruan eta erro bidea jakin behar da baina erroaren muntaketa punturik ez da zehaztu. - + The command needs to know the user's name, but no username is defined. Komandoak erabiltzailearen izena jakin behar du baina ez da zehaztu erabiltzaile-izenik. @@ -620,7 +660,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. 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. @@ -957,7 +997,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. DummyCppJob - + Dummy C++ Job Dummy C++ lana @@ -1124,12 +1164,12 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - + <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. @@ -1188,66 +1228,74 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. 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. Sistema ez dago indar iturri batetara konektatuta. - + is connected to the Internet Internetera konektatuta dago - + The system is not connected to the Internet. Sistema ez dago Internetera konektatuta. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Instalatzailea ez dabil exekutatzen administrari eskubideekin. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Pantaila txikiegia da instalatzailea erakusteko. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. InteractiveTerminalViewStep - + Script Script @@ -1324,22 +1388,22 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LCLocaleDialog - + System locale setting Sistemaren locale ezarpena - + 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 &Utzi - + &OK &Ados @@ -1352,27 +1416,27 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Formulario - + I accept the terms and conditions above. Goiko baldintzak onartzen ditut. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LicenseViewStep - + License Lizentzia @@ -1388,64 +1452,64 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LocalePage - + 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. - + Region: Eskualdea: - + Zone: Zonaldea: - - + + &Change... &Aldatu... - + Set timezone to %1/%2.<br/> Ordu-zonaldea %1%2-ra ezarri da.<br/> @@ -1487,38 +1551,92 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. LocaleViewStep - - Loading location data... - Kokapen datuak kargatzen... - - - + Location Kokapena + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Sortu makina-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Izena - + Description Deskribapena - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. - + 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 + + + + + PackageChooserPage + + + Form + Formulario + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. Zein da zure izena? - + What name do you want to use to log in? Zein izen erabili nahi duzu saioa hastean? - + Choose a password to keep your account safe. Aukeratu pasahitza zure kontua babesteko. - + + <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>Pasahitza berbera birritan sartu, idazketa akatsak ez dauden egiaztatzeko. Pasahitza on batek letrak, zenbakiak eta puntuazio sinboloak izan behar ditu, zortzi karaktere gutxienez izan behar ditu eta tarteka-marteka aldatu behar izango litzateke.</small> - + What is the name of this computer? Zein da ordenagailu honen izena? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Izen hau erakutsiko da sarean zure ordenagailua besteei erakustean.</small> - + + Computer Name + + + + + + 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. Hasi saioa automatikoki pasahitza eskatu gabe. - + Use the same password for the administrator account. Erabili pasahitz bera administratzaile kontuan. - + Choose a password for the administrator account. Aukeratu pasahitz bat administratzaile kontuarentzat. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Sartu pasahitza birritan, honela tekleatze erroreak egiaztatzeko.</small> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,13 +2407,13 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. ProcessResult - + There was no output from the command. - + Output: @@ -2219,52 +2422,52 @@ Irteera: - + External command crashed. Kanpo-komandoak huts egin du. - + Command <i>%1</i> crashed. <i>%1</i> komandoak huts egin du. - + External command failed to start. Ezin izan da %1 kanpo-komandoa abiarazi. - + Command <i>%1</i> failed to start. Ezin izan da <i>%1</i> komandoa abiarazi. - + Internal error when starting command. Barne-akatsa komandoa abiarazterakoan. - + Bad parameters for process job call. - + External command failed to finish. Kanpo-komandoa ez da bukatu. - + Command <i>%1</i> failed to finish in %2 seconds. - + External command finished with errors. Kanpo-komandoak akatsekin bukatu da. - + Command <i>%1</i> finished with exit code %2. @@ -2313,16 +2516,50 @@ Irteera: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2542,37 +2779,37 @@ Irteera: 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> Konputagailu honek ez dauzka gutxieneko eskakizunak %1 instalatzeko. <br/>Instalazioak ezin du jarraitu. <a href="#details">Xehetasunak...</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. Konputagailu honek ez du betetzen gomendatutako zenbait eskakizun %1 instalatzeko. <br/>Instalazioak jarraitu ahal du, baina zenbait ezaugarri desgaituko dira. - + This program will ask you some questions and set up %2 on your computer. Konputagailuan %2 ezartzeko programa honek hainbat galdera egingo dizkizu. - + For best results, please ensure that this computer: Emaitza egokienak lortzeko, ziurtatu ordenagailu honek baduela: - + System requirements Sistemaren betebeharrak @@ -2593,29 +2830,29 @@ Irteera: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Barne errorea - - + + Cannot write hostname to target system @@ -2756,22 +2993,22 @@ Irteera: root Muntatze Puntua %1 da - + Cannot disable root account. Ezin da desgaitu root kontua. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2794,22 +3031,22 @@ Irteera: Bide okerra: %1 - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Ezin da ezarri ordu-zonaldea - + Cannot open /etc/timezone for writing @@ -2855,22 +3092,22 @@ Irteera: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2878,28 +3115,28 @@ Irteera: TrackingMachineNeonJob - + 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. @@ -2932,17 +3169,17 @@ Irteera: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2950,7 +3187,7 @@ Irteera: TrackingViewStep - + Feedback Feedback @@ -2958,43 +3195,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Zure erabiltzaile-izena baliodun ez diren karaktereak ditu. Letra xeheak eta zenbakiak bakarrik onartzen dira. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Zure ostalariak baliodun ez diren karaktereak ditu. Letrak, zenbakiak eta marratxoak bakarrik onartzen dira. - - - - + Your passwords do not match! Pasahitzak ez datoz bat! @@ -3002,11 +3243,24 @@ Irteera: UsersViewStep - + Users Erabiltzaileak + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3068,23 +3322,48 @@ Irteera: Formulario - - &Release notes - - - - - &Known issues - &Arazo ezagunak - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + &Arazo ezagunak + + + &Support &Laguntza @@ -3094,42 +3373,42 @@ Irteera: Honi &buruz - + <h1>Welcome to the %1 installer.</h1> <h1>Ongi etorri %1 instalatzailera.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer %1 instalatzaileari buruz - + <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-2019 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. - + %1 support %1 euskarria @@ -3137,7 +3416,7 @@ Irteera: WelcomeViewStep - + Welcome Ongi etorri diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index 74e4a08d7..277c58558 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index ee397d052..b65b7cea1 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1:n MBR - + Boot Partition Käynnistysosio - + System Partition Järjestelmäosio - + Do not install a boot loader - Älä asenna käynnistyksenlataajaa + Älä asenna käynnistyslatainta - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Tyhjä sivu @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Lomake - + GlobalStorage Globaali-tallennus - + JobQueue Työjono - + Modules Moduulit - + Type: Tyyppi: - - + + none tyhjä - + Interface: Käyttöliittymä: - + Tools Työkalut - + + Reload Stylesheet + Virkistä tyylisivu + + + + Widget Tree + Widget puu + + + Debug information Virheenkorjaustiedot @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Määritä - + Install Asenna @@ -123,7 +133,7 @@ Työ epäonnistui (%1) - + Programmed job failure was explicitly requested. Ohjelmoitua työn epäonnistumista pyydettiin erikseen. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Valmis @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Suorita komento %1 %2 + Run command '%1' in target system. + Suorita komento '%1' kohdejärjestelmässä. - + + Run command '%1'. + Suorita komento '%1'. + + + Running command %1 %2 Suoritetaan komentoa %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Suoritetaan %1 toimenpidettä. - + Bad working directory path Epäkelpo työskentelyhakemiston polku - + Working directory %1 for python job %2 is not readable. Työkansio %1 pythonin työlle %2 ei ole luettavissa. - + Bad main script file Huono pää-skripti tiedosto - + Main script file %1 for python job %2 is not readable. Pääskriptitiedosto %1 pythonin työlle %2 ei ole luettavissa. - + Boost.Python error in job "%1". Boost.Python virhe työlle "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + Odotetaan %n moduuli(t).Odotetaan %n moduuli(t). - + (%n second(s)) - + (%n sekunttia(s))(%n sekunttia(s)) - + System-requirements checking is complete. Järjestelmävaatimusten tarkistus on valmis. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Takaisin - - + + &Next &Seuraava - - + + &Cancel &Peruuta - - + 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. - + Setup Failed Asennus epäonnistui - + + Would you like to paste the install log to the web? + Haluatko liittää asennuslokin verkkoon? + + + + 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 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> - + &Set up now &Määritä nyt - + &Set up &Määritä - + &Install &Asenna - + Setup is complete. Close the setup program. Asennus on valmis. Sulje asennusohjelma. - + 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? Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + + &Yes &Kyllä - + + &No &Ei - + &Close &Sulje - + Continue with setup? Jatka asennusta? - + 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> - + &Install now &Asenna nyt - + Go &back Mene &takaisin - + &Done &Valmis - + The installation is complete. Close the installer. Asennus on valmis. Sulje asennusohjelma. - + Error Virhe - + Installation Failed Asennus Epäonnistui @@ -372,40 +403,50 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CalamaresPython::Helper - + Unknown exception type Tuntematon poikkeustyyppi - + unparseable Python error jäsentämätön Python virhe - + unparseable Python traceback jäsentämätön Python jäljitys - + Unfetchable Python error. Python virhettä ei voitu hakea. + + CalamaresUtils + + + Install log posted to: +%1 + Asennuksen loki lähetetty: +%1 + + CalamaresWindow - + %1 Setup Program %1 Asennusohjelma - + %1 Installer %1 Asennusohjelma - + Show debug information Näytä virheenkorjaustiedot @@ -436,7 +477,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. <strong>Manuaalinen osiointi </strong><br/>Voit luoda tai muuttaa osioita itse. - + Boot loader location: Käynnistyksen lataajan sijainti: @@ -448,8 +489,8 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - - + + Current: Nykyinen: @@ -464,96 +505,96 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CommandList - - + + Could not run command. Komentoa ei voi suorittaa. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komento toimii isäntäympäristössä ja sen täytyy tietää juuren polku, mutta root-liityntä kohtaa ei ole määritetty. - + The command needs to know the user's name, but no username is defined. Komennon on tiedettävä käyttäjän nimi, mutta käyttäjän tunnusta ei ole määritetty. @@ -621,7 +662,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ContextualProcessJob - + Contextual Processes Job Prosessien yhteydessä tehtävät @@ -801,17 +842,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. 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. @@ -958,7 +999,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. DummyCppJob - + Dummy C++ Job Dummy C++ -työ @@ -1125,12 +1166,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. <html><head/><body><p>Kun tämä valintaruutu on valittuna, järjestelmä käynnistyy heti, kun napsautat <span style="font-style:italic;">Valmis</span> tai suljet asentimen.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Asennus epäonnistui</h1><br/>%1 ei ole määritetty tietokoneellesi.<br/> Virhesanoma oli: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Asennus epäonnistui </h1><br/>%1 ei ole asennettu tietokoneeseesi.<br/>Virhesanoma oli: %2. @@ -1189,66 +1230,74 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. GeneralRequirements - + has at least %1 GiB available drive space vähintään %1 GiB vapaata levytilaa - + There is not enough drive space. At least %1 GiB is required. Levytilaa ei ole riittävästi. Vähintään %1 GiB tarvitaan. - + has at least %1 GiB working memory vähintään %1 GiB työmuistia - + The system does not have enough working memory. At least %1 GiB is required. Järjestelmässä ei ole tarpeeksi työmuistia. Vähintään %1 GiB vaaditaan. - + is plugged in to a power source on yhdistetty virtalähteeseen - + The system is not plugged in to a power source. Järjestelmä ei ole kytketty virtalähteeseen. - + is connected to the Internet on yhdistetty internetiin - + The system is not connected to the Internet. Järjestelmä ei ole yhteydessä internetiin. - + The setup program is not running with administrator rights. Asennus -ohjelma ei ole käynnissä järjestelmänvalvojan oikeuksin. - + The installer is not running with administrator rights. Asennus -ohjelma ei ole käynnissä järjestelmänvalvojan oikeuksin. - + The screen is too small to display the setup program. Näyttö on liian pieni, jotta asennus -ohjelma voidaan näyttää. - + The screen is too small to display the installer. Näyttö on liian pieni asentajan näyttämiseksi. + + HostInfoJob + + + Collecting information about your machine. + Kerätään tietoja laitteesta. + + IDJob @@ -1275,6 +1324,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Tiedostoon ei voitu kirjoittaa <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Initramfs luominen mkinitcpion avulla. + + + + InitramfsJob + + + Creating initramfs. + Luodaan initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. InteractiveTerminalViewStep - + Script Skripti @@ -1325,22 +1390,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LCLocaleDialog - + System locale setting Järjestelmän maa-asetus - + 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>. Järjestelmän kieli asetus vaikuttaa joidenkin komentorivin käyttöliittymän kieleen ja merkistön käyttöön.<br/>Nykyinen asetus on <strong>%1</strong>. - + &Cancel &Peruuta - + &OK &OK @@ -1353,27 +1418,27 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Lomake - + I accept the terms and conditions above. Hyväksyn yllä olevat ehdot ja edellytykset. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Lisenssisopimus</h1>Tämä asennustoiminto asentaa ohjelmistoja, joihin sovelletaan lisenssiehtoja. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Katso yllä olevat käyttöoikeussopimukset (EULA).<br/>Jos et hyväksy ehtoja, asennus ei voi jatkua. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Lisenssisopimus</h1>Tämä asennustoiminto voi asentaa tekijänoikeuksin rajattua ohjelmistoja, joihin sovelletaan lisenssiehtoja, jotta voidaan tarjota lisäominaisuuksia ja parantaa käyttäjäkokemusta. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Katso yllä olevat käyttöoikeussopimukset (EULA).<br/>Jos et hyväksy ehtoja, tekijänoikeuksin rajattua ohjelmistoa ei asenneta, ja avoimen lähdekoodin vaihtoehtoja käytetään sen sijaan. @@ -1381,7 +1446,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LicenseViewStep - + License Lisenssi @@ -1389,64 +1454,64 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 ajuri</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 näytönohjaimet</strong><br/><font color="Grey">- %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 selaimen laajennus</strong><br/><font color="Grey">- %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodekki</strong><br/><font color="Grey">- %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paketti</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> - + Shows the complete license text Näyttää täydellisen lisenssin tekstin - + Hide license text Piilota lisenssin teksti - + Show license agreement Näytä lisenssisopimus - + Hide license agreement Piilota lisenssisopimus - + Opens the license agreement in a browser window. Avaa lisenssisopimus selaimessa. - + <a href="%1">View license agreement</a> <a href="%1">Näytä lisenssisopimus</a> @@ -1454,33 +1519,33 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LocalePage - + 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. - + Region: Alue: - + Zone: Vyöhyke: - - + + &Change... &Vaihda... - + Set timezone to %1/%2.<br/> Aseta aikavyöhyke %1/%2.<br/> @@ -1488,38 +1553,92 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LocaleViewStep - - Loading location data... - Ladataan sijainnin tietoja... - - - + Location Sijainti + + LuksBootKeyFileJob + + + Configuring LUKS key file. + LUKS-avaintiedoston määrittäminen. + + + + + No partitions are defined. + Osioita ei ole määritelty. + + + + + + Encrypted rootfs setup error + Salattu rootfs asennusvirhe + + + + Root partition %1 is LUKS but no passphrase has been set. + Juuriosio %1 on LUKS, mutta salasanaa ei ole asetettu. + + + + Could not create LUKS key file for root partition %1. + LUKS-avaintiedostoa ei voitu luoda juuriosioon %1. + + + + Could configure LUKS key file on partition %1. + Voit määrittää LUKS-avaimen osioon %1. + + + + MachineIdJob + + + Generate machine-id. + Luo koneen-id. + + + + Configuration Error + Määritysvirhe + + + + No root mount point is set for MachineId. + Koneen tunnukselle ei ole asetettu root kiinnityskohtaa. + + NetInstallPage - + Name Nimi - + Description Kuvaus - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Verkkoasennus. (Ei käytössä: Pakettiluetteloita ei voi hakea, tarkista verkkoyhteys) - + Network Installation. (Disabled: Received invalid groups data) Verkkoasennus. (Ei käytössä: Vastaanotettiin virheellisiä ryhmän tietoja) + + + Network Installation. (Disabled: Incorrect configuration) + Verkko asennus. (Ei käytössä: virheellinen määritys) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. OEMViewStep - + OEM Configuration OEM-kokoonpano - + Set the OEM Batch Identifier to <code>%1</code>. Aseta OEM valmistajan erän tunnus <code>%1</code>. @@ -1563,117 +1682,117 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. 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ä @@ -1683,125 +1802,171 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. 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ä + + + + PackageChooserPage + + + Form + Lomake + + + + Product Name + Tuotteen nimi + + + + TextLabel + Nimilappu + + + + Long Product Description + Pitkä tuotekuvaus + + + + Package Selection + Paketin valinta + + + + Please pick a product from the list. The selected product will be installed. + Ole hyvä ja valitse tuote luettelosta. Valittu tuote asennetaan. + + + + PackageChooserViewStep + + + Packages + Paketit + Page_Keyboard @@ -1834,47 +1999,86 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Mikä on nimesi? - + What name do you want to use to log in? Mitä nimeä haluat käyttää sisäänkirjautumisessa? - + Choose a password to keep your account safe. Valitse salasana pitääksesi tilisi turvallisena. - + + <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>Syötä salasana kahdesti välttääksesi kirjoitusvirheitä. Hyvän salasanan tulee sisältää sekoitetusti kirjaimia, numeroita ja erikoismerkkejä. Salasanan täytyy olla vähintään kahdeksan merkin mittainen ja tulee vaihtaa säännöllisin väliajoin.</small> - + What is the name of this computer? Mikä on tämän tietokoneen nimi? - + + Your Full Name + Koko nimesi + + + + login + Kirjaudu + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Tätä nimeä tullaan käyttämään mikäli asetat tietokoneen näkyviin muille verkossa.</small> - + + Computer Name + Tietokoneen nimi + + + + + Password + Salasana + + + + + Repeat Password + Toista salasana + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Kun tämä valintaruutu on valittu, salasanan vahvuus tarkistetaan, etkä voi käyttää heikkoa salasanaa. + + + + Require strong passwords. + Vaaditaan vahvat salasanat. + + + Log in automatically without asking for the password. Kirjaudu automaattisesti ilman salasanaa. - + Use the same password for the administrator account. Käytä pääkäyttäjän tilillä samaa salasanaa. - + Choose a password for the administrator account. Valitse salasana pääkäyttäjän tilille. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Syötä salasana kahdesti välttääksesi kirjoitusvirheitä.</small> @@ -2039,107 +2243,107 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. 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>esp</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äosio on välttämätön käynnistystä varten %1.<br/><br/>Jos haluat tehdä EFI-järjestelmäosion, mene takaisin ja luo FAT32-tiedostojärjestelmä, jossa on<strong>esp</strong> lippu yhdistettynä asennuspisteen liitokseen <strong>%2</strong>.<br/><br/>Voit jatkaa ilman EFI-järjestelmäosiota, mutta järjestelmä ei ehkä käynnisty. - + EFI system partition flag not set EFI-järjestelmäosion lippua ei ole asetettu - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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äosio on välttämätön käynnistystä varten %1.<br/><br/>Osio määritettiin liittymäpisteellä, <strong>%2</strong> mutta sen <strong>esp</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. - + 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 partitons to install on. Asennettavia osioita ei ole. @@ -2205,14 +2409,14 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ProcessResult - + There was no output from the command. Komentoa ei voitu ajaa. - + Output: @@ -2221,52 +2425,52 @@ Ulostulo: - + External command crashed. Ulkoinen komento kaatui. - + Command <i>%1</i> crashed. Komento <i>%1</i> kaatui. - + External command failed to start. Ulkoisen komennon käynnistäminen epäonnistui. - + Command <i>%1</i> failed to start. Komennon <i>%1</i> käynnistäminen epäonnistui. - + Internal error when starting command. Sisäinen virhe käynnistettäessä komentoa. - + Bad parameters for process job call. Huonot parametrit prosessin kutsuun. - + External command failed to finish. Ulkoinen komento ei onnistunut. - + Command <i>%1</i> failed to finish in %2 seconds. Komento <i>%1</i> epäonnistui %2 sekunnissa. - + External command finished with errors. Ulkoinen komento päättyi virheisiin. - + Command <i>%1</i> finished with exit code %2. Komento <i>%1</i> päättyi koodiin %2. @@ -2315,16 +2519,50 @@ Ulostulo: (ei liitoskohtaa) - + Requirements checking for module <i>%1</i> is complete. Moduulin vaatimusten tarkistaminen <i>%1</i> on valmis. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Ei tuotetta + + + + No description provided. + Kuvausta ei ole. + + + + + + + + File not found + Tiedostoa ei löytynyt + + + + Path <pre>%1</pre> must be an absolute path. + Polku <pre>%1</pre> täytyy olla ehdoton polku. + + + + Could not create new random file <pre>%1</pre>. + Uutta satunnaista tiedostoa ei voitu luoda <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Satunnaista tiedostoa ei voitu lukea <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,38 +2782,38 @@ Ulostulo: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Tämä tietokone ei täytä vähimmäisvaatimuksia, %1.<br/>Asennusta ei voi jatkaa. <a href="#details">Yksityiskohdat...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Tämä tietokone ei täytä asennuksen vähimmäisvaatimuksia, %1.<br/>Asennus ei voi jatkua. <a href="#details">Yksityiskohdat...</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. Tämä tietokone ei täytä joitakin suositeltuja vaatimuksia %1.<br/>Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Tämä tietokone ei täytä joitakin suositeltuja vaatimuksia %1. Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. - + This program will ask you some questions and set up %2 on your computer. Tämä ohjelma kysyy joitakin kysymyksiä %2 ja asentaa tietokoneeseen. - + For best results, please ensure that this computer: Saadaksesi parhaan lopputuloksen, tarkista että tämä tietokone: - + System requirements Järjestelmävaatimukset @@ -2596,29 +2834,29 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. SetHostNameJob - + Set hostname %1 Aseta isäntänimi %1 - + Set hostname <strong>%1</strong>. Aseta koneellenimi <strong>%1</strong>. - + Setting hostname %1. Asetetaan koneellenimi %1. - - + + Internal Error Sisäinen Virhe - - + + Cannot write hostname to target system Ei voida kirjoittaa isäntänimeä kohdejärjestelmään. @@ -2759,22 +2997,22 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.rootMountPoint on %1 - + Cannot disable root account. Root-tiliä ei voi poistaa. - + passwd terminated with error code %1. passwd päättyi virhekoodiin %1. - + Cannot set password for user %1. Salasanaa ei voi asettaa käyttäjälle %1. - + usermod terminated with error code %1. usermod päättyi virhekoodilla %1. @@ -2797,22 +3035,22 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.Huono polku: %1 - + Cannot set timezone. Aikavyöhykettä ei voi asettaa. - + Link creation failed, target: %1; link name: %2 Linkin luominen kohteeseen %1 epäonnistui; linkin nimi: %2 - + Cannot set timezone, Aikavyöhykettä ei voi määrittää, - + Cannot open /etc/timezone for writing Ei voi avata /etc/timezone @@ -2858,22 +3096,22 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. TrackingInstallJob - + Installation feedback Asennuksen palaute - + Sending installation feedback. Lähetetään asennuksen palautetta. - + Internal error in install-tracking. Sisäinen virhe asennuksen seurannassa. - + HTTP request timed out. HTTP -pyyntö aikakatkaistiin. @@ -2881,28 +3119,28 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. TrackingMachineNeonJob - + 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. @@ -2935,17 +3173,17 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.Asentamalla seuranta autat %1 näkemään, kuinka monta käyttäjää heillä on, mitä laitteita he asentavat %1 ja (kahdella viimeisellä vaihtoehdolla), saat jatkuvaa tietoa suosituista sovelluksista. Jos haluat nähdä, mitä tietoa lähetetään, napsauta kunkin alueen vieressä olevaa ohjekuvaketta. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Kun valitset tämän, lähetät tietoja asennuksesta ja laitteistosta. <b>Nämä tiedot lähetetään vain kerran</b> asennuksen päättymisen jälkeen. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Kun valitset tämän, lähetät <b>määräajoin </b> tietoja asennuksesta, laitteistosta ja sovelluksista osoitteeseen %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Kun valitset tämän, lähetät <b>säännöllisesti </b> tietoja asennuksesta, laitteistosta, sovelluksista ja käyttötavoista osoitteeseen %1. @@ -2953,7 +3191,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. TrackingViewStep - + Feedback Palautetta @@ -2961,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Käyttäjätunnuksesi sisältää virheellisiä merkkejä. Vain pienet kirjaimet ja numerot ovat sallittuja. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Vain 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ä. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Isäntänimesi sisältää epäkelpoja merkkejä. Vain kirjaimet, numerot ja väliviivat ovat sallittuja. - - - - + Your passwords do not match! Salasanasi eivät täsmää! @@ -3005,11 +3247,24 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. UsersViewStep - + Users Käyttäjät + + VariantModel + + + Key + Avain + + + + Value + Arvo + + VolumeGroupBaseDialog @@ -3071,23 +3326,48 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.Lomake - + + + Select application and system language + Valitse sovelluksen ja järjestelmän kieli + + + + Open donations website + Avaa lahjoitussivusto + + + + &Donate + &Lahjoita + + + + Open help and support website + Avaa ohje- ja tukisivusto + + + + Open issues and bug-tracking website + Avaa ongelmia käsittelevä verkkosivusto + + + + Open release notes website + Avaa julkaisutiedot verkkosivusto + + + &Release notes &Julkaisutiedot - + &Known issues &Tunnetut ongelmat - - - Select language - Valitse kieli - - - + &Support &Tuki @@ -3097,42 +3377,42 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.&Tietoa - + <h1>Welcome to the %1 installer.</h1> <h1>Tervetuloa %1 -asennusohjelmaan.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Tervetuloa Calamares -asennusohjelmaan %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Tervetuloa Calamares -asennusohjelmaan %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Tervetuloa %1 asennukseen.</h1> - + About %1 setup Tietoja %1 asetuksista - + About %1 installer Tietoa %1 asennusohjelmasta - + <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-2019 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/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Kiitokset <a href="https://calamares.io/team/">Calamares-tiimille</a> ja <a href="https://www.transifex.com/calamares/calamares/">Calamares kääntäjille</a>.<br/><br/><a href="https://calamares.io/">Calamaresin</a> kehitystä sponsoroi <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 tuki @@ -3140,7 +3420,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. WelcomeViewStep - + Welcome Tervetuloa diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index c5a74bbe5..7404fee68 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partition de démarrage - + System Partition Partition Système - + Do not install a boot loader Ne pas installer de chargeur de démarrage - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Page blanche @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulaire - + GlobalStorage Stockage global - + JobQueue File de travail - + Modules Modules - + Type: Type : - - + + none aucun - + Interface: Interface: - + Tools Outils - + + Reload Stylesheet + Recharger la feuille de style + + + + Widget Tree + Arbre de Widget + + + Debug information Informations de dépannage @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Configurer - + Install Installer @@ -123,7 +133,7 @@ La tâche a échoué (%1) - + Programmed job failure was explicitly requested. L'échec de la tâche programmée a été explicitement demandée. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Fait @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Exécution de la commande %1 %2 + Run command '%1' in target system. + Exécuter la commande '%1' dans le système cible. - + + Run command '%1'. + Exécuter la commande '%1'. + + + Running command %1 %2 Exécution de la commande %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Exécution de l'opération %1. - + Bad working directory path Chemin du répertoire de travail invalide - + Working directory %1 for python job %2 is not readable. Le répertoire de travail %1 pour le job python %2 n'est pas accessible en lecture. - + Bad main script file Fichier de script principal invalide - + Main script file %1 for python job %2 is not readable. Le fichier de script principal %1 pour la tâche python %2 n'est pas accessible en lecture. - + Boost.Python error in job "%1". Erreur Boost.Python pour le job "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). En attente de %n module(s).En attente de %n module(s). - + (%n second(s)) (%n seconde(s))(%n seconde(s)) - + System-requirements checking is complete. La vérification des prérequis système est terminée. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Précédent - - + + &Next &Suivant - - + + &Cancel &Annuler - - + 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. - + Setup Failed Échec de la configuration - + + Would you like to paste the install log to the web? + Voulez-vous copier le journal d'installation sur le Web ? + + + + 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 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> - + &Set up now &Configurer maintenant - + &Set up &Configurer - + &Install &Installer - + Setup is complete. Close the setup program. La configuration est terminée. Fermer le programme de configuration. - + 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 réellement 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 réellement abandonner le processus d'installation ? L'installateur se fermera et les changements seront perdus. - + + &Yes &Oui - + + &No &Non - + &Close &Fermer - + Continue with setup? Poursuivre la configuration ? - + 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> - + &Install now &Installer maintenant - + Go &back &Retour - + &Done &Terminé - + The installation is complete. Close the installer. L'installation est terminée. Fermer l'installateur. - + Error Erreur - + Installation Failed L'installation a échoué @@ -372,40 +403,50 @@ L'installateur se fermera et les changements seront perdus. CalamaresPython::Helper - + Unknown exception type Type d'exception inconnue - + unparseable Python error Erreur Python non analysable - + unparseable Python traceback Traçage Python non exploitable - + Unfetchable Python error. Erreur Python non rapportable. + + CalamaresUtils + + + Install log posted to: +%1 + Le journal d'installation a été posté sur : +%1 + + CalamaresWindow - + %1 Setup Program Programme de configuration de %1 - + %1 Installer Installateur %1 - + Show debug information Afficher les informations de dépannage @@ -436,7 +477,7 @@ L'installateur se fermera et les changements seront perdus. <strong>Partitionnement manuel</strong><br/>Vous pouvez créer ou redimensionner vous-même des partitions. - + Boot loader location: Emplacement du chargeur de démarrage: @@ -448,8 +489,8 @@ L'installateur se fermera et les changements seront perdus. - - + + Current: Actuel : @@ -464,96 +505,96 @@ L'installateur se fermera et les changements seront perdus. <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. - + <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é. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ L'installateur se fermera et les changements seront perdus. CommandList - - + + Could not run command. La commande n'a pas pu être exécutée. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. La commande est exécutée dans l'environnement hôte et a besoin de connaître le chemin racine, mais aucun point de montage racine n'est défini. - + The command needs to know the user's name, but no username is defined. La commande a besoin de connaître le nom de l'utilisateur, mais aucun nom d'utilisateur n'est défini. @@ -621,7 +662,7 @@ L'installateur se fermera et les changements seront perdus. ContextualProcessJob - + Contextual Processes Job Tâche des processus contextuels @@ -801,17 +842,17 @@ L'installateur se fermera et les changements seront perdus. 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. @@ -958,7 +999,7 @@ L'installateur se fermera et les changements seront perdus. DummyCppJob - + Dummy C++ Job Tâche C++ fictive @@ -1125,12 +1166,12 @@ L'installateur se fermera et les changements seront perdus. <html><head/><body><p>En sélectionnant cette option, votre système redémarrera immédiatement quand vous cliquerez sur <span style=" font-style:italic;">Terminé</span> ou fermerez l'installateur.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Échec de la configuration</h1><br/>%1 n'a pas été configuré sur cet ordinateur.<br/>Le message d'erreur était : %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installation échouée</h1><br/>%1 n'a pas été installée sur cet ordinateur.<br/>Le message d'erreur était : %2. @@ -1189,66 +1230,74 @@ L'installateur se fermera et les changements seront perdus. GeneralRequirements - + has at least %1 GiB available drive space a au moins %1 Gio d'espace disque disponible - + There is not enough drive space. At least %1 GiB is required. Il n'y a pas assez d'espace disque. Au moins %1 Gio sont requis. - + has at least %1 GiB working memory a au moins %1 Gio de mémoire vive - + The system does not have enough working memory. At least %1 GiB is required. Le système n'a pas assez de mémoire vive. Au moins %1 Gio sont requis. - + is plugged in to a power source est relié à une source de courant - + The system is not plugged in to a power source. Le système n'est pas relié à une source de courant. - + is connected to the Internet est connecté à Internet - + The system is not connected to the Internet. Le système n'est pas connecté à Internet. - + The setup program is not running with administrator rights. Le programme de configuration ne dispose pas des droits administrateur. - + The installer is not running with administrator rights. L'installateur ne dispose pas des droits administrateur. - + The screen is too small to display the setup program. L'écran est trop petit pour afficher le programme de configuration. - + The screen is too small to display the installer. L'écran est trop petit pour afficher l'installateur. + + HostInfoJob + + + Collecting information about your machine. + Récupération des informations à propos de la machine. + + IDJob @@ -1275,6 +1324,22 @@ L'installateur se fermera et les changements seront perdus. Impossible d'écrire dans le fichier <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Création de l'initramfs avec mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + création du initramfs + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ L'installateur se fermera et les changements seront perdus. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1390,22 @@ L'installateur se fermera et les changements seront perdus. LCLocaleDialog - + System locale setting Paramètre régional - + 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>. Les paramètres régionaux systèmes affectent la langue et le jeu de caractère pour la ligne de commande et différents éléments d'interface.<br/>Le paramètre actuel est <strong>%1</strong>. - + &Cancel &Annuler - + &OK &OK @@ -1353,27 +1418,27 @@ L'installateur se fermera et les changements seront perdus. Formulaire - + I accept the terms and conditions above. J'accepte les termes et conditions ci-dessus. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Accord de licence</h1>Cette procédure de configuration va installer des logiciels propriétaire sujet à des termes de licence. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Merci de relire les Contrats de Licence Utilisateur Final (CLUF/EULA) ci-dessus.<br/>Si vous n'acceptez pas les termes, la procédure ne peut pas continuer. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Accord de licence</h1>Cette procédure peut installer des logiciels propriétaires qui sont soumis à des termes de licence afin d'ajouter des fonctionnalités et améliorer l'expérience utilisateur. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Merci de relire les Contrats de Licence Utilisateur Final (CLUF/EULA) ci-dessus.<br/>Si vous n'acceptez pas les termes, les logiciels propriétaires ne seront pas installés, et des alternatives open-source seront utilisées à la place. @@ -1381,7 +1446,7 @@ L'installateur se fermera et les changements seront perdus. LicenseViewStep - + License Licence @@ -1389,64 +1454,64 @@ L'installateur se fermera et les changements seront perdus. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Pilote %1</strong><br/>par %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Pilote graphique %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Module de navigateur %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Codec %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paquet %1</strong><br/><font color="Grey">par %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">par %2</font> - + Shows the complete license text Afficher le texte complet de la licence - + Hide license text Masquer le texte de licence - + Show license agreement Consulter l'accord de licence - + Hide license agreement Masquer l'accord de licence - + Opens the license agreement in a browser window. Ouvrir l'accord de licence dans une fenêtre de navigateur. - + <a href="%1">View license agreement</a> <a href="%1">Consulter l'accord de licence</a> @@ -1454,33 +1519,33 @@ L'installateur se fermera et les changements seront perdus. LocalePage - + 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. - + Region: Région : - + Zone: Zone : - - + + &Change... &Modifier... - + Set timezone to %1/%2.<br/> Configurer le fuseau horaire à %1/%2.<br/> @@ -1488,38 +1553,92 @@ L'installateur se fermera et les changements seront perdus. LocaleViewStep - - Loading location data... - Chargement des données de localisation... - - - + Location Localisation + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Configuration de la clé de fichier LUKS. + + + + + No partitions are defined. + Aucune partition n'est définie. + + + + + + Encrypted rootfs setup error + Erreur du chiffrement du setup rootfs + + + + Root partition %1 is LUKS but no passphrase has been set. + La partition racine %1 est LUKS mais aucune passphrase n'a été configurée. + + + + Could not create LUKS key file for root partition %1. + Impossible de créer le fichier de clé LUKS pour la partition racine %1. + + + + Could configure LUKS key file on partition %1. + Succès de la création du fichier de clé LUKS pour la partition racine %1. + + + + MachineIdJob + + + Generate machine-id. + Générer un identifiant machine. + + + + Configuration Error + Erreur de configuration + + + + No root mount point is set for MachineId. + Aucun point de montage racine n'est défini pour MachineId. + + NetInstallPage - + Name Nom - + Description Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installation par le réseau (Désactivée : impossible de récupérer leslistes de paquets, vérifiez la connexion réseau) - + Network Installation. (Disabled: Received invalid groups data) Installation par le réseau. (Désactivée : données de groupes reçues invalides) + + + Network Installation. (Disabled: Incorrect configuration) + Installation réseau. (Désactivée : configuration incorrecte) + NetInstallViewStep @@ -1550,12 +1669,12 @@ L'installateur se fermera et les changements seront perdus. OEMViewStep - + OEM Configuration Configuration OEM - + Set the OEM Batch Identifier to <code>%1</code>. Utiliser <code>%1</code> comme Identifiant de Lot OEM. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ L'installateur se fermera et les changements seront perdus. 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 + + + + PackageChooserPage + + + Form + Formulaire + + + + Product Name + Nom du Produit + + + + TextLabel + TextLabel + + + + Long Product Description + Description complète du produit + + + + Package Selection + Sélection des paquets + + + + Please pick a product from the list. The selected product will be installed. + Merci de sélectionner un produit de la liste. Le produit sélectionné sera installé. + + + + PackageChooserViewStep + + + Packages + Paquets + Page_Keyboard @@ -1834,47 +1999,86 @@ L'installateur se fermera et les changements seront perdus. Quel est votre nom ? - + What name do you want to use to log in? Quel nom souhaitez-vous utiliser pour la connexion ? - + Choose a password to keep your account safe. Veuillez saisir le mot de passe pour sécuriser votre compte. - + + <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>Veuillez entrer le même mot de passe deux fois afin de vérifier qu'il n'y ait pas d'erreur de frappe. Un bon mot de passe doit contenir un mélange de lettres, de nombres et de caractères de ponctuation, contenir au moins huit caractères et être changé à des intervalles réguliers.</small> - + What is the name of this computer? Quel est le nom de votre ordinateur ? - + + Your Full Name + Nom complet + + + + login + identifiant + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ce nom sera utilisé pour rendre l'ordinateur visible des autres sur le réseau.</small> - + + Computer Name + Nom de l'ordinateur + + + + + Password + Mot de passe + + + + + Repeat Password + Répéter le mot de passe + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Quand cette case est cochée, la vérification de la puissance du mot de passe est activée et vous ne pourrez pas utiliser de mot de passe faible. + + + + Require strong passwords. + Nécessite un mot de passe fort. + + + Log in automatically without asking for the password. Démarrer la session sans demander de mot de passe. - + Use the same password for the administrator account. Utiliser le même mot de passe pour le compte administrateur. - + Choose a password for the administrator account. Choisir un mot de passe pour le compte administrateur. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Veuillez entrer le même mot de passe deux fois, afin de vérifier qu'ils n'y ait pas d'erreur de frappe.</small> @@ -2039,107 +2243,107 @@ 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>esp</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. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Pour configurer une partition système EFI, revenez en arrière et sélectionnez ou créez une partition FAT32 avec le drapeau <strong>esp</strong> activé et le point de montage <strong>%2</strong>.<br/><br/>Vous pouvez continuer sans configurer de partition système EFI mais votre système pourrait refuser de démarrer. - + EFI system partition flag not set Drapeau de partition système EFI non configuré - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Une partition a été configurée avec le point de montage <strong>%2</strong> mais son drapeau <strong>esp</strong> n'est pas activé.<br/>Pour activer le drapeau, revenez en arrière et éditez la partition.<br/><br/>Vous pouvez continuer sans activer le drapeau mais votre système pourrait refuser de démarrer. - + 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 partitons to install on. Il n'y a aucune partition pour l'installation. @@ -2206,14 +2410,14 @@ Vous pouvez obtenir un aperçu des différentes apparences en cliquant sur celle ProcessResult - + There was no output from the command. Il y a eu aucune sortie de la commande - + Output: @@ -2222,52 +2426,52 @@ Sortie - + External command crashed. La commande externe s'est mal terminée. - + Command <i>%1</i> crashed. La commande <i>%1</i> s'est arrêtée inopinément. - + External command failed to start. La commande externe n'a pas pu être lancée. - + Command <i>%1</i> failed to start. La commande <i>%1</i> n'a pas pu être lancée. - + Internal error when starting command. Erreur interne au lancement de la commande - + Bad parameters for process job call. Mauvais paramètres pour l'appel au processus de job. - + External command failed to finish. La commande externe ne s'est pas terminée. - + Command <i>%1</i> failed to finish in %2 seconds. La commande <i>%1</i> ne s'est pas terminée en %2 secondes. - + External command finished with errors. La commande externe s'est terminée avec des erreurs. - + Command <i>%1</i> finished with exit code %2. La commande <i>%1</i> s'est terminée avec le code de sortie %2. @@ -2316,16 +2520,50 @@ Sortie (aucun point de montage) - + Requirements checking for module <i>%1</i> is complete. La vérification des prérequis pour le module <i>%1</i> est terminée. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Aucun produit + + + + No description provided. + Aucune description fournie. + + + + + + + + File not found + Fichier non trouvé + + + + Path <pre>%1</pre> must be an absolute path. + Le chemin <pre>%1</pre> doit être un chemin absolu. + + + + Could not create new random file <pre>%1</pre>. + Impossible de créer le nouveau fichier aléatoire <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Impossible de lire le fichier aléatoire <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2545,37 +2783,37 @@ Sortie ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Cet ordinateur ne satisfait pas les minimum prérequis pour configurer %1.<br/>La configuration ne peut pas continuer. <a href="#details">Détails...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Cet ordinateur ne satisfait pas les minimum prérequis pour installer %1.<br/>L'installation ne peut pas continuer. <a href="#details">Détails...</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. Cet ordinateur ne satisfait pas certains des prérequis recommandés pour configurer %1.<br/>La configuration peut continuer, mais certaines fonctionnalités pourraient être désactivées. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Cet ordinateur ne satisfait pas certains des prérequis recommandés pour installer %1.<br/>L'installation peut continuer, mais certaines fonctionnalités pourraient être désactivées. - + This program will ask you some questions and set up %2 on your computer. Ce programme va vous poser quelques questions et configurer %2 sur votre ordinateur. - + For best results, please ensure that this computer: Pour de meilleur résultats, merci de s'assurer que cet ordinateur : - + System requirements Prérequis système @@ -2596,29 +2834,29 @@ Sortie SetHostNameJob - + Set hostname %1 Définir le nom d'hôte %1 - + Set hostname <strong>%1</strong>. Configurer le nom d'hôte <strong>%1</strong>. - + Setting hostname %1. Configuration du nom d'hôte %1. - - + + Internal Error Erreur interne - - + + Cannot write hostname to target system Impossible d'écrire le nom d'hôte sur le système cible. @@ -2759,22 +2997,22 @@ Sortie Le point de montage racine est %1 - + Cannot disable root account. Impossible de désactiver le compte root. - + passwd terminated with error code %1. passwd c'est arrêté avec le code d'erreur %1. - + Cannot set password for user %1. Impossible de créer le mot de passe pour l'utilisateur %1. - + usermod terminated with error code %1. usermod s'est terminé avec le code erreur %1. @@ -2797,22 +3035,22 @@ Sortie Mauvais chemin : %1 - + Cannot set timezone. Impossible de définir le fuseau horaire. - + Link creation failed, target: %1; link name: %2 Création du lien échouée, destination : %1; nom du lien : %2 - + Cannot set timezone, Impossible de définir le fuseau horaire. - + Cannot open /etc/timezone for writing Impossible d'ourvir /etc/timezone pour écriture @@ -2858,22 +3096,22 @@ Sortie TrackingInstallJob - + Installation feedback Rapport d'installation - + Sending installation feedback. Envoi en cours du rapport d'installation. - + Internal error in install-tracking. Erreur interne dans le suivi d'installation. - + HTTP request timed out. La requête HTTP a échoué. @@ -2881,28 +3119,28 @@ Sortie TrackingMachineNeonJob - + 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. @@ -2935,17 +3173,17 @@ Sortie L'installation de la surveillance permet à %1 de voir combien d'utilisateurs l'utilise, quelle configuration matérielle %1 utilise, et (avec les 2 dernières options ci-dessous), recevoir une information continue concernant les applications préférées. Pour connaître les informations qui seront envoyées, veuillez cliquer sur l'icône d'aide à côté de chaque zone. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. En sélectionnant cette option, vous enverrez des informations sur votre installation et votre matériel. Cette information ne sera <b>seulement envoyée qu'une fois</b> après la finalisation de l'installation. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. En sélectionnant cette option vous enverrez <b>périodiquement</b> des informations sur votre installation, matériel, et applications, à %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. En sélectionnant cette option vous enverrez <b>régulièrement</b> des informations sur votre installation, matériel, applications, et habitudes d'utilisation, à %1. @@ -2953,7 +3191,7 @@ Sortie TrackingViewStep - + Feedback Rapport @@ -2961,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Votre nom d'utilisateur contient des caractères invalides. Seuls les lettres minuscules et les chiffres sont autorisés. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Seuls les lettres, 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Le nom d'hôte contient des caractères invalides. Seules les lettres, nombres et tirets sont autorisés. - - - - + Your passwords do not match! Vos mots de passe ne correspondent pas ! @@ -3005,11 +3247,24 @@ Sortie UsersViewStep - + Users Utilisateurs + + VariantModel + + + Key + Clé + + + + Value + Valeur + + VolumeGroupBaseDialog @@ -3071,23 +3326,48 @@ Sortie Formulaire - + + + Select application and system language + Sélectionner l'application et la langue système + + + + Open donations website + Ouvrir le site web de dons + + + + &Donate + &Donner + + + + Open help and support website + Ouvrir le site web d'aide et support + + + + Open issues and bug-tracking website + Ouvrir les issues et le site de suivi de bugs + + + + Open release notes website + Ouvrir le site des notes de publication + + + &Release notes &Notes de publication - + &Known issues &Problèmes connus - - - Select language - Sélection de la langue. - - - + &Support &Support @@ -3097,42 +3377,42 @@ Sortie &À propos - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenue dans l'installateur de %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> Bien dans l'installateur Calamares pour %1. - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Bienvenue dans le programme de configuration Calamares pour %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Bienvenue dans la configuration de %1.</h1> - + About %1 setup À propos de la configuration de %1 - + About %1 installer À propos de l'installateur %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-2019 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/> pour %3</strong><br/><br/> Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg et <a href="https://www.transifex.com/calamares/calamares/">l'équipe de traducteurs de Calamares</a>.<br/><br/> Le développement de <a href="https://calamares.io/">Calamares</a> est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Support de %1 @@ -3140,7 +3420,7 @@ Sortie WelcomeViewStep - + Welcome Bienvenue diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index e46ce5ecb..1e77c7bb6 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index e7f7b9c95..49990b796 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -21,27 +21,27 @@ BootLoaderModel - + Master Boot Record of %1 Rexistro de arranque maestro de %1 - + Boot Partition Partición de arranque - + System Partition Partición do sistema - + Do not install a boot loader Non instalar un cargador de arranque - + %1 (%2) %1 (%2) @@ -49,7 +49,7 @@ Calamares::BlankViewStep - + Blank Page Páxina en branco @@ -57,48 +57,58 @@ Calamares::DebugWindow - + Form Formulario - + GlobalStorage Almacenamento global - + JobQueue Cola de traballo - + Modules Módulos - + Type: Tipo: - - + + none Non - + Interface: Interface - + Tools Ferramentas - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Informe de depuración de erros. @@ -106,12 +116,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instalar @@ -124,7 +134,7 @@ - + Programmed job failure was explicitly requested. @@ -132,7 +142,7 @@ Calamares::JobThread - + Done Feito @@ -149,11 +159,16 @@ Calamares::ProcessJob - Run command %1 %2 - Executar a orde %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Executando a orde %1 %2 @@ -161,32 +176,32 @@ Calamares::PythonJob - + Running %1 operation. Excutando a operación %1. - + Bad working directory path A ruta ó directorio de traballo é errónea - + Working directory %1 for python job %2 is not readable. O directorio de traballo %1 para o traballo de python %2 non é lexible - + Bad main script file Ficheiro de script principal erróneo - + Main script file %1 for python job %2 is not readable. O ficheiro principal de script %1 para a execución de python %2 non é lexible. - + Boost.Python error in job "%1". Boost.Python tivo un erro na tarefa "%1". @@ -194,17 +209,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -212,159 +227,175 @@ Calamares::ViewManager - + + &Back &Atrás - - + + &Next &Seguinte - - + + &Cancel &Cancelar - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Cancelar a instalación sen cambiar o sistema - + Setup Failed - - Calamares Initialization Failed - Fallou a inicialización do Calamares + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/> Non foi posíbel cargar os módulos seguintes: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install &Instalar - + Setup is complete. Close the setup program. - + 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? O instalador pecharase e perderanse todos os cambios. - + + &Yes &Si - + + &No &Non - + &Close &Pechar - + Continue with setup? Continuar coa posta en marcha? - + 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> - + &Install now &Instalar agora - + Go &back Ir &atrás - + &Done &Feito - + The installation is complete. Close the installer. Completouse a instalacion. Peche o instalador - + Error Erro - + Installation Failed Erro na instalación @@ -372,40 +403,49 @@ O instalador pecharase e perderanse todos os cambios. CalamaresPython::Helper - + Unknown exception type Excepción descoñecida - + unparseable Python error Erro de Python descoñecido - + unparseable Python traceback O rastreo de Python non é analizable. - + Unfetchable Python error. Erro de Python non recuperable + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Instalador de %1 - + Show debug information Mostrar informes de depuración @@ -436,7 +476,7 @@ O instalador pecharase e perderanse todos os cambios. <strong>Particionado manual</strong><br/> Pode crear o redimensionar particións pola súa conta. - + Boot loader location: Localización do cargador de arranque: @@ -448,8 +488,8 @@ O instalador pecharase e perderanse todos os cambios. - - + + Current: Actual: @@ -464,96 +504,96 @@ O instalador pecharase e perderanse todos os cambios. <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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -602,18 +642,18 @@ O instalador pecharase e perderanse todos os cambios. CommandList - - + + Could not run command. Non foi posíbel executar a orde. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. A orde execútase no ambiente hóspede e precisa coñecer a ruta a root, mais non se indicou ningún rootMountPoint. - + The command needs to know the user's name, but no username is defined. A orde precisa coñecer o nome do usuario, mais non se indicou ningún nome de usuario. @@ -621,7 +661,7 @@ O instalador pecharase e perderanse todos os cambios. ContextualProcessJob - + Contextual Processes Job Tarefa de procesos contextuais @@ -801,17 +841,17 @@ O instalador pecharase e perderanse todos os cambios. 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. @@ -958,7 +998,7 @@ O instalador pecharase e perderanse todos os cambios. DummyCppJob - + Dummy C++ Job Tarefa parva de C++ @@ -1125,12 +1165,12 @@ O instalador pecharase e perderanse todos os cambios. - + <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. <h1>Fallou a instalación</h1><br/>%1 non se pudo instalar na sua computadora. <br/>A mensaxe de erro foi: %2. @@ -1189,66 +1229,74 @@ O instalador pecharase e perderanse todos os cambios. 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 está conectado a unha fonte de enerxía - + The system is not plugged in to a power source. O sistema non está conectado a unha fonte de enerxía. - + is connected to the Internet está conectado á Internet - + The system is not connected to the Internet. O sistema non está conectado á Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. O instalador non se está a executar con dereitos de administrador. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. A pantalla é demasiado pequena para mostrar o instalador. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1275,6 +1323,22 @@ O instalador pecharase e perderanse todos os cambios. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1296,7 +1360,7 @@ O instalador pecharase e perderanse todos os cambios. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1389,22 @@ O instalador pecharase e perderanse todos os cambios. LCLocaleDialog - + System locale setting Configuración da localización - + 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>. A configuración de localización afecta a linguaxe e o conxunto de caracteres dalgúns elementos da interface de usuario de liña de comandos. <br/>A configuración actúal é <strong>%1</strong>. - + &Cancel &Cancelar - + &OK &Ok @@ -1353,27 +1417,27 @@ O instalador pecharase e perderanse todos os cambios. Formulario - + I accept the terms and conditions above. Acepto os termos e condicións anteriores. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acordo de licencia</h1>Este proceso de configuración instalará programas privativos suxeito a termos de licencia. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se pode seguir co proceso de configuración. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acordo de licencia</h1>Este proceso de configuración pode instalar programas privativos suxeito a termos de licencia para fornecer características adicionaís e mellorala experiencia do usuario. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se instalará o programa privativo e no seu lugar usaranse alternativas de código aberto. @@ -1381,7 +1445,7 @@ O instalador pecharase e perderanse todos os cambios. LicenseViewStep - + License Licenza @@ -1389,64 +1453,64 @@ O instalador pecharase e perderanse todos os cambios. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>dispositivo %1</strong><br/>por %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Controlador gráfico %1</strong><br/><font color="Grey">de %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Engadido de navegador %1</strong><br/><font color="Grey"> de %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Códec %1</strong><br/><font color="Grey">de %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paquete %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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1454,33 +1518,33 @@ O instalador pecharase e perderanse todos os cambios. LocalePage - + 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. - + Region: Rexión: - + Zone: Zona: - - + + &Change... &Cambio... - + Set timezone to %1/%2.<br/> Establecer a zona de tempo a %1/%2.<br/> @@ -1488,38 +1552,92 @@ O instalador pecharase e perderanse todos os cambios. LocaleViewStep - - Loading location data... - Cargando datos de localización... - - - + Location Localización... + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Xerar o identificador da máquina. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nome - + Description Descripción - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installación por rede. (Desactivadas. Non se pudo recupera-la lista de pacotes, comprobe a sua conexión a rede) - + Network Installation. (Disabled: Received invalid groups data) Instalación de rede. (Desactivado: Recibírense datos de grupos incorrectos) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1550,12 +1668,12 @@ O instalador pecharase e perderanse todos os cambios. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1563,117 +1681,117 @@ 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 @@ -1683,125 +1801,171 @@ O instalador pecharase e perderanse todos os cambios. 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 + + + + + PackageChooserPage + + + Form + Formulario + + + + Product Name + + + + + TextLabel + EtiquetaTexto + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1834,47 +1998,86 @@ O instalador pecharase e perderanse todos os cambios. Cal é o seu nome? - + What name do you want to use to log in? Cal é o nome que quere usar para entrar? - + Choose a password to keep your account safe. Escolla un contrasinal para mante-la sua conta segura. - + + <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>Entre o mesmo contrasinal dúas veces, deste xeito podese comprobar errores ó teclear. Un bo contrasinal debe conter un conxunto de letras, números e signos de puntuación, deberá ter como mínimo oito carácteres, e debe cambiarse a intervalos de tempo regulares.</small> - + What is the name of this computer? Cal é o nome deste computador? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Este nome usarase se fai o computador visible para outros nunha rede.</small> - + + Computer Name + + + + + + 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. Entrar automáticamente sen preguntar polo contrasinal. - + Use the same password for the administrator account. Empregar o mesmo contrasinal para a conta de administrador. - + Choose a password for the administrator account. Escoller un contrasinal para a conta de administrador. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Introduza o mesmo contrasinal dúas veces para comprobar que non houbo erros ao escribilo.</small> @@ -2039,107 +2242,107 @@ 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>esp</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. É necesaria unha partición de sistema EFI para iniciar %1.<br/><br/>Para configurar unha partición de sistema EFI volva atrás e seleccione ou cree un sistema de ficheiros FAT32 coa bandeira <strong>esp</strong> activada e co punto de montaxe <strong>%2.<br/><br/>Pode continuar sen configurar unha partición de sistema EFI mais pode que o sistema non dea arrancado. - + EFI system partition flag not set A bandeira da partición de sistema EFI non está configurada - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. É necesaria unha partición de sistema EFI para iniciar %1.<br/><br/>Configurouse unha partición co punto de montaxe <strong>%2</strong> mais a súa bandeira <strong>esp</strong> non está conrfigurada.<br/>Para configurar a bandeira volva atrás e edite a partición.<br/><br/>Pode continuar sen configurar unha partición de sistema EFI mais pode que o sistema non dea arrancado. - + 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 partitons to install on. @@ -2205,14 +2408,14 @@ O instalador pecharase e perderanse todos os cambios. ProcessResult - + There was no output from the command. A saída non produciu ningunha saída. - + Output: @@ -2221,52 +2424,52 @@ Saída: - + External command crashed. A orde externa fallou - + Command <i>%1</i> crashed. A orde <i>%1</i> fallou. - + External command failed to start. Non foi posíbel iniciar a orde externa. - + Command <i>%1</i> failed to start. Non foi posíbel iniciar a orde <i>%1</i>. - + Internal error when starting command. Produciuse un erro interno ao iniciar a orde. - + Bad parameters for process job call. Erro nos parámetros ao chamar o traballo - + External command failed to finish. A orde externa non se puido rematar. - + Command <i>%1</i> failed to finish in %2 seconds. A orde <i>%1</i> non se puido rematar en %2s segundos. - + External command finished with errors. A orde externa rematou con erros. - + Command <i>%1</i> finished with exit code %2. A orde <i>%1</i> rematou co código de erro %2. @@ -2315,16 +2518,50 @@ Saída: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,37 +2781,37 @@ Saída: 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> Este ordenador non satisfai os requerimentos mínimos ara a instalación de %1.<br/>A instalación non pode continuar. <a href="#details">Máis información...</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. Este ordenador non satisfai algúns dos requisitos recomendados para instalar %1.<br/> A instalación pode continuar, pero pode que algunhas características sexan desactivadas. - + This program will ask you some questions and set up %2 on your computer. Este programa faralle algunhas preguntas mentres prepara %2 no seu ordenador. - + For best results, please ensure that this computer: Para os mellores resultados, por favor, asegúrese que este ordenador: - + System requirements Requisitos do sistema @@ -2595,29 +2832,29 @@ Saída: SetHostNameJob - + Set hostname %1 Hostname: %1 - + Set hostname <strong>%1</strong>. Configurar hostname <strong>%1</strong>. - + Setting hostname %1. Configurando hostname %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Non foi posíbel escreber o nome do servidor do sistema obxectivo @@ -2758,22 +2995,22 @@ Saída: rootMountPoint é %1 - + Cannot disable root account. Non é posíbel desactivar a conta do superusuario. - + passwd terminated with error code %1. passwd terminou co código de erro %1. - + Cannot set password for user %1. Non é posíbel configurar o contrasinal do usuario %1. - + usermod terminated with error code %1. usermod terminou co código de erro %1. @@ -2796,22 +3033,22 @@ Saída: Ruta incorrecta: %1 - + Cannot set timezone. Non é posíbel estabelecer o fuso horario - + Link creation failed, target: %1; link name: %2 Fallou a creación da ligazón; destino: %1; nome da ligazón: %2 - + Cannot set timezone, Non é posíbel estabelecer o fuso horario, - + Cannot open /etc/timezone for writing Non é posíbel abrir /etc/timezone para escribir nel @@ -2857,22 +3094,22 @@ Saída: TrackingInstallJob - + Installation feedback Opinións sobre a instalació - + Sending installation feedback. Enviar opinións sobre a instalación. - + Internal error in install-tracking. Produciuse un erro interno en install-tracking. - + HTTP request timed out. Esgotouse o tempo de espera de HTTP. @@ -2880,28 +3117,28 @@ Saída: TrackingMachineNeonJob - + 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. @@ -2934,17 +3171,17 @@ Saída: O seguimento da instalación axuda a %1 a ver cantos usuarios ten, en que hardware instalan %1 (coas dúas últimas opcións de embaixo) e obter información continua sobre os aplicativos preferidos. Para ver o que se envía, prema na icona de axuda que hai a carón de cada zona. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Ao seleccionar isto vostede envía información sobre a súa instalación e hardware. Esta información <b>só se envía unha vez</b>, logo de rematar a instalación. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Ao seleccionar isto vostede envía información <b>periodicamente</b> sobre a súa instalación, hardware e aplicativos a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Ao seleccionar isto vostede envía información <b>regularmente</b> sobre a súa instalación, hardware, aplicativos e patrón de uso a %1. @@ -2952,7 +3189,7 @@ Saída: TrackingViewStep - + Feedback Opinións @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - O nome de usuario contén caracteres non válidos. Só se permiten letras en minúscula e números. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - O nome do computador contén caracteres non válidos. Só se permiten letras, números e guións. - - - - + Your passwords do not match! Os contrasinais non coinciden! @@ -3004,11 +3245,24 @@ Saída: UsersViewStep - + Users Usuarios + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ Saída: Formulario - - &Release notes - &Notas de publicación - - - - &Known issues - &Problemas coñecidos - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Notas de publicación + + + + &Known issues + &Problemas coñecidos + + + &Support &Axuda @@ -3096,42 +3375,42 @@ Saída: &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Benvido o instalador %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Reciba a benvida ao instalador Calamares para %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer Acerca do instalador %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-2019 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. - + %1 support %1 axuda @@ -3139,7 +3418,7 @@ Saída: WelcomeViewStep - + Welcome Benvido diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index e5d043daf..9718c0450 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index 57dd7fae0..311d76bc6 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record של %1 - + Boot Partition מחיצת טעינת המערכת Boot - + System Partition מחיצת מערכת - + Do not install a boot loader לא להתקין מנהל אתחול מערכת - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page עמוד ריק @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage אחסון גלובלי - + JobQueue JobQueue - + Modules מודולים - + Type: סוג: - - + + none ללא - + Interface: מנשק: - + Tools כלים - + + Reload Stylesheet + טעינת גיליון הסגנון מחדש + + + + Widget Tree + עץ וידג׳טים + + + Debug information מידע על ניפוי שגיאות @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up הקמה - + Install התקנה @@ -123,7 +133,7 @@ משימה נכשלה (%1) - + Programmed job failure was explicitly requested. הכשל במשימה המוגדרת התבקש במפורש. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done הסתיים @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - הרצת הפקודה %1 %2 + Run command '%1' in target system. + להפעיל את הפקודה ‚%1’ במערכת היעד. - + + Run command '%1'. + להפעיל את הפקודה ‚%1’. + + + Running command %1 %2 הפקודה %1 %2 רצה @@ -160,32 +175,32 @@ 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”. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). בהמתנה למודול אחד.בהמתנה לשני מודולים.בהמתנה ל־%n מודולים.בהמתנה ל־%n מודולים. - + (%n second(s)) ((שנייה אחת)(שתי שניות)(%n שניות)(%n שניות) - + System-requirements checking is complete. בדיקת דרישות המערכת הושלמה. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back ה&קודם - - + + &Next הב&א - - + + &Cancel &ביטול - - + Cancel setup without changing the system. ביטול ההתקנה ללא שינוי המערכת. - - + Cancel installation without changing the system. ביטול התקנה ללא ביצוע שינוי במערכת. - + Setup Failed ההתקנה נכשלה - + + Would you like to paste the install log to the web? + להדביק את יומן ההתקנה לאינטרנט? + + + + 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 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> - + &Set up now להת&קין כעת - + &Set up להת&קין - + &Install הת&קנה - + Setup is complete. Close the setup program. ההתקנה הושלמה. נא לסגור את תכנית ההתקנה. - + 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. לבטל את תהליך ההתקנה? אשף ההתקנה ייסגר וכל השינויים יאבדו. - + + &Yes &כן - + + &No &לא - + &Close &סגירה - + Continue with setup? להמשיך בהתקנה? - + 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> - + &Install now להת&קין כעת - + Go &back ח&זרה - + &Done &סיום - + The installation is complete. Close the installer. תהליך ההתקנה הושלם. נא לסגור את אשף ההתקנה. - + Error שגיאה - + Installation Failed ההתקנה נכשלה @@ -372,40 +403,50 @@ 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 - + %1 Setup Program תכנית התקנת %1 - + %1 Installer אשף התקנה של %1 - + Show debug information הצגת מידע ניפוי שגיאות @@ -436,7 +477,7 @@ The installer will quit and all changes will be lost. <strong>הגדרת מחיצות באופן ידני</strong><br/>ניתן ליצור או לשנות את גודל המחיצות בעצמך. - + Boot loader location: מיקום מנהל אתחול המערכת: @@ -448,8 +489,8 @@ The installer will quit and all changes will be lost. - - + + Current: נוכחי: @@ -464,96 +505,96 @@ The installer will quit and all changes will be lost. <strong>ראשית יש לבחור מחיצה לכיווץ, לאחר מכן לגרור את הסרגל התחתון כדי לשנות את גודלה</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 תכווץ לכדי %2MiB ותיווצר מחיצה חדשה בגודל %3MiB עבור %4. - + <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> את כל המידע השמור על התקן האחסון הנבחר. - + 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/> ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. - + No Swap בלי החלפה - + Reuse Swap שימוש מחדש בהחלפה - + Swap (no Hibernate) החלפה (ללא תרדמת) - + Swap (with Hibernate) החלפה (עם תרדמת) - + Swap to file החלפה לקובץ - - - - + + + + <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 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/>ניתן לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. @@ -602,18 +643,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. לא ניתן להריץ את הפקודה. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. הפקודה פועלת בסביבת המארח ועליה לדעת מה נתיב השורש, אך לא צוין rootMountPoint. - + The command needs to know the user's name, but no username is defined. הפקודה צריכה לדעת מה שם המשתמש, אך לא הוגדר שם משתמש. @@ -621,7 +662,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job משימת תהליכי הקשר @@ -801,17 +842,17 @@ The installer will quit and all changes will be lost. תיקיית מנהלי המערכת לא ניתנת לכתיבה. - + Cannot create sudoers file for writing. לא ניתן ליצור את קובץ מנהלי המערכת לכתיבה. - + Cannot chmod sudoers file. לא ניתן לשנות את מאפייני קובץ מנהלי המערכת. - + Cannot open groups file for reading. לא ניתן לפתוח את קובץ הקבוצות לקריאה. @@ -958,7 +999,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job משימת דמה של C++‎ @@ -1125,12 +1166,12 @@ The installer will quit and all changes will be lost. <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. @@ -1189,66 +1230,74 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space יש לפחות %1 GiB פנויים בכונן - + There is not enough drive space. At least %1 GiB is required. נפח האחסון לא מספיק. נדרשים %1 GiB לפחות. - + has at least %1 GiB working memory יש לפחות %1 GiB זיכרון לעבודה - + The system does not have enough working memory. At least %1 GiB is required. כמות הזיכרון הנדרשת לפעולה אינה מספיקה. נדרשים %1 GiB לפחות. - + 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. המערכת לא מחוברת לאינטרנט. - + The setup program is not running with administrator rights. תכנית ההתקנה אינה פועלת עם הרשאות ניהול. - + The installer is not running with administrator rights. אשף ההתקנה לא רץ עם הרשאות מנהל. - + 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 @@ -1275,6 +1324,22 @@ The installer will quit and all changes will be lost. לא ניתן לכתוב לקובץ <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + נוצר initramfs עם mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + נוצר initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script סקריפט @@ -1325,22 +1390,22 @@ The installer will quit and all changes will be lost. 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 &אישור @@ -1353,27 +1418,27 @@ The installer will quit and all changes will be lost. Form - + I accept the terms and conditions above. התנאים וההגבלות שלמעלה מקובלים עלי. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>הסכם רישיון</h1>אשף התקנה זה יבצע התקנה של תכניות קנייניות אשר כפופות לתנאי רישיון. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. נא לעיין בהסכם משתמש הקצה (EULA) מעלה.<br/> אם התנאים אינם מקובלים עליך, תהליך ההתקנה יופסק. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>הסכם רישיון</h1>אשף התקנה זה יכול לבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון בכדי לספק תכולות נוספות ולשדרג את חווית המשתמש. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. נא לעיין בהסכם משתמש הקצה (EULA) מעלה.<br/> אם התנאים אינם מקובלים עליך, לא תותקנה תכניות קנייניות, במקומן תותקנה תכניות חלופיות מבוססות קוד פתוח. @@ -1381,7 +1446,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License רישיון @@ -1389,64 +1454,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text מציג את מלל הרישיון המלא - + Hide license text הסתרת מלל הרישיון - + Show license agreement הצגת הסכם רישוי - + Hide license agreement הסתרת הסכם רישוי - + Opens the license agreement in a browser window. פותח את הסכם הרישוי בחלון דפדפן. - + <a href="%1">View license agreement</a> <a href="%1">הצגת הסכם הרישוי</a> @@ -1454,33 +1519,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. שפת המערכת תוגדר להיות %1. - + The numbers and dates locale will be set to %1. תבנית של המספרים והתאריכים של המיקום יוגדרו להיות %1. - + Region: איזור: - + Zone: מיקום: - - + + &Change... ה&חלפה… - + Set timezone to %1/%2.<br/> הגדרת אזור זמן בתור %1/%2.<br/> @@ -1488,38 +1553,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - הנתונים על המיקום נטענים… - - - + Location מיקום + + LuksBootKeyFileJob + + + Configuring LUKS key file. + קובץ מפתח ה־LUKS מוגדר. + + + + + No partitions are defined. + לא הוגדרו מחיצות. + + + + + + Encrypted rootfs setup error + שגיאת התקנת מחיצת שורש מוצפנת + + + + Root partition %1 is LUKS but no passphrase has been set. + מחיצת השורש %1 היא LUKS אבל לא הוגדרה מילת צופן. + + + + Could not create LUKS key file for root partition %1. + לא ניתן ליצור קובץ מפתח LUKS למחיצת השורש %1. + + + + Could configure LUKS key file on partition %1. + לא ניתן להגדיר קובץ מפתח LUKS למחיצה %1. + + + + MachineIdJob + + + Generate machine-id. + לייצר מספר סידורי של המכונה. + + + + Configuration Error + שגיאת הגדרות + + + + No root mount point is set for MachineId. + לא הוגדרה נקודת עגינת שורש עבור מזהה מכונה (MachineId). + + NetInstallPage - + Name שם - + Description תיאור - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) התקנה מהרשת. (מושבתת: לא ניתן לקבל רשימות של חבילות תכנה, נא לבדוק את החיבור לרשת) - + Network Installation. (Disabled: Received invalid groups data) התקנה מהרשת. (מושבתת: המידע שהתקבל על קבוצות שגוי) + + + Network Installation. (Disabled: Incorrect configuration) + התקנת רשת. (מושבתת: תצורה שגויה) + NetInstallViewStep @@ -1550,12 +1669,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration הגדרות משווק - + Set the OEM Batch Identifier to <code>%1</code>. הגדרת מזהה מחזור למשווק לערך <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 הססמה היא פשוט סיכול של ססמה קודמת @@ -1683,125 +1802,171 @@ The installer will quit and all changes will be lost. הססמה מכילה פחות מ־%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 + Form + + + + Product Name + שם המוצר + + + + TextLabel + תווית טקסט + + + + Long Product Description + תיאור ארוך של המוצר + + + + Package Selection + בחירת חבילות + + + + Please pick a product from the list. The selected product will be installed. + נא לבחור במוצר מהרשימה. המוצר הנבחר יותקן. + + + + PackageChooserViewStep + + + Packages + חבילות + Page_Keyboard @@ -1834,47 +1999,86 @@ The installer will quit and all changes will be lost. מה שמך? - + What name do you want to use to log in? איזה שם ברצונך שישמש אותך לכניסה? - + 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> - + What is the name of this computer? מהו השם של המחשב הזה? - + + Your Full Name + שם המלא + + + + login + כניסה + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>בשם זה ייעשה שימוש לטובת זיהוי מול מחשבים אחרים ברשת במידת הצורך.</small> - + + Computer Name + שם המחשב + + + + + 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> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</strong> פעיל ועם נקודת עיגון <strong>%2</strong>.<br/><br/> ניתן להמשיך ללא הגדרת מחיצת מערכת EFI אך טעינת המערכת עשויה להיכשל. - + EFI system partition flag not set לא מוגדר סימון מחיצת מערכת 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>esp</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>esp</strong>.<br/> כדי לסמן את המחיצה, עליך לחזור ולערוך את המחיצה.<br/><br/> ניתן להמשיך ללא הוספת הסימון אך טעינת המערכת עשויה להיכשל. - + 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 partitons to install on. אין מחיצות להתקין עליהן. @@ -2205,14 +2409,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. לא היה פלט מהפקודה. - + Output: @@ -2221,52 +2425,52 @@ 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. @@ -2315,16 +2519,50 @@ Output: (אין נקודת עגינה) - + Requirements checking for module <i>%1</i> is complete. בדיקת הדרישות למודול <i>%1</i> הושלמה. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + אין מוצר + + + + No description provided. + לא סופק תיאור. + + + + + + + + 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>. + + + + Could not read random file <pre>%1</pre>. + לא ניתן לקרוא קובץ אקראי <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Output: 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 על המחשב שלך. - + For best results, please ensure that this computer: לקבלת התוצאות הטובות ביותר, נא לוודא כי מחשב זה: - + System requirements דרישות מערכת @@ -2595,29 +2833,29 @@ Output: 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 כתיבת שם העמדה למערכת היעד נכשלה @@ -2758,22 +2996,22 @@ Output: עיגון מחיצת מערכת ההפעלה, 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. @@ -2796,22 +3034,22 @@ Output: נתיב לא תקין: %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 לכתיבה @@ -2857,22 +3095,22 @@ Output: TrackingInstallJob - + Installation feedback משוב בנושא ההתקנה - + Sending installation feedback. שולח משוב בנושא ההתקנה. - + Internal error in install-tracking. שגיאה פנימית בעת התקנת תכונת המעקב. - + HTTP request timed out. בקשת HTTP חרגה מזמן ההמתנה המקסימאלי. @@ -2880,28 +3118,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Output: מעקב אחר ההתקנה מסייע ל־%1 לראות כמה משתמשים במוצר שלהם, על איזו חומרה מתבצעת ההתקנה של %1, בנוסף (לשתי האפשרויות הקודמות), קבלת מידע מתחדש על יישומים מועדפים. כדי לצפות בנתונים שיישלחו, נא לשלוח על סמל העזרה שליד כל אחד מהסעיפים. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. בחירה באפשרות זו תוביל לשליחת מידע על ההתקנה והחומרה שלך. מידע זה <b>יישלח פעם אחת בלבד</b> לאחר סיום ההתקנה. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. בחירה באפשרות הזאת תוביל לשליחת מידע <b>מדי פעם בפעם</b> על ההתקנה, החומרה והיישומים שלך אל %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. בחירה באפשרות זו תוביל לשליחת מידע <b>באופן קבוע</b> על ההתקנה, החומרה, היישומים ודפוסי שימוש אל %1. @@ -2952,7 +3190,7 @@ Output: TrackingViewStep - + Feedback משוב @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - שם המחשב מכיל תווים בלתי תקינים. מותר להשתמש אך ורק באותיות ובמספרים. + + Your username must start with a lowercase letter or underscore. + שם המשתמש שלך חייב להתחיל באות קטנה או בקו תחתי. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + מותר להשתמש רק באותיות קטנות, ספרות, קווים תחתיים ומינוסים. + + + + Only letters, numbers, underscore and hyphen are allowed. + מותר להשתמש רק באותיות, ספרות, קווים תחתיים ומינוסים. + + + Your hostname is too short. שם המחשב קצר מדי. - + Your hostname is too long. שם המחשב ארוך מדי. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - שם המחשב מכיל תווים בלתי תקינים. מותר להשתמש אך ורק באותיות, במספרים ובמקפים. - - - - + Your passwords do not match! הססמאות לא תואמות! @@ -3004,11 +3246,24 @@ Output: UsersViewStep - + Users משתמשים + + VariantModel + + + Key + מפתח + + + + Value + ערך + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Output: Form - + + + Select application and system language + נא לבחור יישום ואת שפת המערכת + + + + Open donations website + פתיחת אתר התרומות + + + + &Donate + &תרומה + + + + Open help and support website + פתיחת אתר העזרה והתמיכה + + + + Open issues and bug-tracking website + פתיחת אתר התקלות והמעקב אחר באגים + + + + Open release notes website + פתיחת האתר עם הערות המהדורה + + + &Release notes &הערות הפצה - + &Known issues &בעיות נפוצות - - - Select language - בחירת שפה - - - + &Support &תמיכה @@ -3096,42 +3376,42 @@ Output: על &אודות - + <h1>Welcome to the %1 installer.</h1> <h1>ברוך בואך להתקנת %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>ברוך בואך להתקנת %1 עם Calamares.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>ברוך בואך לתכנית ההתקנה Calamares עבור %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>ברוך בואך להתקנת %1.</h1> - + 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-2019 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‏-2019 ל־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/">צווות המתרגמים של Calamares</a>.<br/><br/><a href="https://calamares.io/">הפיתוח של Calamares</a> ממומן על ידי <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - דואגים לחירות התכנה. - + %1 support תמיכה ב־%1 @@ -3139,7 +3419,7 @@ Output: WelcomeViewStep - + Welcome ברוך בואך diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index b6b1d0172..dcf86aae9 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -14,33 +14,33 @@ 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>Master Boot Record</strong> पर विभाजन तालिका की शुरुआत में इंस्टॉल (सुझाया जाता है) करना होगा। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको इसे खुद ही बनाना होगा। + यह सिस्टम <strong>BIOS</strong>बूट वातावरण के साथ शुरू किया गया।<br><br>BIOS वातावरण से स्टार्टअप विन्यस्त करने के लिए इंस्टॉलर को <strong>GRUB</strong> जैसे बूट लोडर को, या तो विभाजन की शुरुआत में या फिर <strong>मास्टर बूट रिकॉर्ड</strong> पर विभाजन तालिका की शुरुआत में इंस्टॉल (सुझाया जाता है) करना होगा। यह स्वत: होता है, परंतु अगर आप मैनुअल विभाजन करना चुनते है; तो आपको इसे खुद ही बनाना होगा। BootLoaderModel - + Master Boot Record of %1 - %1 का Master Boot Record + %1 का मास्टर बूट रिकॉर्ड - + Boot Partition बूट विभाजन - + System Partition सिस्टम विभाजन - + Do not install a boot loader बूट लोडर इंस्टॉल न करें - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page खाली पृष्ठ @@ -56,61 +56,71 @@ Calamares::DebugWindow - + Form रूप - + GlobalStorage - GlobalStorage + ग्लोबल स्टोरेज - + JobQueue - JobQueue + कार्य पंक्ति - + Modules - मापांक + मॉड्यूल - + Type: - प्रकार + प्रकार : - - + + none कुछ नहीं - + Interface: - अंतरफलक : + इंटरफ़ेस : - + Tools साधन - + + Reload Stylesheet + शैली पत्रक पुनः लोड करें + + + + Widget Tree + विजेट ट्री + + + Debug information - डीबग संबंधी जानकारी + डीबग जानकारी Calamares::ExecutionViewStep - + Set up - + सेटअप - + Install इंस्टॉल करें @@ -120,20 +130,20 @@ Job failed (%1) - + कार्य विफल रहा (%1) - + Programmed job failure was explicitly requested. - + प्रोग्राम किए गए कार्य की विफलता स्पष्ट रूप से अनुरोध की गई थी। Calamares::JobThread - + Done - पूर्ण + पूर्ण हुआ @@ -141,18 +151,23 @@ Example job (%1) - + उदाहरण कार्य (%1) Calamares::ProcessJob - Run command %1 %2 - कमांड %1%2 चलाएँ + Run command '%1' in target system. + लक्षित सिस्टम में कमांड '%1' चलाएँ। - + + Run command '%1'. + कमांड '%1' चलाएँ। + + + Running command %1 %2 कमांड %1%2 चल रही हैं @@ -160,253 +175,279 @@ Calamares::PythonJob - + Running %1 operation. %1 चल रहा है। - + Bad working directory path कार्यरत फोल्डर का पथ गलत है - + Working directory %1 for python job %2 is not readable. - Python job %2 के लिए कार्यरत डायरेक्टरी %1 रीड करने योग्य नहीं है। + पाइथन कार्य %2 के लिए कार्यरत डायरेक्टरी %1 रीड करने योग्य नहीं है। - + Bad main script file - मुख्य स्क्रिप्ट फ़ाइल गलत है + ख़राब मुख्य स्क्रिप्ट फ़ाइल - + Main script file %1 for python job %2 is not readable. - Python job %2 के लिए मुख्य स्क्रिप्ट फ़ाइल %1 रीड करने योग्य नहीं है। + पाइथन कार्य %2 हेतु मुख्य स्क्रिप्ट फ़ाइल %1 रीड करने योग्य नहीं है। - + Boost.Python error in job "%1". - Job "%1" में Boost.Python त्रुटि। + कार्य "%1" में Boost.Python त्रुटि। Calamares::RequirementsChecker - + Waiting for %n module(s). - + %n मॉड्यूल की प्रतीक्षा में।%n मॉड्यूल की प्रतीक्षा में। - + (%n second(s)) - + (%n सेकंड)(%n सेकंड) - + System-requirements checking is complete. - + सिस्टम हेतु आवश्यकताओं की जाँच पूर्ण हुई। Calamares::ViewManager - + + &Back वापस (&B) - - + + &Next आगे (&N) - - + + &Cancel रद्द करें (&C) - - + Cancel setup without changing the system. - + सिस्टम में बदलाव किये बिना सेटअप रद्द करें। - - + Cancel installation without changing the system. सिस्टम में बदलाव किये बिना इंस्टॉल रद्द करें। - + Setup Failed + सेटअप विफल रहा + + + + Would you like to paste the install log to the web? - - Calamares Initialization Failed - Calamares का आरंभीकरण विफल रहा + + Install Log Paste URL + - - %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 installation? + + The upload was unsuccessful. No web-paste was done. - 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> - + 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 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> + + + &Set up now - + अभी सेटअप करें (&S) - + &Set up - + सेटअप करें (&S) - + &Install इंस्टॉल करें (&I) - + Setup is complete. Close the setup program. - + सेटअप पूर्ण हुआ। सेटअप प्रोग्राम बंद कर दें। - + 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. क्या आप वाकई वर्तमान इंस्टॉल प्रक्रिया रद्द करना चाहते हैं? इंस्टॉलर बंद हो जाएगा व सभी बदलाव नष्ट। - + + &Yes हाँ (&Y) - + + &No नहीं (&N) - + &Close बंद करें (&C) - + Continue with setup? सेटअप करना जारी रखें? - + 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> + %2 इंस्टॉल करने हेतु %1 इंस्टॉलर आपकी डिस्क में बदलाव करने वाला है।<br/><strong>आप इन बदलावों को पूर्ववत नहीं कर पाएंगे।</strong> - + &Install now अभी इंस्टॉल करें (&I) - + Go &back वापस जाएँ (&b) - + &Done - पूर्ण हुआ (&D) + हो गया (&D) - + The installation is complete. Close the installer. - इंस्टॉल पूर्ण हुआ। अब इंस्टॉलर को बंद करें। + इंस्टॉल पूर्ण हुआ।अब इंस्टॉलर को बंद करें। - + Error त्रुटि - + Installation Failed - इंस्टॉल विफल रहा। + इंस्टॉल विफल रहा CalamaresPython::Helper - + Unknown exception type - अपवाद का प्रकार अज्ञात है + अपवाद का प्रकार अज्ञात - + unparseable Python error - unparseable Python त्रुटि + अप्राप्य पाइथन त्रुटि - + unparseable Python traceback - unparseable Python traceback + अप्राप्य पाइथन ट्रेसबैक - + Unfetchable Python error. - Unfetchable Python त्रुटि। + पहुँच से बाहर पाइथन त्रुटि। + + + + CalamaresUtils + + + Install log posted to: +%1 + CalamaresWindow - + %1 Setup Program - + %1 सेटअप प्रोग्राम - + %1 Installer %1 इंस्टॉलर - + Show debug information - डीबग संबंधी जानकारी दिखाएँ + डीबग जानकारी दिखाएँ @@ -427,7 +468,7 @@ The installer will quit and all changes will be lost. After: - बाद में: + बाद में : @@ -435,9 +476,9 @@ The installer will quit and all changes will be lost. <strong>मैनुअल विभाजन</strong><br/> आप स्वयं भी विभाजन बना व उनका आकार बदल सकते है। - + Boot loader location: - बूट लोडर का स्थान: + बूट लोडर का स्थान : @@ -447,8 +488,8 @@ The installer will quit and all changes will be lost. - - + + Current: मौजूदा : @@ -460,99 +501,99 @@ The installer will quit and all changes will be lost. <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>छोटा करने के लिए विभाजन चुनें, फिर नीचे bar से उसका आकर सेट करें</strong> + <strong>छोटा करने हेतु विभाजन चुनें, फिर नीचे bar से उसका आकर सेट करें</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + %1 को छोटा करके %2MiB किया जाएगा व %4 हेतु %3MiB का एक नया विभाजन बनेगा। - + <strong>Select a partition to install on</strong> - <strong>इंस्टॉल के लिए विभाजन चुनें</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>हो जाएगा। - + 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/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। - + No Swap - - - - - Reuse Swap - - - - - Swap (no Hibernate) - + कोई स्वैप नहीं - Swap (with Hibernate) - + Reuse Swap + स्वैप पुनः उपयोग करें - Swap to file - + Swap (no Hibernate) + स्वैप (हाइबरनेशन/सिस्टम सुप्त रहित) - - - - + + Swap (with Hibernate) + स्वैप (हाइबरनेशन/सिस्टम सुप्त सहित) + + + + Swap to file + स्वैप फाइल बनाएं + + + + + + <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 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/>आप डिवाइस में किसी भी बदलाव से पहले उसकी समीक्षा व पुष्टि कर सकेंगे। @@ -572,7 +613,7 @@ The installer will quit and all changes will be lost. Cleared all mounts for %1 - %1 के लिए सभी माउंट हटा दिए गए + %1 हेतु सभी माउंट हटा दिए गए @@ -601,28 +642,28 @@ The installer will quit and all changes will be lost. 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. - + कमांड हेतु उपयोक्ता का नाम आवश्यक है परन्तु कोई नाम परिभाषित नहीं है। ContextualProcessJob - + Contextual Processes Job - Contextual Processes Job + प्रासंगिक प्रक्रिया कार्य @@ -665,7 +706,7 @@ The installer will quit and all changes will be lost. Flags: - Flags: + फ्लैग : @@ -708,12 +749,12 @@ The installer will quit and all changes will be lost. Create new %2MiB partition on %4 (%3) with file system %1. - + फ़ाइल सिस्टम %1 के साथ %4 (%3) पर नया %2MiB का विभाजन बनाएँ। Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + फ़ाइल सिस्टम <strong>%1</strong> के साथ <strong>%4</strong> (%3) पर नया <strong>%2MiB</strong> का विभाजन बनाएँ। @@ -746,7 +787,7 @@ The installer will quit and all changes will be lost. Master Boot Record (MBR) - Master Boot Record (MBR) + मास्टर बूट रिकॉर्ड (MBR) @@ -800,17 +841,17 @@ The installer will quit and all changes will be lost. Sudoers डायरेक्टरी राइट करने योग्य नहीं है। - + Cannot create sudoers file for writing. राइट हेतु sudoers फ़ाइल नहीं बन सकती। - + Cannot chmod sudoers file. sudoers फ़ाइल chmod नहीं की जा सकती। - + Cannot open groups file for reading. रीड हेतु groups फ़ाइल खोली नहीं जा सकती। @@ -820,7 +861,7 @@ The installer will quit and all changes will be lost. Create Volume Group - + वॉल्यूम समूह बनाएँ @@ -828,22 +869,22 @@ The installer will quit and all changes will be lost. 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' नामक वॉल्यूम समूह को बनाने में विफल रहा। @@ -852,17 +893,17 @@ The installer will quit and all changes will be lost. 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 नामक वॉल्यूम समूह को निष्क्रिय करने में विफल रहा। @@ -933,7 +974,7 @@ The installer will quit and all changes will be lost. %1 - (%2) device[name] - (device-node[name]) - + %1 - (%2) @@ -941,12 +982,12 @@ The installer will quit and all changes will be lost. Write LUKS configuration for Dracut to %1 - + Dracut हेतु LUKS विन्यास %1 पर राइट करना Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Dracut हेतु LUKS विन्यास %1 पर राइट करना छोड़ें : "/" विभाजन एन्क्रिप्टेड नहीं है @@ -957,9 +998,9 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job - Dummy C++ Job + डमी सी++ कार्य @@ -1012,7 +1053,7 @@ The installer will quit and all changes will be lost. Flags: - Flags: + फ्लैग : @@ -1096,7 +1137,7 @@ The installer will quit and all changes will be lost. <Restart checkbox tooltip> - + <Restart checkbox tooltip> @@ -1106,12 +1147,12 @@ The installer will quit and all changes will be lost. <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> @@ -1121,15 +1162,15 @@ The installer will quit and all changes will be lost. <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. - + <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। @@ -1144,7 +1185,7 @@ The installer will quit and all changes will be lost. Setup Complete - + सेटअप पूर्ण हुआ @@ -1154,7 +1195,7 @@ The installer will quit and all changes will be lost. The setup of %1 is complete. - + %1 का सेटअप पूर्ण हुआ। @@ -1167,12 +1208,12 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + विभाजन %1 (फ़ाइल सिस्टम: %2, आकार: %3 MiB) को %4 पर फॉर्मेट करें। Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + फ़ाइल सिस्टम <strong>%2</strong> के साथ <strong>%3MiB</strong> के विभाजन <strong>%1</strong> को फॉर्मेट करें। @@ -1188,64 +1229,72 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space - + कम-से-कम %1 GiB स्पेस ड्राइव पर उपलब्ध हो - + There is not enough drive space. At least %1 GiB is required. - + ड्राइव में पर्याप्त स्पेस नहीं है। कम-से-कम %1 GiB होना आवश्यक है। - + has at least %1 GiB working memory - + कम-से-कम %1 GiB मेमोरी उपलब्ध हो - + The system does not have enough working memory. At least %1 GiB is required. - + सिस्टम में पर्याप्त मेमोरी नहीं है। कम-से-कम %1 GiB होनी आवश्यक है। - + 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. सिस्टम इंटरनेट से कनेक्ट नहीं है। - + The setup program is not running with administrator rights. - + सेटअप प्रोग्राम के पास प्रबंधक अधिकार नहीं है। - + The installer is not running with administrator rights. इंस्टॉलर के पास प्रबंधक अधिकार नहीं है। - + 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. + @@ -1256,22 +1305,38 @@ The installer will quit and all changes will be lost. OEM Batch Identifier - + OEM (मूल उपकरण निर्माता) बैच पहचानकर्ता Could not create directories <code>%1</code>. - + <code>%1</code> डायरेक्टरी बनाई नहीं जा सकीं। Could not open file <code>%1</code>. - + <code>%1</code> फाइल खोली नहीं जा सकीं। Could not write to file <code>%1</code>. - + <code>%1</code> फाइल पर राइट नहीं किया जा सका। + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + mkinitcpio के साथ initramfs बनाना। + + + + InitramfsJob + + + Creating initramfs. + initramfs बनाना। @@ -1289,15 +1354,15 @@ The installer will quit and all changes will be lost. Executing script: &nbsp;<code>%1</code> - + निष्पादित स्क्रिप्ट : &nbsp;<code>%1</code> InteractiveTerminalViewStep - + Script - Script + स्क्रिप्ट @@ -1324,22 +1389,22 @@ The installer will quit and all changes will be lost. 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 रद्द करें (&C) - + &OK ठीक है (&O) @@ -1352,27 +1417,27 @@ The installer will quit and all changes will be lost. रूप - + I accept the terms and conditions above. - मैं उपर्युक्त नियम व शर्तें स्वीकार करता हूँ। + मैं उपरोक्त नियम व शर्तें स्वीकार करता हूँ। - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>लाइसेंस अनुबंध</h1>यह लाइसेंस शर्तों के अधीन अमुक्त सॉफ्टवेयर को इंस्टॉल करेगा। - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. कृपया ऊपर दिए गए लक्षित उपयोक्ता लाइसेंस अनुबंध (EULAs) ध्यानपूर्वक पढ़ें।<br/> यदि आप शर्तों से असहमत है, तो सेटअप को ज़ारी नहीं रखा जा सकता। - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>लाइसेंस अनुबंध</h1> यह सेटअप प्रक्रिया अतिरिक्त सुविधाएँ प्रदान करने व उपयोक्ता अनुभव में वृद्धि हेतु लाइसेंस शर्तों के अधीन अमुक्त सॉफ्टवेयर को इंस्टॉल कर सकती है। - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. कृपया ऊपर दिए गए लक्षित उपयोक्ता लाइसेंस अनुबंध (EULAs) ध्यानपूर्वक पढ़ें।<br/> यदि आप शर्तों से असहमत है, तो अमुक्त सॉफ्टवेयर इंस्टाल नहीं किया जाएगा व उनके मुक्त विकल्प उपयोग किए जाएँगे। @@ -1380,7 +1445,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License लाइसेंस @@ -1388,98 +1453,98 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - - - Shows the complete license text - - + Shows the complete license text + लाइसेंस को उसके पूर्ण स्वरुप में दिखाएँ + + + Hide license text - + लाइसेंस लेख छिपाएँ - + Show license agreement - + लाइसेंस अनुबंध दिखाएँ - + Hide license agreement - + लाइसेंस अनुबंध छिपाएँ - + Opens the license agreement in a browser window. - + लाइसेंस अनुबंध को ब्राउज़र विंडो में खोलें। - + <a href="%1">View license agreement</a> - + <a href="%1">लाइसेंस अनुबंध देखें</a> LocalePage - + The system language will be set to %1. सिस्टम भाषा %1 सेट की जाएगी। - + The numbers and dates locale will be set to %1. संख्या व दिनांक स्थानिकी %1 सेट की जाएगी। - + Region: क्षेत्र : - + Zone: - क्षेत्र : + ज़ोन : - - + + &Change... बदलें (&C)... - + Set timezone to %1/%2.<br/> समय क्षेत्र %1%2 पर सेट करें।<br/> @@ -1487,36 +1552,90 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - स्थान संबंधी डाटा लोड किया जा रहा है... - - - + 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. + रूट विभाजन %1 LUKS है, लेकिन कोई कूटशब्द सेट नहीं किया गया है। + + + + Could not create LUKS key file for root partition %1. + रूट विभाजन %1 हेतु LUKS कुंजी फाइल बनाने में विफल। + + + + Could configure LUKS key file on partition %1. + विभाजन %1 पर LUKS कुंजी फ़ाइल को विन्यस्त कर सकता है। + + + + MachineIdJob + + + Generate machine-id. + मशीन-आईडी उत्पन्न करना। + + + + Configuration Error + विन्यास त्रुटि + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name नाम - + Description विवरण - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + नेटवर्क इंस्टॉल। (निष्क्रिय है : पैकेज सूची प्राप्त करने में असमर्थ, अपना नेटवर्क कनेक्शन जाँचें) - + Network Installation. (Disabled: Received invalid groups data) + नेटवर्क इंस्टॉल (निष्क्रिय है : प्राप्त किया गया समूह डाटा अमान्य है) + + + + Network Installation. (Disabled: Incorrect configuration) @@ -1533,146 +1652,146 @@ The installer will quit and all changes will be lost. Ba&tch: - + बैच (&t) : <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>पर सेट करें। 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 यह कूटशब्द पुराने वाला ही है, बस घुमा रखा है @@ -1682,125 +1801,171 @@ The installer will quit and all changes will be lost. इस कूटशब्द में %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 - सेटिंग का गलत integer मान - %1 + सेटिंग का गलत पूर्णांक मान - %1 - + Bad integer value - गलत integer मान + गलत पूर्णांक मान - + Setting %1 is not of integer type - सेटिंग %1 integer नहीं है + सेटिंग %1 पूर्णांक नहीं है - + Setting is not of integer type - सेटिंग integer नहीं है + सेटिंग पूर्णांक नहीं है - + Setting %1 is not of string type - सेटिंग %1 string नहीं है + सेटिंग %1 स्ट्रिंग नहीं है - + Setting is not of string type - सेटिंग string नहीं है + सेटिंग स्ट्रिंग नहीं है - + Opening the configuration file failed विन्यास फ़ाइल खोलने में विफल - + The configuration file is malformed विन्यास फाइल ख़राब है - + Fatal failure गंभीर विफलता - + Unknown error अज्ञात त्रुटि + + + Password is empty + + + + + PackageChooserPage + + + Form + रूप + + + + Product Name + + + + + TextLabel + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1998,86 @@ The installer will quit and all changes will be lost. आपका नाम क्या है? - + What name do you want to use to log in? लॉग इन के लिए आप किस नाम का उपयोग करना चाहते हैं? - + 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> + <small>एक ही कूटशब्द दो बार दर्ज़ करें, ताकि उसे टाइप त्रुटि के लिए जांचा जा सके। एक उचित कूटशब्द में अक्षर, अंक व विराम चिन्हों का मेल होता है, उसमें कम-से-कम आठ अक्षर होने चाहिए, और उसे नियमित अंतराल पर बदलते रहना चाहिए।</small> - + What is the name of this computer? इस कंप्यूटर का नाम ? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>यदि आपका कंप्यूटर किसी नेटवर्क पर दृश्यमान होता है, तो यह नाम उपयोग किया जाएगा।</small> - - Log in automatically without asking for the password. - कूटशब्द बिना पूछे ही स्वतः लॉग इन करें। + + Computer Name + - + + + 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> @@ -1928,7 +2132,7 @@ The installer will quit and all changes will be lost. Free Space - खाली स्पेस + रिक्त स्पेस @@ -1967,7 +2171,7 @@ The installer will quit and all changes will be lost. Storage de&vice: - डिवाइस (&v): + स्टोरेज डिवाइस (&v): @@ -1997,27 +2201,27 @@ The installer will quit and all changes will be lost. New Volume Group - + नया वॉल्यूम समूह Resize Volume Group - + वॉल्यूम समूह का आकार बदलें Deactivate Volume Group - + वॉल्यूम समूह को निष्क्रिय करें Remove Volume Group - + वॉल्यूम समूह को हटाएँ I&nstall boot loader on: - + बूट लोडर इंस्टॉल करें (&l) : @@ -2027,120 +2231,120 @@ The installer will quit and all changes will be lost. 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. विभाजन को %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>esp</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>esp</strong> flag चालू हो व माउंट पॉइंट <strong>%2</strong>हो।<br/><br/>आप बिना सेट भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। - + EFI system partition flag not set - EFI सिस्टम विभाजन flag सेट नहीं है + 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>esp</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>esp</strong> flag सेट नहीं था।<br/> Flag सेट करने के लिए, वापस जाएँ और विभाजन को edit करें।<br/><br/>आप बिना सेट भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। + %1 को शुरू करने हेतु EFI सिस्टम विभाजन ज़रूरी है।<br/><br/>विभाजन को माउंट पॉइंट <strong>%2</strong> के साथ विन्यस्त किया गया परंतु उसका <strong>esp</strong> फ्लैग सेट नहीं था।<br/> फ्लैग सेट करने के लिए, वापस जाएँ और विभाजन को edit करें।<br/><br/>आप बिना सेट भी आगे बढ़ सकते है पर सिस्टम चालू नहीं होगा। - + 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 partitons to install on. - + इनस्टॉल हेतु कोई विभाजन नहीं हैं। @@ -2167,7 +2371,7 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + कृपया केडीई प्लाज़्मा डेस्कटॉप के लिए एक look-and-feel चुनें। आप अभी इस चरण को छोड़ सकते हैं व सिस्टम सेटअप होने के उपरांत इसे सेट कर सकते हैं। look-and-feel विकल्पों पर क्लिक कर आप चयनित look-and-feel का तुरंत ही पूर्वावलोकन कर सकते हैं। @@ -2188,84 +2392,84 @@ The installer will quit and all changes will be lost. 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> exit कोड %2 के साथ समाप्त। @@ -2311,19 +2515,53 @@ Output: (no mount point) - + (कोई माउंट पॉइंट नहीं) - + Requirements checking for module <i>%1</i> is complete. - + मापांक <i>%1</i> हेतु आवश्यकताओं की जाँच पूर्ण हुई। - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2331,17 +2569,17 @@ Output: 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' नामक वॉल्यूम समूह को हटाने में विफल रहा। @@ -2354,7 +2592,7 @@ Output: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - चुनें कि %1 को कहाँ इंस्टॉल करना है।<br/><font color="red">चेतावनी: </font> यह चयनित विभाजन पर मौजूद सभी फ़ाइलों को हटा देगा। + चुनें कि %1 को कहाँ इंस्टॉल करना है।<br/><font color="red">चेतावनी : </font> यह चयनित विभाजन पर मौजूद सभी फ़ाइलों को हटा देगा। @@ -2364,12 +2602,12 @@ Output: %1 cannot be installed on empty space. Please select an existing partition. - %1 को खाली स्पेस पर इंस्टॉल नहीं किया जा सकता।कृपया कोई मौजूदा विभाजन चुनें। + %1 को खाली स्पेस पर इंस्टॉल नहीं किया जा सकता। कृपया कोई मौजूदा विभाजन चुनें। %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 को विस्तृत विभाजन पर इंस्टॉल नहीं किया जा सकता।कृपया कोई मौजूदा मुख्य या तार्किक विभाजन चुनें। + %1 को विस्तृत विभाजन पर इंस्टॉल नहीं किया जा सकता। कृपया कोई मौजूदा मुख्य या तार्किक विभाजन चुनें। @@ -2394,7 +2632,7 @@ Output: <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - <strong>%4</strong><br/><br/>%2 के लिए विभाजन %1 बहुत छोटा है।कृपया कम-से-कम %3 GiB की क्षमता वाला कोई विभाजन चुनें । + <strong>%4</strong><br/><br/>%2 के लिए विभाजन %1 काफ़ी छोटा है। कृपया कम-से-कम %3 GiB की क्षमता वाला कोई विभाजन चुनें। @@ -2416,7 +2654,7 @@ Output: EFI system partition: - EFI सिस्टम विभाजन: + EFI सिस्टम विभाजन : @@ -2424,29 +2662,29 @@ Output: Resize Filesystem Job - + फ़ाइल सिस्टम कार्य का आकार बदलें Invalid configuration - + अमान्य विन्यास The file-system resize job has an invalid configuration and will not run. - + फाइल सिस्टम का आकार बदलने हेतु कार्य का विन्यास अमान्य है व यह नहीं चलेगा। KPMCore not Available - + KPMCore उपलब्ध नहीं है Calamares cannot start KPMCore for the file-system resize job. - + Calamares फाइल सिस्टम का आकार बदलने कार्य हेतु KPMCore को आरंभ नहीं कर सका। @@ -2455,39 +2693,39 @@ Output: 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 का आकार बदला जाना चाहिए लेकिन बदला नहीं जा सकता @@ -2500,12 +2738,12 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + <strong>%2MiB</strong> के <strong>%1</strong> विभाजन का आकार बदलकर <strong>%3MiB</strong> करें। Resizing %2MiB partition %1 to %3MiB. - + %2MiB के %1 विभाजन का आकार बदलकर %3MiB किया जा रहा है। @@ -2518,7 +2756,7 @@ Output: Resize Volume Group - + वॉल्यूम समूह का आकार बदलें @@ -2527,53 +2765,53 @@ Output: 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' नाम के वॉल्यूम समूह का आकार बदलने में विफल रहा। 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/>इंस्टॉल जारी रखा जा सकता, लेकिन कुछ विशेषताएँ निष्क्रिय हो सकती हैं। + यह कंप्यूटर %1 को इंस्टॉल करने हेतु सुझाई गई आवश्यकताओं को पूरा नहीं करता।<br/>इंस्टॉल जारी रखा जा सकता है, लेकिन कुछ विशेषताएँ को निष्क्रिय किया जा सकता हैं। - + This program will ask you some questions and set up %2 on your computer. - यह प्रोग्राम आपसे कुछ सवाल पूछ आपके कंप्यूटर पर %2 को सेट करेगा। + यह प्रोग्राम एक प्रश्नावली के आधार पर आपके कंप्यूटर पर %2 को सेट करेगा। - + For best results, please ensure that this computer: - उत्तम परिणामों के लिए, कृपया सुनिश्चित करें कि यह कंप्यूटर: + उत्तम परिणाम हेतु, कृपया सुनिश्चित करें कि यह कंप्यूटर : - + System requirements सिस्टम इंस्टॉल हेतु आवश्यकताएँ @@ -2594,29 +2832,29 @@ Output: 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 लक्षित सिस्टम पर होस्ट नाम लिखा नहीं जा सकता। @@ -2631,7 +2869,7 @@ Output: Failed to write keyboard configuration for the virtual console. - Virtual console हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। + वर्चुअल कंसोल हेतु कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। @@ -2648,7 +2886,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - मौजूदा /etc /default डायरेक्टरी में कुंजीपटल की सेटिंग्स write करने में विफल रहा। + मौजूदा /etc /default डायरेक्टरी में कुंजीपटल की सेटिंग्स राइट करने में विफल रहा। @@ -2656,82 +2894,82 @@ Output: Set flags on partition %1. - %1 विभाजन पर flag सेट करें। + %1 विभाजन पर फ्लैग सेट करें। Set flags on %1MiB %2 partition. - + %1MiB के %2 विभाजन पर फ्लैग सेट करें। Set flags on new partition. - नए विभाजन पर flag सेट करें। + नए विभाजन पर फ्लैग सेट करें। Clear flags on partition <strong>%1</strong>. - <strong>%1</strong> विभाजन पर से flag हटाएँ। + <strong>%1</strong> विभाजन पर से फ्लैग हटाएँ। Clear flags on %1MiB <strong>%2</strong> partition. - + %1MiB के <strong>%2</strong> विभाजन पर से फ्लैग हटाएँ। Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + %1MiB के <strong>%2</strong> विभाजन पर <strong>%3</strong> का फ्लैग लगाएँ। Clearing flags on %1MiB <strong>%2</strong> partition. - + %1MiB के <strong>%2</strong> विभाजन पर से फ्लैग हटाएँ जा रहे हैं। Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + %1MiB के <strong>%2</strong> विभाजन पर फ्लैग <strong>%3</strong> सेट किए जा रहे हैं। Clear flags on new partition. - नए विभाजन पर से flag हटाएँ। + नए विभाजन पर से फ्लैग हटाएँ। Flag partition <strong>%1</strong> as <strong>%2</strong>. - <strong>%1</strong> विभाजन पर <strong>%2</strong> का flag लगाएँ। + <strong>%1</strong> विभाजन पर <strong>%2</strong> का फ्लैग लगाएँ। Flag new partition as <strong>%1</strong>. - नए विभाजन पर<strong>%1</strong>का flag लगाएँ। + नए विभाजन पर<strong>%1</strong>का फ्लैग लगाएँ। Clearing flags on partition <strong>%1</strong>. - <strong>%1</strong> विभाजन पर से flag हटाएँ जा रहे हैं। + <strong>%1</strong> विभाजन पर से फ्लैग हटाएँ जा रहे हैं। Clearing flags on new partition. - नए विभाजन पर से flag हटाएँ जा रहे हैं। + नए विभाजन पर से फ्लैग हटाएँ जा रहे हैं। Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - <strong>%1</strong> विभाजन पर flag <strong>%2</strong> सेट किए जा रहे हैं। + <strong>%1</strong> विभाजन पर फ्लैग <strong>%2</strong> सेट किए जा रहे हैं। Setting flags <strong>%1</strong> on new partition. - नए विभाजन पर flag <strong>%1</strong> सेट किए जा रहे हैं। + नए विभाजन पर फ्लैग <strong>%1</strong> सेट किए जा रहे हैं। The installer failed to set flags on partition %1. - इंस्टॉलर विभाजन %1 पर flag सेट करने में विफल रहा। + इंस्टॉलर विभाजन %1 पर फ्लैग सेट करने में विफल रहा। @@ -2754,25 +2992,25 @@ Output: rootMountPoint is %1 - rootMountPoint %1 है + रूट माउंट पॉइंट %1 है - + Cannot disable root account. रुट अकाउंट निष्क्रिय नहीं किया जा सकता । - + passwd terminated with error code %1. passwd त्रुटि कोड %1 के साथ समाप्त। - + Cannot set password for user %1. - उपयोक्ता %1 के लिए पासवर्ड सेट नहीं किया जा सकता। + उपयोक्ता %1 हेतु पासवर्ड सेट नहीं किया जा सकता। - + usermod terminated with error code %1. usermod त्रुटि कोड %1 के साथ समाप्त। @@ -2795,24 +3033,24 @@ Output: गलत पथ: %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 खोला नहीं जा सका। + राइट करने हेतु /etc /timezone खोला नहीं जा सका @@ -2820,7 +3058,7 @@ Output: Shell Processes Job - + शेल प्रक्रिया कार्य @@ -2837,7 +3075,7 @@ Output: This is an overview of what will happen once you start the setup procedure. - + यह एक अवलोकन है कि सेटअप प्रक्रिया आरंभ होने के उपरांत क्या होगा। @@ -2850,59 +3088,59 @@ Output: Summary - सार + सारांश TrackingInstallJob - + Installation feedback - + इंस्टॉल संबंधी प्रतिक्रिया - + Sending installation feedback. - + इंस्टॉल संबंधी प्रतिक्रिया भेजना। - + Internal error in install-tracking. - + इंस्टॉल-ट्रैकिंग में आंतरिक त्रुटि। - + HTTP request timed out. - + एचटीटीपी अनुरोध हेतु समय समाप्त। TrackingMachineNeonJob - + 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। @@ -2915,87 +3153,91 @@ Output: Placeholder - Placeholder + प्लेसहोल्डर <html><head/><body><p>By selecting this, you will 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> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + इंस्टॉल की ट्रैकिंग करने से %1 को यह जानने में सहायता मिलती है कि उनके कितने उपयोक्ता हैं, वे किस हार्डवेयर पर %1 को इंस्टॉल करते हैं एवं (नीचे दिए अंतिम दो विकल्पों सहित), पसंदीदा अनुप्रयोगों के बारे में निरंतर जानकारी प्राप्त करते हैं। यह जानने हेतु कि क्या भेजा जाएगा, कृपया प्रत्येक क्षेत्र के साथ में दिए सहायता आइकन पर क्लिक करें। - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + इसे चयनित करने पर आपके इंस्टॉल व हार्डवेयर संबंधी जानकारी भेजी जाएँगी। यह जानकारी इंस्टॉल समाप्त हो जाने के उपरांत <b>केवल एक बार ही</b> भेजी जाएगी। - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + इसे चयनित करने पर आपके इंस्टॉल, हार्डवेयर व अनुप्रयोगों संबंधी जानकारी <b>समय-समय पर</b>, %1 को भेजी जाएँगी। - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and 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 username is too long. + आपका उपयोक्ता नाम काफ़ी लंबा है। + + + + Your username must start with a lowercase letter or underscore. - - Your username is too long. - आपका उपयोक्ता नाम बहुत लंबा है। + + Only lowercase letters, numbers, underscore and hyphen are allowed. + - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - आपके होस्ट नाम में अमान्य अक्षर हैं । केवल lowercase अक्षरों व संख्याओं की ही अनुमति है । + + Only letters, numbers, underscore and hyphen are allowed. + - + Your hostname is too short. - आपका होस्ट नाम बहुत छोटा है। + आपका होस्ट नाम काफ़ी छोटा है। - + Your hostname is too long. - आपका होस्ट नाम बहुत लंबा है। + आपका होस्ट नाम काफ़ी लंबा है। - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - आपके होस्ट नाम में अमान्य अक्षर हैं । केवल अक्षरों, संख्याओं व dash की ही अनुमति है । - - - - + Your passwords do not match! आपके कूटशब्द मेल नहीं खाते! @@ -3003,62 +3245,75 @@ Output: UsersViewStep - + Users उपयोक्ता + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog Create Volume Group - + वॉल्यूम समूह बनाएँ List of Physical Volumes - + वॉल्यूम समूहों की सूची Volume Group Name: - + वॉल्यूम समूह का नाम : Volume Group Type: - + वॉल्यूम समूह का प्रकार : Physical Extent Size: - + डिस्क ब्लॉक की आकार सीमा : MiB - MiB + MiB Total Size: - + कुल आकार : Used Size: - + प्रयुक्त आकार : Total Sectors: - + कुल सेक्टर : Quantity of LVs: - + तार्किक वॉल्यूम की मात्रा : @@ -3069,23 +3324,48 @@ Output: रूप - - &Release notes - रिलीज़ नोट्स (&R) - - - - &Known issues - ज्ञात समस्याएँ (&K) - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + रिलीज़ नोट्स (&R) + + + + &Known issues + ज्ञात समस्याएँ (&K) + + + &Support सहायता (&S) @@ -3095,42 +3375,42 @@ Output: बारे में (&A) - + <h1>Welcome to the %1 installer.</h1> <h1>%1 इंस्टॉलर में आपका स्वागत है।</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>%1 के लिए Calamares इंस्टॉलर में आपका स्वागत है।</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>%1 हेतु Calamares सेटअप में आपका स्वागत है।</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>%1 सेटअप में आपका स्वागत है।</h1> - + 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-2019 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-2019 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/">Calamares अनुवादक टीम</a> का धन्यवाद।<br/><br/><a href="https://calamares.io/">Calamares</a> का विकास <br/><a href="http://www.blue-systems.com/">ब्लू सिस्टम्स</a> - लिब्रेटिंग सॉफ्टवेयर द्वारा प्रायोजित है। - + %1 support %1 सहायता @@ -3138,9 +3418,9 @@ Output: WelcomeViewStep - + Welcome - स्वागतं + स्वागत है \ No newline at end of file diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index f758dcf09..ad215ad99 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record od %1 - + Boot Partition Boot particija - + System Partition Particija sustava - + Do not install a boot loader Nemoj instalirati boot učitavač - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Prazna stranica @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Oblik - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Moduli - + Type: Tip: - - + + none nijedan - + Interface: Sučelje: - + Tools Alati - + + Reload Stylesheet + Ponovno učitaj stilsku tablicu + + + + Widget Tree + Stablo widgeta + + + Debug information Debug informacija @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Postaviti - + Install Instaliraj @@ -123,7 +133,7 @@ Posao nije uspio (%1) - + Programmed job failure was explicitly requested. Programski neuspjeh posla je izričito zatražen. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Gotovo @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Izvrši naredbu %1 %2 + Run command '%1' in target system. + Izvrši naredbu '%1' u ciljnom sustavu. - + + Run command '%1'. + Izvrši naredbu '%1'. + + + Running command %1 %2 Izvršavam naredbu %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Izvodim %1 operaciju. - + Bad working directory path Krivi put do radnog direktorija - + Working directory %1 for python job %2 is not readable. Radni direktorij %1 za python zadatak %2 nije čitljiv. - + Bad main script file Kriva glavna datoteka skripte - + Main script file %1 for python job %2 is not readable. Glavna skriptna datoteka %1 za python zadatak %2 nije čitljiva. - + Boost.Python error in job "%1". Boost.Python greška u zadatku "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Čekam %1 modul(a).Čekam %1 modul(a).Čekam %1 modul(a). - + (%n second(s)) (%n sekunda(e))(%n sekunda(e))(%n sekunda(e)) - + System-requirements checking is complete. Provjera zahtjeva za instalaciju sustava je dovršena. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Natrag - - + + &Next &Sljedeće - - + + &Cancel &Odustani - - + 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. - + Setup Failed Instalacija nije uspjela - + + Would you like to paste the install log to the web? + Želite li objaviti dnevnik instaliranja na web? + + + + 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 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> - + &Set up now &Postaviti odmah - + &Set up &Postaviti - + &Install &Instaliraj - + Setup is complete. Close the setup program. Instalacija je završena. Zatvorite instalacijski program. - + 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? Instalacijski program će izaći i sve promjene će biti izgubljene. - + + &Yes &Da - + + &No &Ne - + &Close &Zatvori - + Continue with setup? Nastaviti s postavljanjem? - + 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> - + &Install now &Instaliraj sada - + Go &back Idi &natrag - + &Done &Gotovo - + The installation is complete. Close the installer. Instalacija je završena. Zatvorite instalacijski program. - + Error Greška - + Installation Failed Instalacija nije uspjela @@ -372,40 +403,50 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CalamaresPython::Helper - + Unknown exception type Nepoznati tip iznimke - + unparseable Python error unparseable Python greška - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Nedohvatljiva Python greška. + + CalamaresUtils + + + Install log posted to: +%1 + Dnevnik instaliranja je objavljen na: +%1 + + CalamaresWindow - + %1 Setup Program %1 instalacijski program - + %1 Installer %1 Instalacijski program - + Show debug information Prikaži debug informaciju @@ -436,7 +477,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.<strong>Ručno particioniranje</strong><br/>Možete sami stvoriti ili promijeniti veličine particija. - + Boot loader location: Lokacija boot učitavača: @@ -448,8 +489,8 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. - - + + Current: Trenutni: @@ -464,96 +505,96 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.<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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. CommandList - - + + Could not run command. Ne mogu pokrenuti naredbu. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Naredba se pokreće u okruženju domaćina i treba znati korijenski put, međutim, rootMountPoint nije definiran. - + The command needs to know the user's name, but no username is defined. Naredba treba znati ime korisnika, ali nije definirano korisničko ime. @@ -621,7 +662,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ContextualProcessJob - + Contextual Processes Job Posao kontekstualnih procesa @@ -801,17 +842,17 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.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. @@ -958,7 +999,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. DummyCppJob - + Dummy C++ Job Lažni C++ posao @@ -1125,12 +1166,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.<html><head/><body><p>Kada je odabrana ova opcija, vaš sustav će se ponovno pokrenuti kada kliknete na <span style="font-style:italic;">Gotovo</span> ili zatvorite instalacijski program.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Instalacija nije uspijela</h1><br/>%1 nije instaliran na vaše računalo.<br/>Greška: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalacija nije uspijela</h1><br/>%1 nije instaliran na vaše računalo.<br/>Greška: %2. @@ -1189,66 +1230,74 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. GeneralRequirements - + has at least %1 GiB available drive space ima barem %1 GB dostupne slobodne memorije na disku - + There is not enough drive space. At least %1 GiB is required. Nema dovoljno prostora na disku. Potrebno je najmanje %1 GB. - + has at least %1 GiB working memory ima barem %1 GB radne memorije - + The system does not have enough working memory. At least %1 GiB is required. Ovaj sustav nema dovoljno radne memorije. Potrebno je najmanje %1 GB. - + is plugged in to a power source je spojeno na izvor struje - + The system is not plugged in to a power source. Ovaj sustav nije spojen na izvor struje. - + is connected to the Internet je spojeno na Internet - + The system is not connected to the Internet. Ovaj sustav nije spojen na internet. - + The setup program is not running with administrator rights. Instalacijski program nije pokrenut sa administratorskim dozvolama. - + The installer is not running with administrator rights. Instalacijski program nije pokrenut sa administratorskim dozvolama. - + The screen is too small to display the setup program. Zaslon je premalen za prikaz instalacijskog programa. - + The screen is too small to display the installer. Zaslon je premalen za prikaz instalacijskog programa. + + HostInfoJob + + + Collecting information about your machine. + Prikupljanje podataka o vašem stroju. + + IDJob @@ -1275,6 +1324,22 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Nije moguće pisati u datoteku <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Stvaranje initramfs s mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Stvaranje initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. InteractiveTerminalViewStep - + Script Skripta @@ -1325,22 +1390,22 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LCLocaleDialog - + System locale setting Postavke jezične sheme sustava - + 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>. Jezična shema sustava ima efekt na jezični i znakovni skup za neke komandno linijske elemente sučelja.<br/>Trenutačna postavka je <strong>%1</strong>. - + &Cancel &Odustani - + &OK &OK @@ -1353,27 +1418,27 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Oblik - + I accept the terms and conditions above. Prihvaćam gore navedene uvjete i odredbe. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licencni ugovor</h1>Instalacijska procedura će instalirati vlasnički program koji podliježe uvjetima licenciranja. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, instalacijska procedura se ne može nastaviti. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licencni ugovor</h1>Instalacijska procedura može instalirati vlasnički program, koji podliježe uvjetima licenciranja, kako bi pružio dodatne mogućnosti i poboljšao korisničko iskustvo. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, vlasnički program se ne će instalirati te će se umjesto toga koristiti program otvorenog koda. @@ -1381,7 +1446,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LicenseViewStep - + License Licence @@ -1389,64 +1454,64 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 upravljački program</strong><br/>by %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 grafički upravljački program</strong><br/><font color="Grey">od %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 dodatak preglednika</strong><br/><font color="Grey">od %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">od %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paket</strong><br/><font color="Grey">od %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">od %2</font> - + Shows the complete license text Prikazuje cijeli tekst licence - + Hide license text Sakrij tekst licence - + Show license agreement Prikaži licencni ugovor - + Hide license agreement Sakrij licencni ugovor - + Opens the license agreement in a browser window. Otvara ugovor o licenci u prozoru preglednika. - + <a href="%1">View license agreement</a> <a href="%1">Pogledajte ugovor o licenci</a> @@ -1454,33 +1519,33 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocalePage - + 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. Jezična shema brojeva i datuma će se postaviti na %1. - + Region: Regija: - + Zone: Zona: - - + + &Change... &Promijeni... - + Set timezone to %1/%2.<br/> Postavi vremesku zonu na %1%2.<br/> @@ -1488,38 +1553,92 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. LocaleViewStep - - Loading location data... - Učitavanje podataka o lokaciji... - - - + Location Lokacija + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Konfiguriranje LUKS ključne datoteke. + + + + + No partitions are defined. + Nema definiranih particija. + + + + + + Encrypted rootfs setup error + Pogreška postavljanja šifriranog rootfs-a + + + + Root partition %1 is LUKS but no passphrase has been set. + Root particija %1 je LUKS, ali nije postavljena zaporka. + + + + Could not create LUKS key file for root partition %1. + Nije moguće kreirati LUKS ključnu datoteku za root particiju %1. + + + + Could configure LUKS key file on partition %1. + Moguće je konfigurirati LUKS ključnu datoteku na particiji %1. + + + + MachineIdJob + + + Generate machine-id. + Generiraj ID računala. + + + + Configuration Error + Greška konfiguracije + + + + No root mount point is set for MachineId. + Nijedna točka montiranja nije postavljena za MachineId. + + NetInstallPage - + Name Ime - + Description Opis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Mrežna instalacija. (Onemogućeno: Ne mogu dohvatiti listu paketa, provjerite da li ste spojeni na mrežu) - + Network Installation. (Disabled: Received invalid groups data) Mrežna instalacija. (Onemogućeno: Primanje nevažećih podataka o grupama) + + + Network Installation. (Disabled: Incorrect configuration) + Mrežna instalacija. (Onemogućeno: Neispravna konfiguracija) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. OEMViewStep - + OEM Configuration OEM konfiguracija - + Set the OEM Batch Identifier to <code>%1</code>. Postavite OEM identifikator serije na <code>%1</code>. @@ -1563,117 +1682,117 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. 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 @@ -1683,125 +1802,171 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.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 + + + + PackageChooserPage + + + Form + Oblik + + + + Product Name + Ime proizvoda + + + + TextLabel + OznakaTeksta + + + + Long Product Description + Dugi opis proizvoda + + + + Package Selection + Odabir paketa + + + + Please pick a product from the list. The selected product will be installed. + Molimo odaberite proizvod s popisa. Izabrani proizvod će biti instaliran. + + + + PackageChooserViewStep + + + Packages + Paketi + Page_Keyboard @@ -1834,47 +1999,86 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.Koje je tvoje ime? - + What name do you want to use to log in? Koje ime želite koristiti za prijavu? - + Choose a password to keep your account safe. Odaberite lozinku da bi račun bio siguran. - + + <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>Unesite istu lozinku dvaput, tako da bi se provjerile eventualne pogreške prilikom upisa. Dobra lozinka sadrži kombinaciju slova, brojki i interpunkcija, trebala bi biti dugačka najmanje osam znakova i trebala bi se mijenjati u redovitim intervalima.</small> - + What is the name of this computer? Koje je ime ovog računala? - + + Your Full Name + Vaše puno ime + + + + login + prijava + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ovo ime će se koristiti ako odaberete da je računalo vidljivo ostalim korisnicima na mreži.</small> - + + Computer Name + Ime računala + + + + + Password + Lozinka + + + + + Repeat Password + Ponovite lozinku + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Kad je ovaj okvir potvrđen, bit će napravljena provjera jakosti lozinke te nećete moći koristiti slabu lozinku. + + + + Require strong passwords. + Zahtijeva snažne lozinke. + + + Log in automatically without asking for the password. Automatska prijava bez traženja lozinke. - + Use the same password for the administrator account. Koristi istu lozinku za administratorski račun. - + Choose a password for the administrator account. Odaberi lozinku za administratorski račun. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Unesite istu lozinku dvaput, tako da bi se provjerile eventualne pogreške prilikom upisa.</small> @@ -2039,107 +2243,107 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. 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>esp</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>esp</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. - + EFI system partition flag not set Oznaka EFI particije nije postavljena - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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 partitons to install on. Nema particija na koje bi se izvršila instalacija. @@ -2205,14 +2409,14 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. ProcessResult - + There was no output from the command. Nema izlazne informacije od naredbe. - + Output: @@ -2221,52 +2425,52 @@ Izlaz: - + External command crashed. Vanjska naredba je prekinula s radom. - + Command <i>%1</i> crashed. Naredba <i>%1</i> je prekinula s radom. - + External command failed to start. Vanjska naredba nije uspješno pokrenuta. - + Command <i>%1</i> failed to start. Naredba <i>%1</i> nije uspješno pokrenuta. - + Internal error when starting command. Unutrašnja greška pri pokretanju naredbe. - + Bad parameters for process job call. Krivi parametri za proces poziva posla. - + External command failed to finish. Vanjska naredba se nije uspjela izvršiti. - + Command <i>%1</i> failed to finish in %2 seconds. Naredba <i>%1</i> nije uspjela završiti za %2 sekundi. - + External command finished with errors. Vanjska naredba je završila sa pogreškama. - + Command <i>%1</i> finished with exit code %2. Naredba <i>%1</i> je završila sa izlaznim kodom %2. @@ -2315,16 +2519,50 @@ Izlaz: (nema točke montiranja) - + Requirements checking for module <i>%1</i> is complete. Provjera zahtjeva za modul <i>%1</i> je dovršena. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Nema proizvoda + + + + No description provided. + Nije naveden opis. + + + + + + + + File not found + Datoteka nije pronađena + + + + Path <pre>%1</pre> must be an absolute path. + Putanja <pre>%1</pre> mora biti apsolutna putanja. + + + + Could not create new random file <pre>%1</pre>. + Ne mogu stvoriti slučajnu datoteku <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Ne mogu pročitati slučajnu datoteku <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Izlaz: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Ovo računalo ne zadovoljava minimalne zahtjeve za instalaciju %1.<br/>Instalacija se ne može nastaviti.<a href="#details">Detalji...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ovo računalo ne zadovoljava minimalne uvijete za instalaciju %1.<br/>Instalacija se ne može nastaviti.<a href="#details">Detalji...</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. Računalo ne zadovoljava neke od preporučenih uvjeta za instalaciju %1.<br/>Instalacija se može nastaviti, ali neke značajke možda neće biti dostupne. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Računalo ne zadovoljava neke od preporučenih uvjeta za instalaciju %1.<br/>Instalacija se može nastaviti, ali neke značajke možda neće biti dostupne. - + This program will ask you some questions and set up %2 on your computer. Ovaj program će vam postaviti neka pitanja i instalirati %2 na vaše računalo. - + For best results, please ensure that this computer: Za najbolje rezultate, pobrinite se da ovo računalo: - + System requirements Zahtjevi sustava @@ -2595,29 +2833,29 @@ Izlaz: SetHostNameJob - + Set hostname %1 Postavi ime računala %1 - + Set hostname <strong>%1</strong>. Postavi ime računala <strong>%1</strong>. - + Setting hostname %1. Postavljam ime računala %1. - - + + Internal Error Unutarnja pogreška - - + + Cannot write hostname to target system Ne mogu zapisati ime računala na ciljni sustav. @@ -2758,22 +2996,22 @@ Izlaz: Root točka montiranja je %1 - + Cannot disable root account. Ne mogu onemogućiti root račun. - + passwd terminated with error code %1. passwd je prekinut s greškom %1. - + Cannot set password for user %1. Ne mogu postaviti lozinku za korisnika %1. - + usermod terminated with error code %1. usermod je prekinut s greškom %1. @@ -2796,22 +3034,22 @@ Izlaz: Loš put: %1 - + Cannot set timezone. Ne mogu postaviti vremesku zonu. - + Link creation failed, target: %1; link name: %2 Kreiranje linka nije uspjelo, cilj: %1; ime linka: %2 - + Cannot set timezone, Ne mogu postaviti vremensku zonu, - + Cannot open /etc/timezone for writing Ne mogu otvoriti /etc/timezone za pisanje @@ -2857,22 +3095,22 @@ Izlaz: TrackingInstallJob - + Installation feedback Povratne informacije o instalaciji - + Sending installation feedback. Šaljem povratne informacije o instalaciji - + Internal error in install-tracking. Interna pogreška prilikom praćenja instalacije. - + HTTP request timed out. HTTP zahtjev je istekao @@ -2880,28 +3118,28 @@ Izlaz: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Izlaz: Praćenje instalacije pomaže %1 da vidi koliko ima korisnika, na koji hardver instalira %1 i (s posljednjim opcijama ispod) da dobije kontinuirane informacije o preferiranim aplikacijama. Kako bi vidjeli što se šalje molimo vas da kliknete na ikonu pomoći pokraj svake opcije. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Odabirom ove opcije slat ćete informacije vezane za instalaciju i vaš hardver. Informacija <b>će biti poslana samo jednom</b>nakon što završi instalacija. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Odabirom ove opcije slat će se <b>periodična</b>informacija prema %1 o vašoj instalaciji, hardveru i aplikacijama. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Odabirom ove opcije slat će se <b>redovna</b>informacija prema %1 o vašoj instalaciji, hardveru, aplikacijama i uzorci upotrebe. @@ -2952,7 +3190,7 @@ Izlaz: TrackingViewStep - + Feedback Povratna informacija @@ -2960,43 +3198,47 @@ Izlaz: 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Korisničko ime sadržava nedozvoljene znakove. Dozvoljena su samo mala slova i brojevi. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Dopuštena su samo 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Ime računala sadrži nedozvoljene znakove. Samo slova, brojevi i crtice su dozvoljene. - - - - + Your passwords do not match! Lozinke se ne podudaraju! @@ -3004,11 +3246,24 @@ Izlaz: UsersViewStep - + Users Korisnici + + VariantModel + + + Key + Ključ + + + + Value + Vrijednost + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Izlaz: Oblik - + + + Select application and system language + Odaberite program i jezik sustava + + + + Open donations website + Otvorite web mjesto za donacije + + + + &Donate + &Doniraj + + + + Open help and support website + Otvorite web mjesto za pomoć i podršku + + + + Open issues and bug-tracking website + Otvorene web mjesto za praćenje bugova i poteškoća + + + + Open release notes website + Otvorite web mjesto s bilješkama izdanja + + + &Release notes &Napomene o izdanju - + &Known issues &Poznati problemi - - - Select language - Odaberite jezik - - - + &Support &Podrška @@ -3096,42 +3376,42 @@ Izlaz: &O programu - + <h1>Welcome to the %1 installer.</h1> <h1>Dobrodošli u %1 instalacijski program.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> Dobrodošli u Calamares instalacijski program za %1. - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Dobrodošli u Calamares instalacijski program za %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Dobrodošli u %1 instalacijski program.</h1> - + About %1 setup O %1 instalacijskom programu - + About %1 installer O %1 instalacijskom programu - + <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-2019 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/>za %3</strong><br/><br/>Autorska prava 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorska prava 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Hvala <a href="https://calamares.io/team/">Calamares timu</a> i <a href="https://www.transifex.com/calamares/calamares/">Calamares timu za prevođenje</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> sponzorira <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 podrška @@ -3139,7 +3419,7 @@ Izlaz: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 09a0f4d51..d723515dd 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Mester Boot Record - %1 - + Boot Partition Indító partíció - + System Partition Rendszer Partíció - + Do not install a boot loader Ne telepítsen rendszerbetöltőt - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Üres oldal @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Adatlap - + GlobalStorage Tárolás - + JobQueue Feladatok - + Modules Modulok - + Type: Típus: - - + + none semelyik - + Interface: Interfész: - + Tools Eszközök - + + Reload Stylesheet + Stílusok újratöltése + + + + Widget Tree + Modul- fa + + + Debug information Hibakeresési információk @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Összeállítás - + Install Telepít @@ -123,7 +133,7 @@ Művelet nem sikerült (%1) - + Programmed job failure was explicitly requested. Kifejezetten kért programozott műveleti hiba. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Kész @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Parancs futtatása %1 %2 + Run command '%1' in target system. + '%1' parancs futtatása a cél rendszeren. - + + Run command '%1'. + '%1' parancs futtatása. + + + Running command %1 %2 Parancs futtatása %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Futó %1 műveletek. - + Bad working directory path Rossz munkakönyvtár útvonal - + Working directory %1 for python job %2 is not readable. Munkakönyvtár %1 a python folyamathoz %2 nem olvasható. - + Bad main script file Rossz alap script fájl - + Main script file %1 for python job %2 is not readable. Alap script fájl %1 a python folyamathoz %2 nem olvasható. - + Boost.Python error in job "%1". Boost. Python hiba ebben a folyamatban "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Várakozás a %n modulokra.Várakozás %n modulokra. - + (%n second(s)) (%n másodperc)(%n másodperc) - + System-requirements checking is complete. Rendszerkövetelmények ellenőrzése kész. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Vissza - - + + &Next &Következő - - + + &Cancel &Mégse - - + 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. - + Setup Failed Telepítési hiba - + + Would you like to paste the install log to the web? + + + + + Install Log Paste URL + + + + + 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 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> - + &Set up now &Telepítés most - + &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. - + 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? Minden változtatás elveszik, ha kilépsz a telepítőből. - + + &Yes &Igen - + + &No &Nem - + &Close &Bezár - + Continue with setup? Folytatod a telepítéssel? - + 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> - + &Install now &Telepítés most - + Go &back Menj &vissza - + &Done &Befejez - + The installation is complete. Close the installer. A telepítés befejeződött, Bezárhatod a telepítőt. - + Error Hiba - + Installation Failed Telepítés nem sikerült @@ -372,40 +403,49 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CalamaresPython::Helper - + Unknown exception type Ismeretlen kivétel típus - + unparseable Python error nem egyeztethető Python hiba - + unparseable Python traceback nem egyeztethető Python visszakövetés - + Unfetchable Python error. Összehasonlíthatatlan Python hiba. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program %1 Program telepítése - + %1 Installer %1 Telepítő - + Show debug information Hibakeresési információk mutatása @@ -436,7 +476,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. <strong>Manuális partícionálás</strong><br/>Létrehozhat vagy átméretezhet partíciókat. - + Boot loader location: Rendszerbetöltő helye: @@ -448,8 +488,8 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. - - + + Current: Aktuális: @@ -464,96 +504,96 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +642,18 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CommandList - - + + Could not run command. A parancsot nem lehet futtatni. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. A parancs a gazdakörnyezetben fut, és ismernie kell a gyökér útvonalát, de nincs rootMountPoint megadva. - + The command needs to know the user's name, but no username is defined. A parancsnak tudnia kell a felhasználónevet, de az nincs megadva. @@ -621,7 +661,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. ContextualProcessJob - + Contextual Processes Job Környezetfüggő folyamatok feladat @@ -801,17 +841,17 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. 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. @@ -958,7 +998,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. DummyCppJob - + Dummy C++ Job Teszt C++ job @@ -1125,12 +1165,12 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. <html><head/><body><p>Ezt bejelölve a rendszer újra fog indulni amikor a <span style="font-style:italic;">Kész</span>gombra kattint vagy bezárja a telepítőt.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Telepítés nem sikerült</h1><br/>%1 nem lett telepítve a számítógépére. <br/>A hibaüzenet: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>A telepítés hibába ütközött.</h1><br/>%1 nem lett telepítve a számítógépre.<br/>A hibaüzenet: %2. @@ -1189,66 +1229,74 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. GeneralRequirements - + has at least %1 GiB available drive space legalább %1 GiB lemezterület elérhető - + There is not enough drive space. At least %1 GiB is required. Nincs elég lemezterület. Legalább %1 GiB szükséges. - + has at least %1 GiB working memory legalább %1 GiB memória elérhető - + The system does not have enough working memory. At least %1 GiB is required. A rendszer nem tartalmaz elég memóriát. Legalább %1 GiB szükséges. - + is plugged in to a power source csatlakoztatva van külső áramforráshoz - + The system is not plugged in to a power source. A rendszer nincs csatlakoztatva külső áramforráshoz - + is connected to the Internet csatlakozik az internethez - + The system is not connected to the Internet. A rendszer nem csatlakozik az internethez. - + The setup program is not running with administrator rights. A telepítő program nem adminisztrátori joggal fut. - + The installer is not running with administrator rights. A telepítő nem adminisztrátori jogokkal fut. - + The screen is too small to display the setup program. A képernyő mérete túl kicsi a telepítő program megjelenítéséhez. - + The screen is too small to display the installer. A képernyőméret túl kicsi a telepítő megjelenítéséhez. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1275,6 +1323,22 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. Sikertelen fájl írás <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + initramfs létrehozása mkinitcpio utasítással. + + + + InitramfsJob + + + Creating initramfs. + initramfs létrehozása. + + InteractiveTerminalPage @@ -1296,7 +1360,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. InteractiveTerminalViewStep - + Script Szkript @@ -1325,22 +1389,22 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. LCLocaleDialog - + System locale setting Területi beállítások - + 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>. A nyelvi beállítás kihat a nyelvi és karakter beállításokra a parancssori elemeknél.<br/>A jelenlegi beállítás <strong>%1</strong>. - + &Cancel &Mégse - + &OK &OK @@ -1353,27 +1417,27 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. Adatlap - + I accept the terms and conditions above. Elfogadom a fentebbi felhasználási feltételeket. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensz</h1>A telepítő szabadalmaztatott szoftvert fog telepíteni. Információ a licenszben. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Kérlek, olvasd el a fenti végfelhasználói licenszfeltételeket (EULAs)<br/>Ha nem értesz egyet a feltételekkel, akkor a telepítés nem folytatódik. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensz</h1>A telepítő szabadalmaztatott szoftvert fog telepíteni. Információ a licenszben. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Kérlek, olvasd el a fenti végfelhasználói licenszfeltételeket (EULAs)<br/>Ha nem értesz egyet a feltételekkel, akkor a szabadalmaztatott program telepítése nem folytatódik és nyílt forrású program lesz telepítve helyette. @@ -1381,7 +1445,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. LicenseViewStep - + License Licensz @@ -1389,64 +1453,64 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/> %2 -ból/ -ből - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>%1 grafikus driver</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 böngésző plugin</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 csomag</strong><br/><font color="Grey" >%2 -ból/ -ből</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">%2 -ból/ -ből</font> - + Shows the complete license text Teljes licensz szöveg megjelenítése - + Hide license text Licensz szöveg elrejtése - + Show license agreement Licensz egyezmény megjelenítése - + Hide license agreement Licensz egyezmény elrejtése - + Opens the license agreement in a browser window. Licensz egyezmény megnyitása új böngészőablakban. - + <a href="%1">View license agreement</a> <a href="%1">Licensz egyezmény megtekintése</a> @@ -1454,33 +1518,33 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. LocalePage - + 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. - + Region: Régió: - + Zone: Zóna: - - + + &Change... &Változtat... - + Set timezone to %1/%2.<br/> Időzóna beállítása %1/%2.<br/> @@ -1488,38 +1552,92 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. LocaleViewStep - - Loading location data... - Hely adatok betöltése... - - - + Location Hely + + LuksBootKeyFileJob + + + Configuring LUKS key file. + LUKS kulcs fájl konfigurálása. + + + + + No partitions are defined. + Nincsenek partíciók definiálva. + + + + + + Encrypted rootfs setup error + Titkosított rootfs telepítési hiba + + + + Root partition %1 is LUKS but no passphrase has been set. + A %1 root partíció LUKS de beállítva nincs kulcs. + + + + Could not create LUKS key file for root partition %1. + Nem sikerült létrehozni a LUKS kulcs fájlt a %1 root partícióhoz + + + + Could configure LUKS key file on partition %1. + Nem sikerült beállítani a LUKS kulcs fájlt a %1 root partíción. + + + + MachineIdJob + + + Generate machine-id. + Gépazonosító előállítása. + + + + Configuration Error + Konfigurációs hiba + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Név - + Description Leírás - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Hálózati telepítés. (Kikapcsolva: A csomagokat nem lehet letölteni, ellenőrizd a hálózati kapcsolatot) - + Network Installation. (Disabled: Received invalid groups data) Hálózati Telepítés. (Letiltva: Hibás adat csoportok fogadva) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1550,12 +1668,12 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. OEMViewStep - + OEM Configuration OEM konfiguráció - + Set the OEM Batch Identifier to <code>%1</code>. Állítsa az OEM Batch azonosítót erre: <code>%1</code>. @@ -1563,117 +1681,117 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. 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ó @@ -1683,125 +1801,171 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. 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 + + + + + PackageChooserPage + + + Form + Adatlap + + + + Product Name + + + + + TextLabel + Szöveges címke + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1834,47 +1998,86 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. Mi a neved? - + What name do you want to use to log in? Milyen felhasználónévvel szeretnél bejelentkezni? - + Choose a password to keep your account safe. Adj meg jelszót a felhasználói fiókod védelmére. - + + <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>Írd be a jelszót kétszer így ellenőrizve lesznek a gépelési hibák. A jó jelszó tartalmazzon kis és nagy betűket, számokat és legalább 8 karakter hosszúságú. Ajánlott megváltoztatni rendszeres időközönként.</small> - + What is the name of this computer? Mi legyen a számítógép neve? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ez a név lesz használva ha a számítógép látható a hálózaton.</small> - + + Computer Name + + + + + + 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. Jelszó megkérdezése nélküli automatikus bejelentkezés. - + Use the same password for the administrator account. Ugyanaz a jelszó használata az adminisztrátor felhasználóhoz. - + Choose a password for the administrator account. Adj meg jelszót az adminisztrátor felhasználói fiókhoz. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Írd be a jelszót kétszer így ellenőrizve lesznek a gépelési hibák.</small> @@ -2039,107 +2242,107 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. 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>esp</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 rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> Az EFI rendszer beállításához lépj vissza és hozz létre FAT32 fájlrendszert <strong>esp</strong> zászlóval és <strong>%2</strong> csatolási ponttal beállítva.<br/><br/> Folytathatod a telepítést EFI rendszerpartíció létrehozása nélkül is, de lehet, hogy a rendszer nem indul majd. - + EFI system partition flag not set EFI partíciós zászló nincs beállítva - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> A csatolási pont <strong>%2</strong> beállítása sikerült a partíción de a zászló nincs beállítva. A beálíltásához lépj vissza szerkeszteni a partíciót..<br/><br/> Folytathatod a telepítést zászló beállítása nélkül is, de lehet, hogy a rendszer nem indul el majd. - + 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 partitons to install on. Nincsenek partíciók a telepítéshez. @@ -2205,14 +2408,14 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. ProcessResult - + There was no output from the command. A parancsnak nem volt kimenete. - + Output: @@ -2221,52 +2424,52 @@ Kimenet: - + External command crashed. Külső parancs összeomlott. - + Command <i>%1</i> crashed. Parancs <i>%1</i> összeomlott. - + External command failed to start. A külső parancsot nem sikerült elindítani. - + Command <i>%1</i> failed to start. A(z) <i>%1</i> parancsot nem sikerült elindítani. - + Internal error when starting command. Belső hiba a parancs végrehajtásakor. - + Bad parameters for process job call. Hibás paraméterek a folyamat hívásához. - + External command failed to finish. Külső parancs nem fejeződött be. - + Command <i>%1</i> failed to finish in %2 seconds. A(z) <i>%1</i> parancsot nem sikerült befejezni %2 másodperc alatt. - + External command finished with errors. A külső parancs hibával fejeződött be. - + Command <i>%1</i> finished with exit code %2. A(z) <i>%1</i> parancs hibakóddal lépett ki: %2. @@ -2315,16 +2518,50 @@ Kimenet: (nincs csatolási pont) - + Requirements checking for module <i>%1</i> is complete. Követelmények ellenőrzése a <i>%1</i>modulhoz kész. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,38 +2781,38 @@ Kimenet: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Ez a számítógép nem felel meg a minimum követelményeknek a %1 telepítéséhez. <br/>A telepítés nem folytatható. <a href="#details">Részletek...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ez a számítógép nem felel meg a minimum követelményeknek a %1 telepítéséhez.<br/> Telepítés nem folytatható. <a href="#details">Részletek...</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. Ez a számítógép nem felel meg néhány követelménynek a %1 telepítéséhez. <br/>A telepítés folytatható de előfordulhat néhány képesség nem lesz elérhető. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Ez a számítógép nem felel meg a minimum követelményeknek a %1 telepítéséhez.<br/>Telepítés folytatható de néhány tulajdonság valószínűleg nem lesz elérhető. - + This program will ask you some questions and set up %2 on your computer. Ez a program fel fog tenni néhány kérdést és %2 -t telepíti a számítógépre. - + For best results, please ensure that this computer: A legjobb eredményért győződjünk meg, hogy ez a számítógép: - + System requirements Rendszer követelmények @@ -2596,29 +2833,29 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l SetHostNameJob - + Set hostname %1 Hálózati név beállítása a %1 -en - + Set hostname <strong>%1</strong>. Hálózati név beállítása a következőhöz: <strong>%1</strong>. - + Setting hostname %1. Hálózati név beállítása a %1 -hez - - + + Internal Error Belső hiba - - + + Cannot write hostname to target system Nem lehet a hálózati nevet írni a célrendszeren @@ -2759,22 +2996,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l rootMountPoint is %1 - + Cannot disable root account. A root account- ot nem lehet inaktiválni. - + passwd terminated with error code %1. passwd megszakítva %1 hibakóddal. - + Cannot set password for user %1. Nem lehet a %1 felhasználó jelszavát beállítani. - + usermod terminated with error code %1. usermod megszakítva %1 hibakóddal. @@ -2797,22 +3034,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Rossz elérési út: %1 - + Cannot set timezone. Nem lehet az időzónát beállítani. - + Link creation failed, target: %1; link name: %2 Link létrehozása nem sikerült: %1, link év: %2 - + Cannot set timezone, Nem lehet beállítani az időzónát . - + Cannot open /etc/timezone for writing Nem lehet megnyitni írásra: /etc/timezone @@ -2858,22 +3095,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l TrackingInstallJob - + Installation feedback Visszajelzés a telepítésről - + Sending installation feedback. Telepítési visszajelzés küldése. - + Internal error in install-tracking. Hiba a telepítő nyomkövetésben. - + HTTP request timed out. HTTP kérés ideje lejárt. @@ -2881,28 +3118,28 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l TrackingMachineNeonJob - + 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. @@ -2936,17 +3173,17 @@ Calamares hiba %1. A telepítés nyomkövetése %1 segít látni, hogy hány felhasználója van, milyen eszközre , %1 és (az alábbi utolsó két opcióval), folyamatosan kapunk információt az előnyben részesített alkalmazásokról. Hogy lásd mi lesz elküldve kérlek kattints a súgó ikonra a mező mellett. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Ezt kiválasztva információt fogsz küldeni a telepítésről és a számítógépről. Ez az információ <b>csak egyszer lesz </b>elküldve telepítés után. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Ezt kiválasztva információt fogsz küldeni <b>időközönként</b> a telepítésről, számítógépről, alkalmazásokról ide %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Ezt kiválasztva<b> rendszeresen</b> fogsz információt küldeni a telepítésről, számítógépről, alkalmazásokról és használatukról ide %1. @@ -2954,7 +3191,7 @@ Calamares hiba %1. TrackingViewStep - + Feedback Visszacsatolás @@ -2962,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - A felhasználónév érvénytelen karaktereket tartalmaz. Csak kis kezdőbetűk és számok érvényesek. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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ú. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - A hálózati név érvénytelen karaktereket tartalmaz. Csak betűk, számok és kötőjel érvényes. - - - - + Your passwords do not match! A két jelszó nem egyezik! @@ -3006,11 +3247,24 @@ Calamares hiba %1. UsersViewStep - + Users Felhasználók + + VariantModel + + + Key + + + + + Value + Érték + + VolumeGroupBaseDialog @@ -3072,23 +3326,48 @@ Calamares hiba %1. Adatlap - + + + Select application and system language + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + &Release notes &Kiadási megjegyzések - + &Known issues &Ismert hibák - - - Select language - Válasszon nyelvet - - - + &Support &Támogatás @@ -3098,42 +3377,42 @@ Calamares hiba %1. &Névjegy - + <h1>Welcome to the %1 installer.</h1> <h1>Üdvözlet a %1 telepítőben.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Üdvözlet a Calamares %1 telepítőjében.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Üdvözli önt a Calamares telepítő itt %1!</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Köszöntjük a %1 telepítőben!</h1> - + About %1 setup A %1 telepítőről. - + About %1 installer A %1 telepítőről - + <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-2019 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/>a %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Köszönet<a href="https://calamares.io/team/"> a Calamares csapatnak</a> és a <a href="https://www.transifex.com/calamares/calamares/"> Calamares fordítói csapatának</a>. <br/><br/><a href="https://calamares.io/">A Calamares</a> fejlesztését a <br/><a href="http://www.blue-systems.com/">Blue Systems</a> -Liberating Software támogatja. - + %1 support %1 támogatás @@ -3141,7 +3420,7 @@ Calamares hiba %1. WelcomeViewStep - + Welcome Üdvözlet diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index e55cdfb36..7515e0b57 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record %1 - + Boot Partition Partisi Boot - + System Partition Partisi Sistem - + Do not install a boot loader Jangan instal boot loader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Halaman Kosong @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Isian - + GlobalStorage PenyimpananGlobal - + JobQueue AntrianTugas - + Modules Modul - + Type: Tipe: - - + + none tidak ada - + Interface: Antarmuka: - + Tools Alat - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Informasi debug @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instal @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Selesai @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Jalankan perintah %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Menjalankan perintah %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Menjalankan %1 operasi. - + Bad working directory path Jalur lokasi direktori tidak berjalan baik - + Working directory %1 for python job %2 is not readable. Direktori kerja %1 untuk penugasan python %2 tidak dapat dibaca. - + Bad main script file Berkas skrip utama buruk - + Main script file %1 for python job %2 is not readable. Berkas skrip utama %1 untuk penugasan python %2 tidak dapat dibaca. - + Boost.Python error in job "%1". Boost.Python mogok dalam penugasan "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Kembali - - + + &Next &Berikutnya - - + + &Cancel &Batal - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Batalkan instalasi tanpa mengubah sistem yang ada. - + Setup Failed - - Calamares Initialization Failed - Inisialisasi Calamares Gagal + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>Modul berikut tidak dapat dimuat. - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install &Instal - + Setup is complete. Close the setup program. - + 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? Instalasi akan ditutup dan semua perubahan akan hilang. - + + &Yes &Ya - + + &No &Tidak - + &Close &Tutup - + Continue with setup? Lanjutkan dengan setelan ini? - + 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> - + &Install now &Instal sekarang - + Go &back &Kembali - + &Done &Kelar - + The installation is complete. Close the installer. Instalasi sudah lengkap. Tutup installer. - + Error Kesalahan - + Installation Failed Instalasi Gagal @@ -371,40 +402,49 @@ Instalasi akan ditutup dan semua perubahan akan hilang. CalamaresPython::Helper - + Unknown exception type Tipe pengecualian tidak dikenal - + unparseable Python error tidak dapat mengurai pesan kesalahan Python - + unparseable Python traceback tidak dapat mengurai penelusuran balik Python - + Unfetchable Python error. Tidak dapat mengambil pesan kesalahan Python. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Installer %1 - + Show debug information Tampilkan informasi debug @@ -435,7 +475,7 @@ Instalasi akan ditutup dan semua perubahan akan hilang. <strong>Pemartisian manual</strong><br/>Anda bisa membuat atau mengubah ukuran partisi. - + Boot loader location: Lokasi Boot loader: @@ -447,8 +487,8 @@ Instalasi akan ditutup dan semua perubahan akan hilang. - - + + Current: Saat ini: @@ -463,96 +503,96 @@ Instalasi akan ditutup dan semua perubahan akan hilang. <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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Instalasi akan ditutup dan semua perubahan akan hilang. CommandList - - + + Could not run command. Tidak dapat menjalankan perintah - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Perintah berjalan di lingkungan host dan perlu diketahui alur root-nya, tetapi bukan rootMountPoint yang ditentukan. - + The command needs to know the user's name, but no username is defined. Perintah perlu diketahui nama si pengguna, tetapi bukan nama pengguna yang ditentukan. @@ -620,7 +660,7 @@ Instalasi akan ditutup dan semua perubahan akan hilang. ContextualProcessJob - + Contextual Processes Job Memproses tugas kontekstual @@ -800,17 +840,17 @@ Instalasi akan ditutup dan semua perubahan akan hilang. 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. @@ -957,7 +997,7 @@ Instalasi akan ditutup dan semua perubahan akan hilang. DummyCppJob - + Dummy C++ Job Tugas C++ Kosong @@ -1124,12 +1164,12 @@ Instalasi akan ditutup dan semua perubahan akan hilang. - + <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. <h1>Instalasi Gagal</h1><br/>%1 tidak bisa diinstal pada komputermu.<br/>Pesan galatnya adalah: %2. @@ -1188,66 +1228,74 @@ Instalasi akan ditutup dan semua perubahan akan hilang. 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 terhubung dengan sumber listrik - + The system is not plugged in to a power source. Sistem tidak terhubung dengan sumber listrik. - + is connected to the Internet terkoneksi dengan internet - + The system is not connected to the Internet. Sistem tidak terkoneksi dengan internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Installer tidak dijalankan dengan kewenangan administrator. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Layar terlalu kecil untuk menampilkan installer. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Instalasi akan ditutup dan semua perubahan akan hilang. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Instalasi akan ditutup dan semua perubahan akan hilang. InteractiveTerminalViewStep - + Script Skrip @@ -1324,22 +1388,22 @@ Instalasi akan ditutup dan semua perubahan akan hilang. LCLocaleDialog - + System locale setting Setelan lokal sistem - + 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>. Pengaturan system locale berpengaruh pada bahasa dan karakter pada beberapa elemen antarmuka Command Line. <br/>Pengaturan saat ini adalah <strong>%1</strong>. - + &Cancel &Batal - + &OK &OK @@ -1352,27 +1416,27 @@ Instalasi akan ditutup dan semua perubahan akan hilang. Isian - + I accept the terms and conditions above. Saya menyetujui segala persyaratan di atas. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Persetujuan Lisensi</h1>Prosedur ini akan memasang perangkat lunak berpemilik yang terkait dengan lisensi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Mohon periksa End User License Agreements (EULA) di atas.<br/>Bila Anda tidak setuju, maka prosedur tidak bisa dilanjutkan. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Persetujuan Lisensi</h1>Prosedur ini dapat memasang perangkat lunak yang terkait dengan lisensi agar bisa menyediakan fitur tambahan dan meningkatkan pengalaman pengguna. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Mohon periksa End User License Agreements(EULA) di atas.<br/>Bila Anda tidak setuju, perangkat lunak proprietary tidak akan diinstal, dan alternatif open source akan diinstal sebagai gantinya @@ -1380,7 +1444,7 @@ Instalasi akan ditutup dan semua perubahan akan hilang. LicenseViewStep - + License Lisensi @@ -1388,64 +1452,64 @@ Instalasi akan ditutup dan semua perubahan akan hilang. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>by %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 driver grafis</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin peramban</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</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 paket</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Instalasi akan ditutup dan semua perubahan akan hilang. LocalePage - + 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. - + Region: Wilayah: - + Zone: Zona: - - + + &Change... &Ubah... - + Set timezone to %1/%2.<br/> Setel zona waktu ke %1/%2.<br/> @@ -1487,38 +1551,92 @@ Instalasi akan ditutup dan semua perubahan akan hilang. LocaleViewStep - - Loading location data... - Memuat data lokasi... - - - + Location Lokasi + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Menghasilkan machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nama - + Description Deskripsi - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalasi Jaringan. (Dinonfungsikan: Tak mampu menarik daftar paket, periksa sambungan jaringanmu) - + Network Installation. (Disabled: Received invalid groups data) Instalasi jaringan. (Menonaktifkan: Penerimaan kelompok data yang tidak sah) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Instalasi akan ditutup dan semua perubahan akan hilang. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ Instalasi akan ditutup dan semua perubahan akan hilang. 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 @@ -1682,125 +1800,171 @@ Instalasi akan ditutup dan semua perubahan akan hilang. 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 + + + + + PackageChooserPage + + + Form + Formulir + + + + Product Name + + + + + TextLabel + Label teks + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Instalasi akan ditutup dan semua perubahan akan hilang. Siapa nama Anda? - + What name do you want to use to log in? Nama apa yang ingin Anda gunakan untuk log in? - + Choose a password to keep your account safe. Pilih sebuah kata sandi untuk menjaga keamanan akun Anda. - + + <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>Ketik kata sandi yang sama dua kali, supaya kesalahan pengetikan dapat diketahui. Sebuah kata sandi yang bagus berisi campuran dari kata, nomor dan tanda bada, sebaiknya memiliki panjang paling sedikit delapan karakter, dan sebaiknya diganti dalam interval yang teratur.</small> - + What is the name of this computer? Apakah nama dari komputer ini? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Nama ini akan digunakan jika anda membuat komputer ini terlihat oleh orang lain dalam sebuah jaringan.</small> - + + Computer Name + + + + + + 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. Log in otomatis tanpa menanyakan sandi. - + Use the same password for the administrator account. Gunakan sandi yang sama untuk akun administrator. - + Choose a password for the administrator account. Pilih sebuah kata sandi untuk akun administrator. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Ketik kata sandi yang sama dua kali, supaya kesalahan pengetikan dapat diketahui.</small> @@ -2038,107 +2241,107 @@ Instalasi akan ditutup dan semua perubahan akan hilang. 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>esp</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. Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Untuk mengkonfigurasi sebuah partisi sistem EFI, pergi mundur dan pilih atau ciptakan sebuah filesystem FAT32 dengan bendera <strong>esp</strong> yang difungsikan dan titik kait <strong>%2</strong>.<br/><br/>Kamu bisa melanjutkan tanpa menyetel sebuah partisi sistem EFI tapi sistemmu mungkin gagal memulai. - + EFI system partition flag not set Bendera partisi sistem EFI tidak disetel - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Sebuah partisi telah dikonfigurasi dengan titik kait <strong>%2</strong> tapi bendera <strong>esp</strong> tersebut tidak disetel.<br/>Untuk mengeset bendera, pergi mundur dan editlah partisi.<br/><br/>Kamu bisa melanjutkan tanpa menyetel bendera tapi sistemmu mungkin gagal memulai. - + 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 partitons to install on. @@ -2204,14 +2407,14 @@ Instalasi akan ditutup dan semua perubahan akan hilang. ProcessResult - + There was no output from the command. Tidak ada keluaran dari perintah. - + Output: @@ -2220,52 +2423,52 @@ Keluaran: - + External command crashed. Perintah eksternal rusak. - + Command <i>%1</i> crashed. Perintah <i>%1</i> mogok. - + External command failed to start. Perintah eksternal gagal dimulai - + Command <i>%1</i> failed to start. Perintah <i>%1</i> gagal dimulai. - + Internal error when starting command. Terjadi kesalahan internal saat menjalankan perintah. - + Bad parameters for process job call. Parameter buruk untuk memproses panggilan tugas, - + External command failed to finish. Perintah eksternal gagal diselesaikan . - + Command <i>%1</i> failed to finish in %2 seconds. Perintah <i>%1</i> gagal untuk diselesaikan dalam %2 detik. - + External command finished with errors. Perintah eksternal diselesaikan dengan kesalahan . - + Command <i>%1</i> finished with exit code %2. Perintah <i>%1</i> diselesaikan dengan kode keluar %2. @@ -2314,16 +2517,50 @@ Keluaran: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2543,39 +2780,39 @@ Keluaran: 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> Komputer ini tidak memenuhi syarat minimum untuk memasang %1. Installer tidak dapat dilanjutkan. <a href=" - + 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. Komputer ini tidak memenuhi beberapa syarat yang dianjurkan untuk memasang %1. Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. - + This program will ask you some questions and set up %2 on your computer. Program ini akan mengajukan beberapa pertanyaan dan menyetel %2 pada komputer Anda. - + For best results, please ensure that this computer: Untuk hasil terbaik, mohon pastikan bahwa komputer ini: - + System requirements Kebutuhan sistem @@ -2596,29 +2833,29 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. SetHostNameJob - + Set hostname %1 Pengaturan hostname %1 - + Set hostname <strong>%1</strong>. Atur hostname <strong>%1</strong>. - + Setting hostname %1. Mengatur hostname %1. - - + + Internal Error Kesalahan Internal - - + + Cannot write hostname to target system Tidak dapat menulis nama host untuk sistem target @@ -2759,22 +2996,22 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.rootMountPoint adalah %1 - + Cannot disable root account. Tak bisa menonfungsikan akun root. - + passwd terminated with error code %1. passwd terhenti dengan kode galat %1. - + Cannot set password for user %1. Tidak dapat menyetel sandi untuk pengguna %1. - + usermod terminated with error code %1. usermod dihentikan dengan kode kesalahan %1. @@ -2797,22 +3034,22 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Jalur lokasi buruk: %1 - + Cannot set timezone. Tidak dapat menyetel zona waktu. - + Link creation failed, target: %1; link name: %2 Pembuatan tautan gagal, target: %1; nama tautan: %2 - + Cannot set timezone, Tidak bisa menetapkan zona waktu. - + Cannot open /etc/timezone for writing Tidak bisa membuka /etc/timezone untuk penulisan @@ -2858,22 +3095,22 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. TrackingInstallJob - + Installation feedback Umpan balik instalasi. - + Sending installation feedback. Mengirim umpan balik installasi. - + Internal error in install-tracking. Galat intern di pelacakan-instalasi. - + HTTP request timed out. Permintaan waktu HTTP habis. @@ -2881,28 +3118,28 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. TrackingMachineNeonJob - + 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. @@ -2935,17 +3172,17 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Instal bantuan pelacakan %1 untuk melihat berapa banyak pengguna memiliki, piranti keras apa yang mereka instal %1 dan (dengan dua pilihan terakhir), dapatkan informasi berkelanjutan tentang aplikasi yang disukai. Untuk melihat apa yang akan dikirim, silakan klik ikon bantuan ke beberapa area selanjtunya. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Dengan memilih ini Anda akan mengirim informasi tentang instalasi dan piranti keras Anda. Informasi ini hanya akan <b>dikirim sekali</b> setelah instalasi selesai. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Dengan memilih ini anda akan <b> secara berkala</b> mengirim informasi tentang instalasi, piranti keras dan aplikasi Anda, ke %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Dengan memilih ini anda akan<b>secara teratur</b> mengirim informasi tentang instalasi, piranti keras, aplikasi dan pola pemakaian Anda, ke %1. @@ -2953,7 +3190,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. TrackingViewStep - + Feedback Umpan balik @@ -2961,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Nama pengguna Anda berisi karakter yang tidak sah. Hanya huruf kecil dan angka yang diperbolehkan. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Hostname Anda berisi karakter yang tidak sah. Hanya huruf kecil, angka, dan strip yang diperbolehkan. - - - - + Your passwords do not match! Sandi Anda tidak sama! @@ -3005,11 +3246,24 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. UsersViewStep - + Users Pengguna + + VariantModel + + + Key + + + + + Value + Nilai + + VolumeGroupBaseDialog @@ -3071,23 +3325,48 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.Isian - - &Release notes - &Catatan rilis - - - - &Known issues - &Isu-isu yang diketahui - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Catatan rilis + + + + &Known issues + &Isu-isu yang diketahui + + + &Support &Dukungan @@ -3097,42 +3376,42 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan.&Tentang - + <h1>Welcome to the %1 installer.</h1> <h1>Selamat datang di installer %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Selamat datang di Calamares installer untuk %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer Tentang 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-2019 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. - + %1 support Dukungan %1 @@ -3140,7 +3419,7 @@ Instalasi dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. WelcomeViewStep - + Welcome Selamat Datang diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 5133e0205..70b6b64b3 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Aðalræsifærsla (MBR) %1 - + Boot Partition Ræsidisksneið - + System Partition Kerfisdisksneið - + Do not install a boot loader Ekki setja upp ræsistjóra - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Auð síða @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Eyðublað - + GlobalStorage VíðværGeymsla - + JobQueue Vinnuröð - + Modules Forritseiningar - + Type: Tegund: - - + + none ekkert - + Interface: Viðmót: - + Tools Verkfæri - + + Reload Stylesheet + Endurhlaða stílblað + + + + Widget Tree + Greinar viðmótshluta + + + Debug information Villuleitarupplýsingar @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Setja upp - + Install Setja upp @@ -120,10 +130,10 @@ Job failed (%1) - + Verk mistókst (%1) - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Búið @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Keyra skipun %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Keyri skipun %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Keyri %1 aðgerð. - + Bad working directory path Röng slóð á vinnumöppu - + Working directory %1 for python job %2 is not readable. Vinnslumappa %1 fyrir python-verkið %2 er ekki lesanleg. - + Bad main script file Röng aðal-skriftuskrá - + Main script file %1 for python job %2 is not readable. Aðal-skriftuskrá %1 fyrir python-verkið %2 er ekki lesanleg. - + Boost.Python error in job "%1". Boost.Python villa í verkinu "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Til baka - - + + &Next &Næst - - + + &Cancel &Hætta við - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Hætta við uppsetningu ánþess að breyta kerfinu. - + Setup Failed + Uppsetning mistókst + + + + Would you like to paste the install log to the web? - - 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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Setja upp núna - + &Set up - + &Setja upp - + &Install &Setja upp - + Setup is complete. Close the setup program. - + 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? Uppsetningarforritið mun hætta og allar breytingar tapast. - + + &Yes &Já - + + &No &Nei - + &Close &Loka - + Continue with setup? Halda áfram með uppsetningu? - + 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> - + &Install now Setja &inn núna - + Go &back Fara til &baka - + &Done &Búið - + The installation is complete. Close the installer. Uppsetning er lokið. Lokaðu uppsetningarforritinu. - + Error Villa - + Installation Failed Uppsetning mistókst @@ -371,40 +402,49 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CalamaresPython::Helper - + Unknown exception type Óþekkt tegund fráviks - + unparseable Python error óþáttanleg Python villa - + unparseable Python traceback óþáttanleg Python reki - + Unfetchable Python error. Ósækjanleg Python villa. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 uppsetningarforrit - + Show debug information Birta villuleitarupplýsingar @@ -435,7 +475,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. <strong>Handvirk disksneiðing</strong><br/>Þú getur búið til eða breytt stærð disksneiða sjálft. - + Boot loader location: Staðsetning ræsistjóra @@ -447,8 +487,8 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - - + + Current: Núverandi: @@ -463,96 +503,96 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. <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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. CommandList - - + + Could not run command. Gat ekki keyrt skipun. - + 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. @@ -620,7 +660,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. 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. @@ -957,7 +997,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1124,12 +1164,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - + <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. @@ -1144,7 +1184,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Setup Complete - + Uppsetningu lokið @@ -1154,12 +1194,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. The setup of %1 is complete. - + Uppsetningu á %1 er lokið. The installation of %1 is complete. - Uppsetningu af %1 er lokið. + Uppsetningu á %1 er lokið. @@ -1188,66 +1228,74 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. 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 er í sambandi við aflgjafa - + The system is not plugged in to a power source. Kerfið er ekki í sambandi við aflgjafa. - + is connected to the Internet er tengd við Internetið - + The system is not connected to the Internet. Kerfið er ekki tengd við internetið. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Uppsetningarforritið er ekki keyrandi með kerfisstjóraheimildum. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Skjárinn er of lítill til að birta uppsetningarforritið. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. InteractiveTerminalViewStep - + Script Skrifta @@ -1324,22 +1388,22 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LCLocaleDialog - + System locale setting Staðfærsla kerfisins stilling - + 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 &Hætta við - + &OK &Í lagi @@ -1352,27 +1416,27 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Eyðublað - + I accept the terms and conditions above. Ég samþykki skilyrði leyfissamningsins hér að ofan. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LicenseViewStep - + License Notkunarleyfi @@ -1388,64 +1452,64 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 rekill</strong><br/>hjá %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 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 pakki</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">frá %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocalePage - + 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. - + Region: Hérað: - + Zone: Svæði: - - + + &Change... &Breyta... - + Set timezone to %1/%2.<br/> Setja tímabelti sem %1/%2.<br/> @@ -1487,38 +1551,92 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. LocaleViewStep - - Loading location data... - Hleð inn staðsetningargögnum... - - - + Location Staðsetning + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Heiti - + Description Lýsing - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. - + 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 + + + + + PackageChooserPage + + + Form + Eyðublað + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + Valdir pakkar + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + Pakkar + Page_Keyboard @@ -1833,47 +1997,86 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Hvað heitir þú? - + What name do you want to use to log in? Hvaða nafn vilt þú vilt nota til að skrá þig inn? - + Choose a password to keep your account safe. Veldu lykilorð til að halda reikningnum þínum öruggum. - + + <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>Sláðu inn sama lykilorðið tvisvar, þannig að það geta verið athugað fyrir innsláttarvillur. Góð lykilorð mun innihalda blöndu af stöfum, númerum og greinarmerki, ætti að vera að minnsta kosti átta stafir að lengd, og ætti að vera breytt með reglulegu millibili.</small> - + What is the name of this computer? Hvað er nafnið á þessari tölvu? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Þetta nafn verður notað ef þú gerir tölvuna sýnilega öðrum á neti.</small> - + + Computer Name + + + + + + 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. Skrá inn sjálfkrafa án þess að biðja um lykilorð. - + Use the same password for the administrator account. Nota sama lykilorð fyrir kerfisstjóra reikning. - + Choose a password for the administrator account. Veldu lykilorð fyrir kerfisstjóra reikning. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Sláðu sama lykilorð tvisvar, þannig að það er hægt að yfirfara innsláttarvillur.</small> @@ -1982,7 +2185,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Cre&ate - + Útbú&a @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2180,7 +2383,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. Look-and-Feel - + Útlit og hegðun @@ -2204,65 +2407,65 @@ Uppsetningarforritið mun hætta og allar breytingar tapast. 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. @@ -2308,19 +2511,53 @@ Output: (no mount point) - + (enginn tengipunktur) - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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> Þessi tölva uppfyllir ekki lágmarkskröfur um uppsetningu %1.<br/>Uppsetningin getur ekki haldið áfram. <a href="#details">Upplýsingar...</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. Þessi tölva uppfyllir ekki lágmarkskröfur um uppsetningu %1.<br/>Uppsetningin getur haldið áfram, en sumir eiginleikar gætu verið óvirk. - + This program will ask you some questions and set up %2 on your computer. Þetta forrit mun spyrja þig nokkurra spurninga og setja upp %2 á tölvunni þinni. - + For best results, please ensure that this computer: Fyrir bestu niðurstöður, skaltu tryggja að þessi tölva: - + System requirements Kerfiskröfur @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 Setja vélarheiti %1 - + Set hostname <strong>%1</strong>. Setja vélarheiti <strong>%1</strong>. - + Setting hostname %1. Stilla vélarheiti %1. - - + + Internal Error Innri Villa - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. Ekki er hægt að aftengja kerfisstjóra reikning. - + passwd terminated with error code %1. - + Cannot set password for user %1. Get ekki sett lykilorð fyrir notanda %1. - + usermod terminated with error code %1. usermod endaði með villu kóðann %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. Get ekki sett tímasvæði. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Get ekki sett tímasvæði, - + Cannot open /etc/timezone for writing Get ekki opnað /etc/timezone til að skrifa. @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2912,7 +3149,7 @@ Output: Placeholder - + Frátökueining @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Notandanafnið þitt inniheldur ógilda stafi. Aðeins lágstöfum og númer eru leyfð. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! Lykilorð passa ekki! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users Notendur + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Eyðublað - + + + Select application and system language + Veldu tungumál forrits og kerfis + + + + Open donations website + + + + + &Donate + Styr&kja + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + Opna vefsvæði með upplýsingum um útgáfuna + + + &Release notes &Um útgáfu - + &Known issues &Þekktir gallar - - - Select language - - - - + &Support &Stuðningur @@ -3092,42 +3371,42 @@ Output: &Um - + <h1>Welcome to the %1 installer.</h1> <h1>Velkomin í %1 uppsetningarforritið.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Velkomin til Calamares uppsetningar fyrir %1</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Velkomin til Calamares uppsetningarforritið fyrir %1</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>Velkomin í %1 uppsetninguna.</h1> - + About %1 setup - + Um %1 uppsetninguna - + About %1 installer Um %1 uppsetningarforrrit - + <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-2019 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/>fyrir %3</strong><br/><br/>Höfundarréttur 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Höfundarréttur 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Þakkir til <a href="https://calamares.io/team/">Calamares teymisinsm</a> og <a href="https://www.transifex.com/calamares/calamares/">allra þýðenda Calamares</a>.<br/><br/>Þróun <a href="https://calamares.io/">Calamares</a> er studd af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 stuðningur @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Velkomin(n) diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 35bec08ab..c8dc8186a 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record di %1 - + Boot Partition Partizione di avvio - + System Partition Partizione di sistema - + Do not install a boot loader Non installare un boot loader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Pagina Vuota @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Modulo - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Moduli - + Type: Tipo: - - + + none nessuna - + Interface: Interfaccia: - + Tools Strumenti - + + Reload Stylesheet + Ricarica il foglio di stile + + + + Widget Tree + + + + Debug information Informazioni di debug @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Installazione - + Install Installa @@ -123,7 +133,7 @@ Operazione fallita (%1) - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Fatto @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Esegui il comando %1 %2 + Run command '%1' in target system. + Esegui il comando '%1' sul sistema di destinazione - + + Run command '%1'. + Esegui il comando '1%' + + + Running command %1 %2 Comando in esecuzione %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Operazione %1 in esecuzione. - + Bad working directory path Il percorso della cartella corrente non è corretto - + Working directory %1 for python job %2 is not readable. La cartella corrente %1 per l'attività di Python %2 non è accessibile. - + Bad main script file File dello script principale non valido - + Main script file %1 for python job %2 is not readable. Il file principale dello script %1 per l'attività di python %2 non è accessibile. - + Boost.Python error in job "%1". Errore da Boost.Python nell'operazione "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + In attesa del(i) modulo(i) %n.In attesa del(i) modulo(i) %n. - + (%n second(s)) - + System-requirements checking is complete. Il controllo dei requisiti di sistema è completo. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Indietro - - + + &Next &Avanti - - + + &Cancel &Annulla - - + Cancel setup without changing the system. - + Annulla l'installazione senza modificare il computer - - + Cancel installation without changing the system. Annullare l'installazione senza modificare il sistema. - + Setup Failed + Installazione fallita + + + + Would you like to paste the install log to the web? + Vuoi incollare il log di installazione nel web? + + + + Install Log Paste URL - - 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 è stato in grado di 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/>Non è stato possibile caricare il seguente modulo: - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> - + 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 è stato in grado di 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/>Non è stato possibile caricare il seguente modulo: + + + + 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 %1 programma di installazione sta per fare dei cambiamenti sul tuo disco per installare %2. Non sarà possibile annullare questi cambiamenti. + + + &Set up now - + &Installa adesso - + &Set up - + &Installazione - + &Install &Installa - + Setup is complete. Close the setup program. - + Installazione completata. Chiudere il programma di installazione. - + 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. - + Vuoi davvero annullare il processo di installazione? Il programma di installazione verrrà terminato e tutti i cambiamenti verranno 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? Il programma d'installazione sarà terminato e tutte le modifiche andranno perse. - + + &Yes &Si - + + &No &No - + &Close &Chiudi - + Continue with setup? Procedere con la configurazione? - + 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'nstallazione %1 sta per eseguire delle modifiche al tuo disco per poter installare %2.<br/><strong> Non sarà possibile annullare tali modifiche.</strong> - + &Install now &Installa adesso - + Go &back &Indietro - + &Done &Fatto - + The installation is complete. Close the installer. L'installazione è terminata. Chiudere il programma d'installazione. - + Error Errore - + Installation Failed Installazione non riuscita @@ -371,40 +402,49 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CalamaresPython::Helper - + Unknown exception type Tipo di eccezione sconosciuto - + unparseable Python error Errore Python non definibile - + unparseable Python traceback Traceback Python non definibile - + Unfetchable Python error. Errore di Python non definibile. - CalamaresWindow + CalamaresUtils - - %1 Setup Program + + Install log posted to: +%1 + + + CalamaresWindow - + + %1 Setup Program + %1 Programma di installazione + + + %1 Installer %1 Programma di installazione - + Show debug information Mostra le informazioni di debug @@ -435,7 +475,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno <strong>Partizionamento manuale</strong><br/>Si possono creare o ridimensionare le partizioni manualmente. - + Boot loader location: Posizionamento del boot loader: @@ -447,8 +487,8 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno - - + + Current: Corrente: @@ -463,96 +503,96 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno <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 - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CommandList - - + + Could not run command. Impossibile eseguire il comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Il comando viene eseguito nell'ambiente host e richiede il percorso di root ma nessun rootMountPoint (punto di montaggio di root) è definito. - + The command needs to know the user's name, but no username is defined. Il comando richiede il nome utente, nessun nome utente definito. @@ -620,7 +660,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ContextualProcessJob - + Contextual Processes Job Job dei processi contestuali @@ -708,7 +748,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Create new %2MiB partition on %4 (%3) with file system %1. - + Crea una nuova partizione da %2MiB su %4 (%3) con file system %1 @@ -800,17 +840,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno 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. @@ -957,7 +997,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno DummyCppJob - + Dummy C++ Job Processo Dummy C++ @@ -1111,7 +1151,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno <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>Quando questa casella è selezionata, il tuo computer verrà riavviato immediatamente quando clicchi su <span style="font-style:italic;">Finito</span> oppure chiudi il programma di setup.</p></body></html> @@ -1124,12 +1164,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. - + <h1>Installazione fallita</h1><br/>%1 non è stato installato sul tuo computer.<br/>Il messaggio di errore è: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Installazione Fallita</h1><br/>%1 non è stato installato sul tuo computer.<br/>Il messaggio di errore è: %2 @@ -1144,7 +1184,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Setup Complete - + Installazione completata @@ -1154,7 +1194,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno The setup of %1 is complete. - + L'installazione di %1 è completa @@ -1167,12 +1207,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Format partition %1 (file system: %2, size: %3 MiB) on %4. - + Formatta la partitione %1 (file system: %2, dimensione: %3 MiB) su %4. Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formatta la partizione <strong>%1</strong> di dimensione <strong>%3MiB </strong> con il file system <strong>%2</strong>. @@ -1188,66 +1228,74 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno GeneralRequirements - + has at least %1 GiB available drive space - + ha almeno %1 GiB di spazio disponibile - + There is not enough drive space. At least %1 GiB is required. - + Non c'è abbastanza spazio sul disco. E' richiesto almeno %1 GiB - + has at least %1 GiB working memory - + ha almeno %1 GiB di memoria - + The system does not have enough working memory. At least %1 GiB is required. - + Il sistema non ha abbastanza memoria. E' richiesto almeno %1 GiB - + is plugged in to a power source è collegato a una presa di alimentazione - + The system is not plugged in to a power source. Il sistema non è collegato a una presa di alimentazione. - + is connected to the Internet è connesso a Internet - + The system is not connected to the Internet. Il sistema non è connesso a internet. - + The setup program is not running with administrator rights. - + Il programma di installazione non è stato lanciato con i permessi di amministratore. - + The installer is not running with administrator rights. Il programma di installazione non è stato avviato con i diritti di amministrazione. - + The screen is too small to display the setup program. - + Lo schermo è troppo piccolo per mostrare il programma di installazione - + The screen is too small to display the installer. Schermo troppo piccolo per mostrare il programma d'installazione. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1261,17 +1309,33 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Could not create directories <code>%1</code>. - + Impossibile creare le cartelle <code>%1</code>. Could not open file <code>%1</code>. - + Impossibile aprire il file <code>%1</code>. Could not write to file <code>%1</code>. - + Impossibile scrivere sul file <code>%1</code>. + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Sto creando initramfs con mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Sto creando initramfs. @@ -1295,7 +1359,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno InteractiveTerminalViewStep - + Script Script @@ -1324,22 +1388,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LCLocaleDialog - + System locale setting Impostazioni di localizzazione del sistema - + 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>. Le impostazioni di localizzazione del sistema influenzano la lingua e il set di caratteri per alcuni elementi di interfaccia da linea di comando. <br/>L'impostazione attuale è <strong>%1</strong>. - + &Cancel &Annulla - + &OK &OK @@ -1352,27 +1416,27 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Modulo - + I accept the terms and conditions above. Accetto i termini e le condizioni sopra indicati. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Accordo di licenza</h1>Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Leggere attentamente le licenze d'uso (EULA) riportate sopra.<br/>Se non ne accetti i termini, la procedura di configurazione non può proseguire. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Accordo di licenza</h1>Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza, per fornire caratteristiche aggiuntive e migliorare l'esperienza utente. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Si prega di leggere attentamente gli accordi di licenza dell'utente finale (EULA) riportati sopra.</br>Se non se ne accettano i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. @@ -1380,7 +1444,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LicenseViewStep - + License Licenza @@ -1388,98 +1452,98 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>da %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 driver video</strong><br/><font color="Grey">da %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin del browser</strong><br/><font color="Grey">da %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">da %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pacchetto</strong><br/><font color="Grey">da %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">da %2</font> - - - Shows the complete license text - - + Shows the complete license text + Mostra il testo completo della licenza + + + Hide license text - + Nascondi il testo della licenza - + Show license agreement - + Mostra l'accordo di licenza - + Hide license agreement - + Nascondi l'accordo di licenza - + Opens the license agreement in a browser window. - + Apre l'accordo di licenza in una finestra del browser. - + <a href="%1">View license agreement</a> - + <a href="%1">Visualizza l'accordo di licenza</a> LocalePage - + 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. - + Region: Area: - + Zone: Zona: - - + + &Change... &Cambia... - + Set timezone to %1/%2.<br/> Imposta il fuso orario a %1%2.<br/> @@ -1487,38 +1551,92 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LocaleViewStep - - Loading location data... - Caricamento dei dati di posizione... - - - + Location Posizione + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + Non è stata specificata alcuna partizione. + + + + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Genera machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nome - + Description Descrizione - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Installazione di rete. (Disabilitata: impossibile recuperare le liste dei pacchetti, controllare la connessione di rete) - + Network Installation. (Disabled: Received invalid groups data) Installazione di rete. (Disabilitata: Ricevuti dati non validi dei gruppi) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno 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 @@ -1682,125 +1800,171 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno 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 + + + + + PackageChooserPage + + + Form + Modulo + + + + Product Name + + + + + TextLabel + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Qual è il tuo nome? - + What name do you want to use to log in? Quale nome usare per l'autenticazione? - + Choose a password to keep your account safe. Scegliere una password per rendere sicuro il tuo account. - + + <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>Inserire la password due volte per controllare eventuali errori di battitura. Una buona password contiene lettere, numeri e segni di punteggiatura. Deve essere lunga almeno otto caratteri e dovrebbe essere cambiata a intervalli regolari.</small> - + What is the name of this computer? Qual è il nome di questo computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Questo nome sarà usato se rendi visibile il computer ad altre persone in una rete.</small> - + + Computer Name + + + + + + 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. Accedere automaticamente senza chiedere la password. - + Use the same password for the administrator account. Usare la stessa password per l'account amministratore. - + Choose a password for the administrator account. Scegliere una password per l'account dell'amministratore. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Inserire la password due volte per controllare eventuali errori di battitura.</small> @@ -2038,107 +2241,107 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno 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>esp</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 di sistema è necessaria per avviare %1.<br/><br/>Per configurare una partizione EFI di sistema, tornare indietro e selezionare o creare un filesystem FAT32 con il flag <strong>esp</strong> abilitato e un punto di mount <strong>%2</strong>.<br/><br/>Si può continuare senza configurare una partizione EFI ma il sistema rischia di non avviarsi. - + EFI system partition flag not set Il flag della partizione EFI di sistema non è impostato. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 di sistema è necessaria per avviare %1.<br/><br/>Una partizione è stata configurata con punto di mount <strong>%2</strong> ma il relativo flag <strong>esp</strong> non è impostato.<br/>Per impostare il flag, tornare indietro e modificare la partizione.<br/><br/>Si può continuare senza impostare il flag ma il sistema rischia di non avviarsi. - + 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 partitons to install on. Non ci sono partizioni su cui installare @@ -2204,13 +2407,13 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ProcessResult - + There was no output from the command. Non c'era output dal comando. - + Output: @@ -2219,53 +2422,53 @@ Output: - + External command crashed. Il comando esterno si è arrestato. - + Command <i>%1</i> crashed. Il comando <i>%1</i> si è arrestato. - + External command failed to start. Il comando esterno non si è avviato. - + Command <i>%1</i> failed to start. Il comando %1 non si è avviato. - + Internal error when starting command. Errore interno all'avvio del comando. - + Bad parameters for process job call. Parametri errati per elaborare la chiamata al job. - + External command failed to finish. Il comando esterno non è stato portato a termine. - + Command <i>%1</i> failed to finish in %2 seconds. Il comando <i>%1</i> non è stato portato a termine in %2 secondi. - + External command finished with errors. Il comando esterno è terminato con errori. - + Command <i>%1</i> finished with exit code %2. Il comando <i>%1</i> è terminato con codice di uscita %2. @@ -2314,16 +2517,50 @@ Output: (nessun mount point) - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + Non è stata fornita alcuna descrizione. + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2424,7 +2661,7 @@ Output: Resize Filesystem Job - + Operazione di ridimensionamento del Filesystem @@ -2434,7 +2671,7 @@ Output: The file-system resize job has an invalid configuration and will not run. - + L'operazione di ridimensionamento del file-system ha una configurazione non valida e non verrà effettuata. @@ -2482,12 +2719,12 @@ Output: The filesystem %1 must be resized, but cannot. - + Il filesystem %1 deve essere ridimensionato, ma non è possibile farlo. The device %1 must be resized, but cannot - + Il dispositivo %1 deve essere ridimensionato, non è possibile farlo @@ -2505,7 +2742,7 @@ Output: Resizing %2MiB partition %1 to %3MiB. - + Sto ridimensionando la partizione %1 di dimensione %2MiB a %3MiB. @@ -2527,12 +2764,12 @@ Output: Resize volume group named %1 from %2 to %3. - + Ridimensiona il gruppo di volumi con nome %1 da %2 a %3. Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. - + Ridimensiona il gruppo di volumi con nome <strong>%1</strong> da <strong>%2</strong> a <strong>%3</strong>. @@ -2543,37 +2780,37 @@ Output: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Questo computer non soddisfa i requisiti minimi per l'installazione di %1.<br/>L'installazione non può continuare. <a href="#details">Dettagli...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Questo computer non soddisfa i requisiti minimi per installare %1. <br/>L'installazione non può proseguire. <a href="#details">Dettagli...</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. - + Questo computer non soddisfa alcuni requisiti raccomandati per l'installazione di %1.<br/>L'installazione può continuare, ma alcune funzionalità potrebbero essere disabilitate. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Questo computer non soddisfa alcuni requisiti consigliati per l'installazione di %1. <br/>L'installazione può proseguire ma alcune funzionalità potrebbero non essere disponibili. - + This program will ask you some questions and set up %2 on your computer. Questo programma chiederà alcune informazioni e configurerà %2 sul computer. - + For best results, please ensure that this computer: Per ottenere prestazioni ottimali, assicurarsi che questo computer: - + System requirements Requisiti di sistema @@ -2594,29 +2831,29 @@ Output: SetHostNameJob - + Set hostname %1 Impostare hostname %1 - + Set hostname <strong>%1</strong>. Impostare hostname <strong>%1</strong>. - + Setting hostname %1. Impostare hostname %1. - - + + Internal Error Errore interno - - + + Cannot write hostname to target system Impossibile scrivere l'hostname nel sistema di destinazione @@ -2757,22 +2994,22 @@ Output: punto di mount per root è %1 - + Cannot disable root account. Impossibile disabilitare l'account di root. - + passwd terminated with error code %1. passwd è terminato con codice di errore %1. - + Cannot set password for user %1. Impossibile impostare la password per l'utente %1. - + usermod terminated with error code %1. usermod si è chiuso con codice di errore %1. @@ -2795,22 +3032,22 @@ Output: Percorso errato: %1 - + Cannot set timezone. Impossibile impostare il fuso orario. - + Link creation failed, target: %1; link name: %2 Impossibile creare il link, destinazione: %1; nome del link: %2 - + Cannot set timezone, Impossibile impostare il fuso orario, - + Cannot open /etc/timezone for writing Impossibile aprire il file /etc/timezone in scrittura @@ -2856,22 +3093,22 @@ Output: TrackingInstallJob - + Installation feedback Valutazione dell'installazione - + Sending installation feedback. Invio della valutazione dell'installazione. - + Internal error in install-tracking. Errore interno in install-tracking. - + HTTP request timed out. La richiesta HTTP è scaduta. @@ -2879,28 +3116,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2933,17 +3170,17 @@ Output: Il tracciamento dell'installazione aiuta %1 a capire quanti utenti vengono serviti, su quale hardware si installa %1 e (con le ultime due opzioni sotto), a ricevere continue informazioni sulle applicazioni preferite. Per vedere cosa verrà inviato, cliccare sull'icona di aiuto accanto ad ogni area. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Selezionando questa opzione saranno inviate informazioni relative all'installazione e all'hardware. I dati saranno <b>inviati solo una volta</b> al termine dell'installazione. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Selezionando questa opzione saranno inviate <b>periodicamente</b> informazioni sull'installazione, l'hardware e le applicazioni, a %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Selezionando questa opzione verranno inviate <b>regolarmente</b> informazioni sull'installazione, l'hardware, le applicazioni e i modi di utilizzo, a %1. @@ -2951,7 +3188,7 @@ Output: TrackingViewStep - + Feedback Valutazione @@ -2959,43 +3196,47 @@ 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. Il nome utente è troppo lungo. - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - Il nome utente contiene caratteri non validi. Sono ammessi solo lettere minuscole e numeri. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Hostname è troppo corto. - + Your hostname is too long. Hostname è troppo lungo. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Hostname contiene caratteri non validi. Sono ammessi solo lettere, numeri e trattini. - - - - + Your passwords do not match! Le password non corrispondono! @@ -3003,11 +3244,24 @@ Output: UsersViewStep - + Users Utenti + + VariantModel + + + Key + + + + + Value + Valore + + VolumeGroupBaseDialog @@ -3069,23 +3323,48 @@ Output: Modulo - - &Release notes - &Note di rilascio - - - - &Known issues - &Problemi conosciuti - - - - - Select language + + + Select application and system language + Open donations website + Apri il sito web per le donazioni + + + + &Donate + &Donazioni + + + + Open help and support website + Apri il sito web per l'aiuto ed il supporto + + + + Open issues and bug-tracking website + + + + + Open release notes website + Apri il sito web delle note di rilascio + + + + &Release notes + &Note di rilascio + + + + &Known issues + &Problemi conosciuti + + + &Support &Supporto @@ -3095,42 +3374,42 @@ Output: &Informazioni su - + <h1>Welcome to the %1 installer.</h1> <h1>Benvenuto nel programma d'installazione di %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Benvenuti nel programma di installazione Calamares per %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Benvenuto nel programma di installazione Calamares di %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>Benvenuto nell'installazione di %1.</h1> - + About %1 setup - + About %1 installer Informazioni sul programma di installazione %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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Grazie al <a href="https://calamares.io/team/">team di Calamares</a> ed al <a href="https://www.transifex.com/calamares/calamares/">team dei traduttori di Calamares</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. - + %1 support supporto %1 @@ -3138,7 +3417,7 @@ Output: WelcomeViewStep - + Welcome Benvenuti diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index cc379bc46..cfb74f0ae 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1 のマスターブートレコード - + Boot Partition ブートパーティション - + System Partition システムパーティション - + Do not install a boot loader ブートローダーをインストールしません - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page 空白のページ @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage グローバルストレージ - + JobQueue ジョブキュー - + Modules モジュール - + Type: Type: - - + + none なし - + Interface: インターフェース: - + Tools ツール - + + Reload Stylesheet + スタイルシートを再読み込む + + + + Widget Tree + ウィジェットツリー + + + Debug information デバッグ情報 @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up セットアップ - + Install インストール @@ -123,15 +133,15 @@ ジョブに失敗 (%1) - + Programmed job failure was explicitly requested. - + 要求されたジョブは失敗しました。 Calamares::JobThread - + Done 完了 @@ -148,44 +158,49 @@ Calamares::ProcessJob - Run command %1 %2 - コマンド %1 %2 を実行 + Run command '%1' in target system. + ターゲットシステムでコマンド '%1' を実行。 - + + Run command '%1'. + コマンド '%1' を実行。 + + + Running command %1 %2 - コマンド %1 %2 を実行中 + コマンド %1 %2 を実行しています Calamares::PythonJob - + Running %1 operation. - %1 操作を実行中。 + %1 操作を実行しています。 - + Bad working directory path 不正なワーキングディレクトリパス - + Working directory %1 for python job %2 is not readable. python ジョブ %2 において作業ディレクトリ %1 が読み込めません。 - + Bad main script file 不正なメインスクリプトファイル - + Main script file %1 for python job %2 is not readable. python ジョブ %2 におけるメインスクリプトファイル %1 が読み込めません。 - + Boost.Python error in job "%1". ジョブ "%1" での Boost.Python エラー。 @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - %n モジュールを待機中。 + %n 個のモジュールを待機しています。 - + (%n second(s)) (%n 秒(s)) - + System-requirements checking is complete. 要求されるシステムの確認を終了しました。 @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back 戻る (&B) - - + + &Next 次へ (&N) - - + + &Cancel 中止 (&C) - - + Cancel setup without changing the system. システムを変更することなくセットアップを中断します。 - - + Cancel installation without changing the system. システムを変更しないでインストールを中止します。 - + Setup Failed セットアップに失敗しました。 - + + Would you like to paste the install log to the web? + インストールログをWebに貼り付けますか? + + + + Install Log Paste URL + インストールログを貼り付けるURL + + + + The upload was unsuccessful. No web-paste was done. + アップロードは失敗しました。 ウェブへの貼り付けは行われませんでした。 + + + Calamares Initialization Failed Calamares によるインストールに失敗しました。 - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - %1 はインストールできません。Calamares はすべてのモジュールをロードすることをできませんでした。これは、Calamares のこのディストリビューションでの使用法による問題です。 + %1 をインストールできません。Calamares はすべてのモジュールをロードすることをできませんでした。これは、Calamares のこのディストリビューションでの使用法による問題です。 - + <br/>The following modules could not be loaded: <br/>以下のモジュールがロードできませんでした。: - + Continue with 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> - + &Set up now - セットアップ中(&S) + セットアップしています (&S) - + &Set up セットアップ (&S) - + &Install インストール (&I) - + Setup is complete. Close the setup program. セットアップが完了しました。プログラムを閉じます。 - + 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. 本当に現在の作業を中止しますか? すべての変更が取り消されます。 - + + &Yes はい (&Y) - + + &No いいえ (&N) - + &Close 閉じる (&C) - + Continue with setup? - セットアップを続行しますか? + セットアップを続行しますか? - + 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> + %1 インストーラーは %2 をインストールするためディスクの内容を変更しようとしています。<br/><strong>これらの変更は取り消せません。</strong> - + &Install now 今すぐインストール (&I) - + Go &back 戻る (&B) - + &Done 実行 (&D) - + The installation is complete. Close the installer. インストールが完了しました。インストーラーを閉じます。 - + Error エラー - + Installation Failed インストールに失敗 @@ -372,40 +403,50 @@ 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 - + %1 Setup Program %1 セットアッププログラム - + %1 Installer %1 インストーラー - + Show debug information デバッグ情報を表示 @@ -415,7 +456,7 @@ The installer will quit and all changes will be lost. Gathering system information... - システム情報を取得中... + システム情報を取得しています... @@ -436,7 +477,7 @@ The installer will quit and all changes will be lost. <strong>手動パーティション</strong><br/>パーティションの作成、あるいはサイズ変更を行うことができます。 - + Boot loader location: ブートローダーの場所: @@ -448,8 +489,8 @@ The installer will quit and all changes will be lost. - - + + Current: 現在: @@ -464,98 +505,98 @@ The installer will quit and all changes will be lost. <strong>縮小するパーティションを選択し、下のバーをドラッグしてサイズを変更して下さい</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 は %2MiB に縮小され新たに %4 に %3MiB のパーティションが作成されます。 - + <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/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 + このストレージデバイスにはオペレーティングシステムが存在しないようです。何を行いますか?<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>されます。 - + 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/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 + このストレージデバイスには %1 が存在します。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 - + No Swap スワップを使用しない - + Reuse Swap スワップを再利用 - + Swap (no Hibernate) スワップ(ハイバーネートなし) - + Swap (with Hibernate) スワップ(ハイバーネート) - + Swap to file ファイルにスワップ - - - - + + + + <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 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/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 + このストレージデバイスにはすでにオペレーティングシステムが存在します。何を行いますか?<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 />ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 + このストレージデバイスには複数のオペレーティングシステムが存在します。何を行いますか?<br />ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。 @@ -568,7 +609,7 @@ The installer will quit and all changes will be lost. Clearing mounts for partitioning operations on %1. - %1 のパーティション操作のため、マウントを解除中 + %1 のパーティション操作のため、マウントを解除しています。 @@ -602,18 +643,18 @@ The installer will quit and all changes will be lost. 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のパスの情報が必要になりますが、root のマウントポイントが定義されていません。 - + The command needs to know the user's name, but no username is defined. ユーザー名が必要ですが、定義されていません。 @@ -621,7 +662,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job コンテキストプロセスジョブ @@ -719,7 +760,7 @@ The installer will quit and all changes will be lost. Creating new %1 partition on %2. - %2 上に新しく %1 パーティションを作成中 + %2 に新しく %1 パーティションを作成しています。 @@ -742,7 +783,7 @@ The installer will quit and all changes will be lost. What kind of partition table do you want to create? - どの種類のパーティションテーブルを作成しますか? + どの種類のパーティションテーブルを作成しますか? @@ -760,22 +801,22 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - %2 上に新しく %1 パーティションテーブルを作成 + %2 に新しく %1 パーティションテーブルを作成 Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - <strong>%2</strong> (%3) 上に新しく <strong>%1</strong> パーティションテーブルを作成 + <strong>%2</strong> (%3) に新しく <strong>%1</strong> パーティションテーブルを作成 Creating new %1 partition table on %2. - %2 上に新しく %1 パーティションテーブルを作成中 + %2 に新しく %1 パーティションテーブルを作成しています。 The installer failed to create a partition table on %1. - インストーラーは%1 上でのパーティションテーブルの作成に失敗しました。 + インストーラーは%1 へのパーティションテーブルの作成に失敗しました。 @@ -793,7 +834,7 @@ The installer will quit and all changes will be lost. Creating user %1. - ユーザー %1 を作成中。 + ユーザー %1 を作成しています。 @@ -801,17 +842,17 @@ The installer will quit and all changes will be lost. sudoers ディレクトリは書き込み可能ではありません。 - + Cannot create sudoers file for writing. sudoersファイルを作成できません。 - + Cannot chmod sudoers file. sudoersファイルの権限を変更できません。 - + Cannot open groups file for reading. groups ファイルを読み込めません。 @@ -881,7 +922,7 @@ The installer will quit and all changes will be lost. Deleting partition %1. - パーティション %1 の削除中。 + パーティション %1 を削除しています。 @@ -914,12 +955,12 @@ The installer will quit and all changes will be lost. <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>これは <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>パーティションが作成され、そのうち1つについては、多くの<em>論理</em>パーティションを含む<em>拡張</em>パーティションにすることができます。 + <br><br>このパーティションテーブルの種類は<strong>BIOS</strong> ブート環境から起動する古いシステムにおいてのみ推奨されます。他のほとんどの場合ではGPTが推奨されます。<br><br><strong>警告:</strong> MBR パーティションテーブルは時代遅れのMS-DOS時代の標準です。<br>作成できる<em>プライマリ</em>パーティションは4つだけです。そのうち1つは<em>拡張</em>パーティションになることができ、そこには多くの<em>論理</em>パーティションを含むことができます。 @@ -958,7 +999,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1125,12 +1166,12 @@ The installer will quit and all changes will be lost. <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>セットアップに失敗しました。</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. @@ -1169,17 +1210,17 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + %4 上のパーティション %1 (ファイルシステム: %2、サイズ: %3 MiB) をフォーマット。 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. - ファイルシステム %2 でパーティション %1 をフォーマット中。 + ファイルシステム %2 でパーティション %1 をフォーマットしています。 @@ -1190,66 +1231,74 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space - + 利用可能な容量が少なくとも %1 GiB - + There is not enough drive space. At least %1 GiB is required. - + 空き容量が十分ではありません。少なくとも %1 GiB 必要です。 - + has at least %1 GiB working memory - + %1 GiB以降のメモリーがあります - + The system does not have enough working memory. At least %1 GiB is required. - + 十分なメモリがありません。少なくとも %1 GiB 必要です。 - + 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. システムはインターネットに接続されていません。 - + The setup program is not running with administrator rights. セットアッププログラムは管理者権限で実行されていません。 - + The installer is not running with administrator rights. インストーラーは管理者権限で実行されていません。 - + 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 @@ -1258,22 +1307,38 @@ The installer will quit and all changes will be lost. OEM Batch Identifier - + OEMのバッチID 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. + mkinitcpioとinitramfsを作成しています。 + + + + InitramfsJob + + + Creating initramfs. + initramfsを作成しています。 @@ -1286,7 +1351,7 @@ The installer will quit and all changes will be lost. Please install KDE Konsole and try again! - KDE Konsole をインストールして再度試してください! + KDE Konsole をインストールして再度試してください! @@ -1297,7 +1362,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script スクリプト @@ -1326,22 +1391,22 @@ The installer will quit and all changes will be lost. 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>. + システムロケールの設定はコマンドラインやインターフェースでの言語や文字の表示に影響をおよぼします。<br/>現在の設定 <strong>%1</strong>. - + &Cancel 中止 (&C) - + &OK 了解 (&O) @@ -1354,27 +1419,27 @@ The installer will quit and all changes will be lost. フォーム - + I accept the terms and conditions above. 上記の項目及び条件に同意します。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>ライセンス契約条項</h1> このセットアップはライセンス条項に従うことが必要なプロプライエタリなソフトウェアをインストールします。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 上記のエンドユーザーライセンス条項 (EULAs) を確認してください。<br/>もしライセンス条項に同意できない場合、セットアップを続行することはできません。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>ライセンス契約条項</h1> このセットアップは、機能を追加し、ユーザーの使いやすさを向上させるために、ライセンス条項に従うことが必要なプロプライエタリなソフトウェアをインストールします。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 上記のエンドユーザーライセンス条項 (EULAs) を確認してください。<br/>もしライセンス条項に同意できない場合、プロプライエタリなソフトウェアはインストールされず、代わりにオープンソースのソフトウェアが使用されます。 @@ -1382,7 +1447,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License ライセンス @@ -1390,98 +1455,98 @@ The installer will quit and all changes will be lost. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 ドライバー</strong><br/>by %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">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 ブラウザプラグイン</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</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> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - - - Shows the complete license text - - + Shows the complete license text + ライセンステキストを表示 + + + Hide license text - + ライセンステキストを非表示 - + Show license agreement - + 使用許諾の表示 - + Hide license agreement - + 使用許諾を隠す - + Opens the license agreement in a browser window. - + 使用許諾をブラウザで開く。 - + <a href="%1">View license agreement</a> - + <a href="%1">使用許諾を見る</a> LocalePage - + The system language will be set to %1. システムの言語が %1 に設定されます。 - + The numbers and dates locale will be set to %1. 数字と日付のロケールが %1 に設定されます。 - + Region: 地域: - + Zone: ゾーン: - - + + &Change... 変更 (&C)... - + Set timezone to %1/%2.<br/> タイムゾーンを %1/%2 に設定。<br/> @@ -1489,38 +1554,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - ロケーションデータをロード中... - - - + 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. + ルートパーティション %1 はLUKSですが、パスワードが設定されていません。 + + + + Could not create LUKS key file for root partition %1. + ルートパーティション %1 のLUKSキーファイルを作成できませんでした。 + + + + Could configure LUKS key file on partition %1. + パーティション %1 にLUKSキーファイルを設定できました。 + + + + MachineIdJob + + + Generate machine-id. + machine-id の生成 + + + + Configuration Error + コンフィグレーションエラー + + + + No root mount point is set for MachineId. + マシンIDにルートマウントポイントが設定されていません。 + + NetInstallPage - + Name 名前 - + Description 説明 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) ネットワークインストール。(無効: パッケージリストを取得できません。ネットワーク接続を確認してください。) - + Network Installation. (Disabled: Received invalid groups data) ネットワークインストール (不可: 無効なグループデータを受け取りました) + + + Network Installation. (Disabled: Incorrect configuration) + ネットワークインストール。(無効: 不正な設定) + NetInstallViewStep @@ -1535,146 +1654,146 @@ The installer will quit and all changes will be lost. Ba&tch: - + バッチ (&) <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> - + <html><head/><body><p>ここにバッチIDを入力してください。これはターゲットシステムに保存されます。</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のバッチIDを <code>%1</code> に設定してください。 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 パスワードが古いものの使いまわしです @@ -1684,125 +1803,171 @@ The installer will quit and all changes will be lost. パスワードに含まれている文字クラスは %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 + パッケージ + Page_Keyboard @@ -1832,50 +1997,89 @@ The installer will quit and all changes will be lost. What is your name? - 名前は何ですか? + あなたの名前は何ですか? - + What name do you want to use to log in? - ログインの際、どの名前を使用しますか? + ログイン時に使用する名前は何ですか? - + 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> - 確認のため、同じパスワードを二回入力して下さい。最低8字で、文字・数値・句読点を含めれば、強いパスワードになります。また、パスワードを定期的に変更することを変更してください。 + <small>確認のため、同じパスワードを2回入力して下さい。8文字以上で、アルファベット・数字・句読点を混ぜたものにすれば強いパスワードになります。パスワードは定期的に変更してください。</small> - + What is the name of this computer? このコンピュータの名前は何ですか? - + + Your Full Name + あなたのフルネーム + + + + login + ログイン + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>ネットワーク上からコンピュータが見えるようにする場合、この名前が使用されます。</small> - + + Computer Name + コンピュータの名前 + + + + + 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>入力ミスを確認することができるように、同じパスワードを 2 回入力します。</small> @@ -2024,7 +2228,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 上で新しいパーティションテーブルを作成します。よろしいですか? + %1 に新しいパーティションテーブルを作成します。よろしいですか? @@ -2040,109 +2244,109 @@ 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>パーティショニングする。 + ディスク <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>esp</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>%2</strong>で<strong>esp</strong>フラグを設定したFAT32ファイルシステムを選択するか作成します。<br/><br/>EFI システムパ ーティションの設定をせずに続行することはできますが、その場合はシステムの起動に失敗することになるかもしれません。 - + EFI system partition flag not set 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>esp</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>esp</strong> フラグが設定されていません。<br/>フラグを設定するには、元に戻ってパーティションを編集してください。<br/><br/>フラグの設定をせずに続けることはできますが、その場合、システムの起動に失敗することになるかもしれません。 - + 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 partitons to install on. - + インストールするパーティションがありません。 @@ -2169,7 +2373,7 @@ The installer will quit and all changes will be lost. Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + KDE Plasma デスクトップの外観を選んでください。この作業はスキップでき、インストール後に外観を設定することができます。外観を選択し、クリックすることにより外観のプレビューが表示されます。 @@ -2206,14 +2410,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. コマンドから出力するものがありませんでした。 - + Output: @@ -2222,52 +2426,52 @@ 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 で終了しました。. @@ -2313,19 +2517,53 @@ Output: (no mount point) - + (マウントポイントなし) - + Requirements checking for module <i>%1</i> is complete. - + モジュール <i>%1</i> に必要なパッケージの確認が完了しました。 - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + 製品がありません。 + + + + No description provided. + 説明はありません。 + + + + + + + + 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> を作成できませんでした。 + + + + Could not read random file <pre>%1</pre>. + ランダムファイル <pre>%1</pre> を読み取れませんでした。 + RemoveVolumeGroupJob @@ -2502,12 +2740,12 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + <strong>%2MiB</strong> のパーティション <strong>%1</strong> を <strong>%3MiB</strong>にサイズ変更。 Resizing %2MiB partition %1 to %3MiB. - + %2MiB のパーティション %1 を %3MiB にサイズ変更しています。 @@ -2545,37 +2783,37 @@ Output: 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 を設定します。 + このプログラムはあなたにいくつか質問をして、コンピュータに %2 を設定します。 - + For best results, please ensure that this computer: 良好な結果を得るために、このコンピュータについて以下の項目を確認してください: - + System requirements システム要件 @@ -2585,40 +2823,40 @@ Output: Scanning storage devices... - ストレージデバイスのスキャン中... + ストレージデバイスをスキャンしています... Partitioning - パーティショニング中 + パーティショニング SetHostNameJob - + Set hostname %1 ホスト名 %1 の設定 - + Set hostname <strong>%1</strong>. ホスト名 <strong>%1</strong> の設定。 - + Setting hostname %1. - ホスト名 %1 の設定中。 + ホスト名 %1 を設定しています。 - - + + Internal Error 内部エラー - - + + Cannot write hostname to target system ターゲットとするシステムにホスト名を書き込めません @@ -2663,12 +2901,12 @@ Output: Set flags on %1MiB %2 partition. - + %1MiB %2 パーティションにフラグを設定。 Set flags on new partition. - 新しいパーティション上にフラグを設定。 + 新しいパーティションにフラグを設定。 @@ -2678,22 +2916,22 @@ Output: Clear flags on %1MiB <strong>%2</strong> partition. - + %1MiB <strong>%2</strong> パーティション上のフラグを消去。 Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + %1MiB <strong>%2</strong> パーティションに <strong>%3</strong> のフラグを設定。 Clearing flags on %1MiB <strong>%2</strong> partition. - + %1MiB <strong>%2</strong> パーティション上のフラグを消去しています。 Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + %1MiB <strong>%2</strong> パーティションに <strong>%3</strong> フラグを設定しています。 @@ -2713,7 +2951,7 @@ Output: Clearing flags on partition <strong>%1</strong>. - パーティション <strong>%1</strong> 上のフラグを消去中。 + パーティション <strong>%1</strong> のフラグを消去しています。 @@ -2723,12 +2961,12 @@ Output: Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - パーティション <strong>%1</strong> 上に フラグ<strong>%2</strong>を設定。 + パーティション <strong>%1</strong> に フラグ<strong>%2</strong>を設定。 Setting flags <strong>%1</strong> on new partition. - 新しいパーティション上に <strong>%1</strong> フラグを設定しています。 + 新しいパーティションに <strong>%1</strong> フラグを設定しています。 @@ -2746,7 +2984,7 @@ Output: Setting password for user %1. - ユーザ %1 のパスワード設定中。 + ユーザ %1 のパスワードを設定しています。 @@ -2759,22 +2997,22 @@ Output: root のマウントポイントは %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. エラーコード %1 によりusermodが停止しました。 @@ -2797,22 +3035,22 @@ Output: 不正なパス: %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 を開くことができません @@ -2839,7 +3077,7 @@ Output: This is an overview of what will happen once you start the setup procedure. - + これはセットアップを開始した時に起こることの概要です。 @@ -2858,22 +3096,22 @@ Output: TrackingInstallJob - + Installation feedback インストールのフィードバック - + Sending installation feedback. インストールのフィードバックを送信 - + Internal error in install-tracking. インストールトラッキング中の内部エラー - + HTTP request timed out. HTTPリクエストがタイムアウトしました。 @@ -2881,28 +3119,28 @@ Output: TrackingMachineNeonJob - + 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。 @@ -2935,17 +3173,17 @@ Output: インストールトラッキングは %1 にとって、どれだけのユーザーが どのハードに %1 をインストールするのか (下記の2つのオプション)、どのようなアプリケーションが好まれているのかについての情報を把握することの補助を行っています。 どのような情報が送信されているのか確認したい場合は、以下の各エリアのヘルプのアイコンをクリックして下さい。 - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. インストールやハードウェアの情報を送信します。この情報はインストール終了後 <b> 1回だけ送信されます</b> 。 - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. %1 へのハードウェアやアプリケーションのインストール情報を定期的に送信します。 - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. %1 へのハードウェアやアプリケーションのインストール、使用法などの情報を定期的に送信します。 @@ -2953,7 +3191,7 @@ Output: TrackingViewStep - + Feedback フィードバック @@ -2961,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - ユーザー名に不適切な文字が含まれています。アルファベットの小文字と数字のみが使用できます。 + + Your username must start with a lowercase letter or underscore. + ユーザー名はアルファベットの小文字または _ で始めてください。 - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 使用できるのはアルファベットの小文字と数字と _ と - だけです。 + + + + Only letters, numbers, underscore and hyphen are allowed. + 使用できるのはアルファベットと数字と _ と - だけです。 + + + Your hostname is too short. ホスト名が短すぎます。 - + Your hostname is too long. ホスト名が長過ぎます。 - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - ホスト名に不適切な文字が含まれています。アルファベット、数字及びハイフンのみが使用できます。 - - - - + Your passwords do not match! パスワードが一致していません! @@ -3005,11 +3247,24 @@ Output: UsersViewStep - + Users ユーザー情報 + + VariantModel + + + Key + キー + + + + Value + + + VolumeGroupBaseDialog @@ -3071,23 +3326,48 @@ Output: フォーム - + + + Select application and system language + アプリケーション及び言語の選択 + + + + Open donations website + 寄付サイトを開く + + + + &Donate + 寄付する(&D) + + + + Open help and support website + サポートサイトを開く + + + + Open issues and bug-tracking website + issue 及び bug-track のサイトを開く + + + + Open release notes website + リリースノートのウェブサイトを開く + + + &Release notes リリースノート (&R) - + &Known issues 既知の問題 (&K) - - - Select language - - - - + &Support サポート (&S) @@ -3097,42 +3377,42 @@ Output: 説明 (&A) - + <h1>Welcome to the %1 installer.</h1> <h1>%1 インストーラーへようこそ。</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>%1 Calamares インストーラーにようこそ</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>%1 Calamares セットアッププログラムにようこそ</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>%1 セットアップへようこそ</h1> - + 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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 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. - + %1 support %1 サポート @@ -3140,7 +3420,7 @@ Output: WelcomeViewStep - + Welcome ようこそ diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index d813d970b..5231b1609 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools Саймандар - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Жөндеу ақпараты @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Орнату @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Дайын @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back А&ртқа - - + + &Next &Алға - - + + &Cancel Ба&с тарту - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users Пайдаланушылар + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support %1 қолдауы @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome Қош келдіңіз diff --git a/lang/calamares_kn.ts b/lang/calamares_kn.ts index cabf3ff17..33fc05e06 100644 --- a/lang/calamares_kn.ts +++ b/lang/calamares_kn.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools ಉಪಕರಣಗಳು - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install ಸ್ಥಾಪಿಸು @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back ಹಿಂದಿನ - - + + &Next ಮುಂದಿನ - - + + &Cancel ರದ್ದುಗೊಳಿಸು - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes ಹೌದು - + + &No ಇಲ್ಲ - + &Close ಮುಚ್ಚಿರಿ - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error ದೋಷ - + Installation Failed ಅನುಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: ಪ್ರಸಕ್ತ: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts index 7c7d78de1..cef2eb1ff 100644 --- a/lang/calamares_ko.ts +++ b/lang/calamares_ko.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1의 마스터 부트 레코드 - + Boot Partition 부트 파티션 - + System Partition 시스템 파티션 - + Do not install a boot loader 부트로더를 설치하지 않습니다 - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page 빈 페이지 @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form 형식 - + GlobalStorage 전역 스토리지 - + JobQueue 작업 대기열 - + Modules 모듈 - + Type: 유형: - - + + none 없음 - + Interface: 인터페이스: - + Tools 도구 - + + Reload Stylesheet + 스타일시트 새로고침 + + + + Widget Tree + 위젯 트리 + + + Debug information 디버그 정보 @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up 설정 - + Install 설치 @@ -123,7 +133,7 @@ (% 1) 작업 실패 - + Programmed job failure was explicitly requested. 프로그래밍된 작업 실패가 명시적으로 요청되었습니다. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done 완료 @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - 명령 %1 %2 실행 + Run command '%1' in target system. + 대상 시스템에서 '%1' 명령을 실행합니다. - + + Run command '%1'. + '%1' 명령을 실행합니다. + + + Running command %1 %2 명령 %1 %2 실행중 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. %1 명령을 실행중 - + Bad working directory path 잘못된 작업 디렉터리 경로 - + Working directory %1 for python job %2 is not readable. 파이썬 작업 %2에 대한 작업 디렉터리 %1을 읽을 수 없습니다. - + Bad main script file 잘못된 주 스크립트 파일 - + Main script file %1 for python job %2 is not readable. 파이썬 작업 %2에 대한 주 스크립트 파일 %1을 읽을 수 없습니다. - + Boost.Python error in job "%1". 작업 "%1"에서 Boost.Python 오류 @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). %n 모듈(들)을 기다리는 중. - + (%n second(s)) (%n 초) - + System-requirements checking is complete. 시스템 요구사항 검사가 완료 되었습니다. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back 뒤로 (&B) - - + + &Next 다음 (&N) - - + + &Cancel 취소 (&C) - - + Cancel setup without changing the system. 시스템을 변경 하지 않고 설치를 취소합니다. - - + Cancel installation without changing the system. 시스템 변경 없이 설치를 취소합니다. - + Setup Failed 설치 실패 - + + Would you like to paste the install log to the web? + + + + + 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: 다음 모듈 불러오기 실패: - + 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> - + &Set up now 지금 설치 (&S) - + &Set up 설치 (&S) - + &Install 설치(&I) - + Setup is complete. Close the setup program. 설치가 완료 되었습니다. 설치 프로그램을 닫습니다. - + 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. 정말로 현재 설치 프로세스를 취소하시겠습니까? 설치 관리자가 종료되며 모든 변경은 반영되지 않습니다. - + + &Yes 예(&Y) - + + &No 아니오(&N) - + &Close 닫기(&C) - + Continue with setup? 설치를 계속하시겠습니까? - + 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> - + &Install now 지금 설치 (&I) - + Go &back 뒤로 이동 (&b) - + &Done 완료 (&D) - + The installation is complete. Close the installer. 설치가 완료되었습니다. 설치 관리자를 닫습니다. - + Error 오류 - + Installation Failed 설치 실패 @@ -372,40 +403,49 @@ 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 - + %1 Setup Program %1 설치 프로그램 - + %1 Installer %1 설치 관리자 - + Show debug information 디버그 정보 보기 @@ -436,7 +476,7 @@ The installer will quit and all changes will be lost. <strong>수동 파티션 작업</strong><br/>직접 파티션을 만들거나 크기를 조정할 수 있습니다. - + Boot loader location: 부트 로더 위치 : @@ -448,8 +488,8 @@ The installer will quit and all changes will be lost. - - + + Current: 현재: @@ -464,96 +504,96 @@ The installer will quit and all changes will be lost. <strong>축소할 파티션을 선택한 다음 하단 막대를 끌어 크기를 조정합니다.</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1이 %2MiB로 축소되고 %4에 대해 새 %3MiB 파티션이 생성됩니다. - + <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>됩니다. - + 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/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. - + No Swap 스왑 없음 - + Reuse Swap 스왑 재사용 - + Swap (no Hibernate) 스왑 (최대 절전모드 아님) - + Swap (with Hibernate) 스왑 (최대 절전모드 사용) - + Swap to file 파일로 스왑 - - - - + + + + <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 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/>저장 장치를 변경하기 전에 선택 사항을 검토하고 확인할 수 있습니다. @@ -602,18 +642,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. 명령을 실행할 수 없습니다. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. 이 명령은 호스트 환경에서 실행되며 루트 경로를 알아야하지만, rootMountPoint가 정의되지 않았습니다. - + The command needs to know the user's name, but no username is defined. 이 명령은 사용자 이름을 알아야 하지만, username이 정의되지 않았습니다. @@ -621,7 +661,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job 컨텍스트 프로세스 작업 @@ -801,17 +841,17 @@ The installer will quit and all changes will be lost. Sudoers 디렉터리가 쓰기 금지되어 있습니다. - + Cannot create sudoers file for writing. sudoers 파일을 만들 수가 없습니다. - + Cannot chmod sudoers file. sudoers 파일의 권한을 변경할 수 없습니다. - + Cannot open groups file for reading. groups 파일을 읽을 수가 없습니다. @@ -958,7 +998,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job C++ 더미 작업 @@ -1125,12 +1165,12 @@ The installer will quit and all changes will be lost. <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입니다. @@ -1189,66 +1229,74 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space %1 GiB 이상의 사용 가능한 드라이브 공간이 있음 - + There is not enough drive space. At least %1 GiB is required. 드라이브 공간이 부족합니다. %1 GiB 이상이 필요합니다. - + has at least %1 GiB working memory %1 GiB 이상의 작동 메모리가 있습니다. - + The system does not have enough working memory. At least %1 GiB is required. 시스템에 충분한 작동 메모리가 없습니다. %1 GiB 이상이 필요합니다. - + 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. 이 시스템은 인터넷에 연결되어 있지 않습니다. - + The setup program is not running with administrator rights. 설치 프로그램이 관리자 권한으로 실행되고 있지 않습니다. - + The installer is not running with administrator rights. 설치 관리자가 관리자 권한으로 동작하고 있지 않습니다. - + 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 @@ -1275,6 +1323,22 @@ The installer will quit and all changes will be lost. <code>%1</code> 파일에 쓸 수 없습니다. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + mkinitcpio를 사용하여 initramfs 만드는 중. + + + + InitramfsJob + + + Creating initramfs. + initramfs를 만드는 중. + + InteractiveTerminalPage @@ -1296,7 +1360,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script 스크립트 @@ -1325,22 +1389,22 @@ The installer will quit and all changes will be lost. 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 취소 (&C) - + &OK 확인 (&O) @@ -1353,27 +1417,27 @@ The installer will quit and all changes will be lost. 형식 - + I accept the terms and conditions above. 상기 계약 조건을 모두 동의합니다. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>라이센스 동의</h1>이 설치 절차는 라이센스 조항의 적용을 받는 독점 소프트웨어를 설치합니다. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다.<br/>조건에 동의하지 않는다면, 설치 절차를 계속할 수 없습니다. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>라이센스 동의</h1>이 설치 절차는 추가적인 기능들을 제공하고 사용자 환경을 개선하기 위한 독점 소프트웨어를 설치할 수 있으며, 이 소프트웨어는 라이센스 조항의 적용을 받습니다. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 상기 최종 사용자 라이센스 동의 (EULAs) 를 검토해주시길 바랍니다. <br/>조건에 동의하지 않는다면, 독점 소프트웨어는 설치되지 않을 것이며, 대체하여 사용할 수 있는 오픈 소스 소프트웨어가 사용될 것입니다. @@ -1381,7 +1445,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License 라이센스 @@ -1389,64 +1453,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 드라이버</strong><br/>by %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">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 브라우저 플러그인</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 코덱</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> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + Shows the complete license text 전체 라이센스 텍스트 표시 - + Hide license text 라이센스 텍스트 숨기기 - + Show license agreement 라이센스 계약 표시 - + Hide license agreement 라이센스 계약 숨기기 - + Opens the license agreement in a browser window. 브라우저 창에서 사용권 계약 열기. - + <a href="%1">View license agreement</a> <a href="%1">라이센스 계약 보기</a> @@ -1454,33 +1518,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. 시스템 언어가 %1로 설정됩니다. - + The numbers and dates locale will be set to %1. 숫자와 날짜 로케일이 %1로 설정됩니다. - + Region: 지역 : - + Zone: 표준시간대 : - - + + &Change... 변경 (&C)... - + Set timezone to %1/%2.<br/> 표준시간대를 %1/%2로 설정합니다.<br/> @@ -1488,38 +1552,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - 위치 정보를 불러오는 중입니다... - - - + 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. + 루트 파티션 %1이(가) LUKS이지만 암호가 설정되지 않았습니다. + + + + Could not create LUKS key file for root partition %1. + 루트 파티션 %1에 대한 LUKS 키 파일을 생성할 수 없습니다. + + + + Could configure LUKS key file on partition %1. + %1 파티션에서 LUKS 키 파일을 구성할 수 있습니다. + + + + MachineIdJob + + + Generate machine-id. + machine-id를 생성합니다. + + + + Configuration Error + 구성 오류 + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name 이름 - + Description 설명 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) 네트워크 설치. (불가: 패키지 목록을 가져올 수 없습니다. 네트워크 연결을 확인해주세요) - + Network Installation. (Disabled: Received invalid groups data) 네트워크 설치. (불가: 유효하지 않은 그룹 데이터를 수신했습니다) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1550,12 +1668,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration OEM 구성 - + Set the OEM Batch Identifier to <code>%1</code>. OEM 배치 식별자를 <code>%1</code>로 설정합니다. @@ -1563,117 +1681,117 @@ 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 암호가 이전 암호로 바뀌었습니다 @@ -1683,125 +1801,171 @@ The installer will quit and all changes will be lost. 암호에 포함된 문자 클래스가 %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 + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1834,47 +1998,86 @@ The installer will quit and all changes will be lost. 이름이 무엇인가요? - + What name do you want to use to log in? 로그인할 때 사용할 이름은 무엇인가요? - + 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>확인을 위해 암호를 두번 입력해 주세요. 올바른 암호에는 문자, 숫자 및 구두점이 혼합되어 있으며 최소 8자 이상이어야 하며 정기적으로 변경해야 합니다.</small> - + What is the name of this computer? 이 컴퓨터의 이름은 무엇인가요? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>이 이름은 컴퓨터가 네트워크의 다른 사용자에게 표시되도록 할 때 사용됩니다.</small> - + + Computer Name + + + + + + 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> @@ -2039,107 +2242,107 @@ 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>esp</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>esp</strong> 플래그를 사용하도록 설정한 FAT32 파일 시스템을 선택하거나 생성하여 <strong>%2</strong> 위치를 마운트합니다.<br/><br/>EFI 시스템 파티션을 설정하지 않고 계속할 수 있지만 시스템이 시작되지 않을 수 있습니다. - + EFI system partition flag not set 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>esp</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>esp</strong> 플래그가 설정되지 않았습니다.<br/>플래그를 설정하려면 돌아가서 파티션을 편집합니다.<br/><br/>플래그를 설정하지 않고 계속할 수 있지만 시스템이 시작되지 않을 수 있습니다. - + 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 partitons to install on. 설치할 파티션이 없습니다. @@ -2205,14 +2408,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. 명령으로부터 아무런 출력이 없습니다. - + Output: @@ -2221,52 +2424,52 @@ 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와 함께 완료되었습니다. @@ -2315,16 +2518,50 @@ Output: (마운트 위치 없음) - + Requirements checking for module <i>%1</i> is complete. <i>%1</i> 모듈에 대한 요구사항 검사가 완료되었습니다. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,37 +2781,37 @@ Output: 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을 설정합니다. - + For best results, please ensure that this computer: 최상의 결과를 얻으려면 이 컴퓨터가 다음 사항을 충족해야 합니다. - + System requirements 시스템 요구 사항 @@ -2595,29 +2832,29 @@ Output: 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 시스템의 호스트 이름을 저장할 수 없습니다 @@ -2758,22 +2995,22 @@ Output: 루트마운트위치는 %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 오류 코드로 종료되었습니다 @@ -2796,22 +3033,22 @@ Output: 잘못된 경로: %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을 쓰기를 위해 열 수 없습니다. @@ -2857,22 +3094,22 @@ Output: TrackingInstallJob - + Installation feedback 설치 피드백 - + Sending installation feedback. 설치 피드백을 보내는 중입니다. - + Internal error in install-tracking. 설치 추적중 내부 오류 - + HTTP request timed out. HTTP 요청 시간이 만료되었습니다. @@ -2880,28 +3117,28 @@ Output: TrackingMachineNeonJob - + 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 깔라마레스 오류. @@ -2934,17 +3171,17 @@ Output: 설치 추적 기능을 사용하면 %1의 사용자 수, %1에 설치하는 하드웨어 (아래 마지막 두 옵션), 기본 응용 프로그램에 대한 지속적인 정보를 얻을 수 있습니다. 전송할 내용을 보려면 각 영역 옆에있는 도움말 아이콘을 클릭하십시오. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. 이 옵션을 선택하면 설치 및 하드웨어에 대한 정보가 전송됩니다. 이 정보는 설치가 완료된 후 <b>한 번만 전송</b>됩니다 - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. 이 옵션을 선택하면 <b>주기적으로</b> 설치, 하드웨어 및 응용 프로그램에 대한 정보를 %1로 전송합니다. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. 이 옵션을 선택하면 <b>정기적으로</b> 설치, 하드웨어, 응용 프로그램 및 사용 패턴에 대한 정보를 %1로 전송합니다. @@ -2952,7 +3189,7 @@ Output: TrackingViewStep - + Feedback 피드백 @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - 사용자 이름이 유효하지 않은 문자들을 포함하고 있습니다. 소문자 그리고 숫자만이 허용됩니다. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. 호스트 이름이 너무 짧습니다. - + Your hostname is too long. 호스트 이름이 너무 깁니다. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - 호스트명에 부적절한 문자가 포함되어 있습니다.알파벳, 숫자 및 하이푼만 사용할 수 있습니다. - - - - + Your passwords do not match! 암호가 일치하지 않습니다! @@ -3004,11 +3245,24 @@ Output: UsersViewStep - + Users 사용자 + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ Output: 형식 - + + + Select application and system language + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + &Release notes 출시 정보 (&R) - + &Known issues 알려진 문제점 (&K) - - - Select language - 언어 선택 - - - + &Support 지원 (&S) @@ -3096,42 +3375,42 @@ Output: 정보 (&A) - + <h1>Welcome to the %1 installer.</h1> <h1>%1 설치 관리자에 오신 것을 환영합니다.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>%1을 위한 Calamares 설치 관리자에 오신 것을 환영합니다.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>%1에 대한 Calamares 설정 프로그램에 오신 것을 환영합니다.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>%1 설치에 오신 것을 환영합니다.</h1> - + 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-2019 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/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 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/">Calamares 번역 팀</a>에게 감사드립니다.<br/><br/><a href="https://calamares.io/">Calamares</a> 개발 후원 : <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 지원 @@ -3139,7 +3418,7 @@ Output: WelcomeViewStep - + Welcome 환영합니다 diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index b235fe6e5..ec763b44c 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index 580dc2831..5bd78dd13 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1 paleidimo įrašas (MBR) - + Boot Partition Paleidimo skaidinys - + System Partition Sistemos skaidinys - + Do not install a boot loader Nediegti paleidyklės - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Tuščias puslapis @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Forma - + GlobalStorage VisuotinisKaupiklis - + JobQueue UžduotiesEilė - + Modules Moduliai - + Type: Tipas: - - + + none nėra - + Interface: Sąsaja: - + Tools Įrankiai - + + Reload Stylesheet + Iš naujo įkelti stilių aprašą + + + + Widget Tree + Valdiklių medis + + + Debug information Derinimo informacija @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Sąranka - + Install Diegimas @@ -123,7 +133,7 @@ Užduotis patyrė nesėkmę (%1) - + Programmed job failure was explicitly requested. Užprogramuota užduoties nesėkmė buvo aiškiai užklausta. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Atlikta @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Vykdyti komandą %1 %2 + Run command '%1' in target system. + Paleisti paskirties sistemoje komandą „%1“. - + + Run command '%1'. + Paleisti komandą „%1“. + + + Running command %1 %2 Vykdoma komanda %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Vykdoma %1 operacija. - + Bad working directory path Netinkama darbinio katalogo vieta - + Working directory %1 for python job %2 is not readable. Darbinis %1 python katalogas dėl %2 užduoties yra neskaitomas - + Bad main script file Prastas pagrindinio skripto failas - + Main script file %1 for python job %2 is not readable. Pagrindinis scenarijus %1 dėl python %2 užduoties yra neskaitomas - + Boost.Python error in job "%1". Boost.Python klaida užduotyje "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Laukiama %n modulio.Laukiama %n modulių.Laukiama %n modulių.Laukiama %n modulio. - + (%n second(s)) (%n sekundė)(%n sekundės)(%n sekundžių)(%n sekundė) - + System-requirements checking is complete. Sistemos reikalavimų tikrinimas yra užbaigtas. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Atgal - - + + &Next &Toliau - - + + &Cancel A&tsisakyti - - + 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. - + Setup Failed Sąranka patyrė nesėkmę - + + Would you like to paste the install log to the web? + Ar norėtumėte įdėti diegimo žurnalą į saityną? + + + + 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 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> - + &Set up now Nu&statyti dabar - + &Set up Nu&statyti - + &Install Į&diegti - + Setup is complete. Close the setup program. Sąranka užbaigta. Užverkite sąrankos programą. - + 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? Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - + + &Yes &Taip - + + &No &Ne - + &Close &Užverti - + Continue with setup? Tęsti sąranką? - + 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> - + &Install now Į&diegti dabar - + Go &back &Grįžti - + &Done A&tlikta - + The installation is complete. Close the installer. Diegimas užbaigtas. Užverkite diegimo programą. - + Error Klaida - + Installation Failed Diegimas nepavyko @@ -372,40 +403,50 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CalamaresPython::Helper - + Unknown exception type Nežinomas išimties tipas - + unparseable Python error Nepalyginama Python klaida - + unparseable Python traceback Nepalyginamas Python atsekimas - + Unfetchable Python error. Neatgaunama Python klaida. + + CalamaresUtils + + + Install log posted to: +%1 + Diegimo žurnalas paskelbtas į: +%1 + + CalamaresWindow - + %1 Setup Program %1 sąrankos programa - + %1 Installer %1 diegimo programa - + Show debug information Rodyti derinimo informaciją @@ -436,7 +477,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <strong>Rankinis skaidymas</strong><br/>Galite patys kurti ar keisti skaidinių dydžius. - + Boot loader location: Paleidyklės vieta: @@ -448,8 +489,8 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - - + + Current: Dabartinis: @@ -464,96 +505,96 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CommandList - - + + Could not run command. Nepavyko paleisti komandos. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komanda yra vykdoma serverio aplinkoje ir turi žinoti šaknies kelią, tačiau nėra apibrėžtas joks rootMountPoint. - + The command needs to know the user's name, but no username is defined. Komanda turi žinoti naudotojo vardą, tačiau nebuvo apibrėžtas joks naudotojo vardas. @@ -621,7 +662,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ContextualProcessJob - + Contextual Processes Job Konteksto procesų užduotis @@ -801,17 +842,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. 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. @@ -844,7 +885,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. The installer failed to create a volume group named '%1'. - Diegimo programai nepavyko sukurti tomų grupės, pavadinimu "%1". + Diegimo programai nepavyko sukurti tomų grupės pavadinimu „%1“. @@ -958,7 +999,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. DummyCppJob - + Dummy C++ Job Fiktyvi C++ užduotis @@ -1125,12 +1166,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <html><head/><body><p>Pažymėjus šį langelį, jūsų sistema nedelsiant pasileis iš naujo, kai spustelėsite <span style="font-style:italic;">Atlikta</span> ar užversite diegimo programą.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Sąranka nepavyko</h1><br/>%1 nebuvo nustatyta jūsų kompiuteryje.<br/>Klaidos pranešimas buvo: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Diegimas nepavyko</h1><br/>%1 nebuvo įdiegta jūsų kompiuteryje.<br/>Klaidos pranešimas buvo: %2. @@ -1189,66 +1230,74 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. GeneralRequirements - + has at least %1 GiB available drive space turi bent %1 GiB laisvos vietos diske - + There is not enough drive space. At least %1 GiB is required. Neužtenka vietos diske. Reikia bent %1 GiB. - + has at least %1 GiB working memory turi bent %1 GiB darbinės atminties - + The system does not have enough working memory. At least %1 GiB is required. Sistemai neužtenka darbinės atminties. Reikia bent %1 GiB. - + is plugged in to a power source prijungta prie maitinimo šaltinio - + The system is not plugged in to a power source. Sistema nėra prijungta prie maitinimo šaltinio. - + is connected to the Internet prijungta prie Interneto - + The system is not connected to the Internet. Sistema nėra prijungta prie Interneto. - + The setup program is not running with administrator rights. Sąrankos programa yra vykdoma be administratoriaus teisių. - + The installer is not running with administrator rights. Diegimo programa yra vykdoma be administratoriaus teisių. - + The screen is too small to display the setup program. Ekranas yra per mažas, kad būtų parodyta sąrankos programa. - + The screen is too small to display the installer. Ekranas yra per mažas, kad būtų parodyta diegimo programa. + + HostInfoJob + + + Collecting information about your machine. + Renkama informacija apie jūsų kompiuterį. + + IDJob @@ -1275,6 +1324,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Nepavyko rašyti į failą <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Sukuriama initramfs naudojant mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Sukuriama initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. InteractiveTerminalViewStep - + Script Scenarijus @@ -1325,22 +1390,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LCLocaleDialog - + System locale setting Sistemos lokalės nustatymas - + 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>. Sistemos lokalės nustatymas įtakoja, kai kurių komandų eilutės naudotojo sąsajos elementų, kalbos ir simbolių rinkinį.<br/>Dabar yra nustatyta <strong>%1</strong>. - + &Cancel &Atsisakyti - + &OK &Gerai @@ -1353,27 +1418,27 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Forma - + I accept the terms and conditions above. Sutinku su aukščiau išdėstytomis nuostatomis ir sąlygomis. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licencijos Sutartis</h1>Ši sąrankos procedūra įdiegs nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Prašome aukščiau peržiūrėti Galutinio Vartotojo Licencijos Sutartis (angl. EULA).<br/>Jeigu nesutiksite su nuostatomis, sąrankos procedūra negalės būti tęsiama. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licencijos Sutartis</h1>Tam, kad pateiktų papildomas ypatybes ir pagerintų naudotojo patirtį, ši sąrankos procedūra gali įdiegti nuosavybinę programinę įrangą, kuriai yra taikomos licencijavimo nuostatos. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Prašome aukščiau peržiūrėti Galutinio Vartotojo Licencijos Sutartis (angl. EULA).<br/>Jeigu nesutiksite su nuostatomis, tuomet nuosavybinė programinė įranga nebus įdiegta, o vietoj jos, bus naudojamos atviro kodo alternatyvos. @@ -1381,7 +1446,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LicenseViewStep - + License Licencija @@ -1389,64 +1454,64 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 tvarkyklė</strong><br/>iš %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 grafikos tvarkyklė</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 naršyklės papildinys</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodekas</strong><br/><font color="Grey">iš %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paketas</strong><br/><font color="Grey">iš %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">iš %2</font> - + Shows the complete license text Rodo pilną licencijos tekstą - + Hide license text Slėpti licencijos tekstą - + Show license agreement Rodyti licencijos sutikimą - + Hide license agreement Slėpti licencijos sutikimą - + Opens the license agreement in a browser window. Atveria licencijos sutikimą naršyklės lange. - + <a href="%1">View license agreement</a> <a href="%1">Rodyti licencijos sutikimą</a> @@ -1454,33 +1519,33 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocalePage - + 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. - + Region: Regionas: - + Zone: Zona: - - + + &Change... K&eisti... - + Set timezone to %1/%2.<br/> Nustatyti laiko juostą kaip %1/%2.<br/> @@ -1488,38 +1553,92 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocaleViewStep - - Loading location data... - Įkeliami vietos duomenys... - - - + Location Vieta + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Konfigūruojamas LUKS raktų failas. + + + + + No partitions are defined. + Nėra jokių apibrėžtų skaidinių. + + + + + + Encrypted rootfs setup error + Šifruoto rootfs sąrankos klaida + + + + Root partition %1 is LUKS but no passphrase has been set. + Šaknies skaidinys %1 yra LUKS, tačiau nebuvo nustatyta jokia slaptafrazė. + + + + Could not create LUKS key file for root partition %1. + Nepavyko šakniniam skaidiniui %1 sukurti LUKS rakto failo. + + + + Could configure LUKS key file on partition %1. + Nepavyko konfigūruoti LUKS rakto failo skaidinyje %1. + + + + MachineIdJob + + + Generate machine-id. + Generuoti machine-id. + + + + Configuration Error + Konfigūracijos klaida + + + + No root mount point is set for MachineId. + Nenustatytas joks šaknies prijungimo taškas, skirtas MachineId. + + NetInstallPage - + Name Pavadinimas - + Description Aprašas - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Tinklo diegimas. (Išjungta: Nepavyksta gauti paketų sąrašus, patikrinkite savo tinklo ryšį) - + Network Installation. (Disabled: Received invalid groups data) Tinklo diegimas. (Išjungtas: Gauti neteisingi grupių duomenys) + + + Network Installation. (Disabled: Incorrect configuration) + Tinklo diegimas. (Išjungtas: Neteisinga konfigūracija) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. OEMViewStep - + OEM Configuration OEM konfigūracija - + Set the OEM Batch Identifier to <code>%1</code>. Nustatyti OEM partijos identifikatorių į <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. 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 + + + + PackageChooserPage + + + Form + Forma + + + + Product Name + Produkto pavadinimas + + + + TextLabel + Teksto etiketė + + + + Long Product Description + Ilgas produkto aprašas + + + + Package Selection + Paketų pasirinkimas + + + + Please pick a product from the list. The selected product will be installed. + Pasirinkite iš sąrašo produktą. Pasirinktas produktas bus įdiegtas. + + + + PackageChooserViewStep + + + Packages + Paketai + Page_Keyboard @@ -1834,47 +1999,86 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Koks jūsų vardas? - + What name do you want to use to log in? Kokį vardą norite naudoti prisijungimui? - + Choose a password to keep your account safe. Apsaugokite savo paskyrą slaptažodžiu - + + <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>Norint įsitikinti, kad rašydami slaptažodį nesuklydote, įrašykite tą patį slaptažodį du kartus. Stiprus slaptažodis yra raidžių, skaičių ir punktuacijos ženklų mišinys, jis turi būti mažiausiai aštuonių simbolių, be to, turėtų būti reguliariai keičiamas.</small> - + What is the name of this computer? Koks šio kompiuterio vardas? - + + Your Full Name + Jūsų visas vardas + + + + login + prisijungimas + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Šis vardas bus naudojamas, jeigu padarysite savo kompiuterį matomą kitiems naudotojams tinkle.</small> - + + Computer Name + Kompiuterio vardas + + + + + Password + Slaptažodis + + + + + Repeat Password + Pakartokite slaptažodį + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Pažymėjus šį langelį, bus atliekamas slaptažodžio stiprumo tikrinimas ir negalėsite naudoti silpną slaptažodį. + + + + Require strong passwords. + Reikalauti stiprių slaptažodžių. + + + Log in automatically without asking for the password. Prisijungti automatiškai, neklausiant slaptažodžio. - + Use the same password for the administrator account. Naudoti tokį patį slaptažodį administratoriaus paskyrai. - + Choose a password for the administrator account. Pasirinkite slaptažodį administratoriaus paskyrai. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Norint įsitikinti, kad rašydami slaptažodį nesuklydote, įrašykite tą patį slaptažodį du kartus.</small> @@ -2039,107 +2243,107 @@ 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>esp</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/>Tam, kad sukonfigūruotumėte EFI sistemos skaidinį, grįžkite atgal ir pasirinkite arba sukurkite FAT32 failų sistemą su įjungta <strong>esp</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. - + EFI system partition flag not set Nenustatyta EFI sistemos skaidinio vėliavėlė - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</strong> vėliavėlė yra nenustatyta.<br/>Tam, kad nustatytumėte vėliavėlę, grįžkite atgal ir redaguokite skaidinį.<br/><br/>Jūs galite tęsti ir nenustatę vėliavėlės, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + 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 partitons to install on. Nėra skaidinių į kuriuos diegti. @@ -2205,14 +2409,14 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ProcessResult - + There was no output from the command. Nebuvo jokios išvesties iš komandos. - + Output: @@ -2221,52 +2425,52 @@ Išvestis: - + External command crashed. Išorinė komanda užstrigo. - + Command <i>%1</i> crashed. Komanda <i>%1</i> užstrigo. - + External command failed to start. Nepavyko paleisti išorinės komandos. - + Command <i>%1</i> failed to start. Nepavyko paleisti komandos <i>%1</i>. - + Internal error when starting command. Paleidžiant komandą, įvyko vidinė klaida. - + Bad parameters for process job call. Blogi parametrai proceso užduoties iškvietai. - + External command failed to finish. Nepavyko pabaigti išorinės komandos. - + Command <i>%1</i> failed to finish in %2 seconds. Nepavyko per %2 sek. pabaigti komandos <i>%1</i>. - + External command finished with errors. Išorinė komanda pabaigta su klaidomis. - + Command <i>%1</i> finished with exit code %2. Komanda <i>%1</i> pabaigta su išėjimo kodu %2. @@ -2315,16 +2519,50 @@ Išvestis: (nėra prijungimo taško) - + Requirements checking for module <i>%1</i> is complete. Reikalavimų tikrinimas <i>%1</i> moduliui yra užbaigtas. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Nėra produkto + + + + No description provided. + Nepateikta jokio aprašo. + + + + + + + + File not found + Failas nerastas + + + + Path <pre>%1</pre> must be an absolute path. + Kelias <pre>%1</pre> privalo būti absoliutus kelias. + + + + Could not create new random file <pre>%1</pre>. + Nepavyko sukurti naujo atsitiktinio failo <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Nepavyko perskaityti atsitiktinio failo <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2456,7 +2694,7 @@ Išvestis: Resize Failed - Dydžio keitimas patyrė nesėkmę + Dydžio pakeisti nepavyko @@ -2538,43 +2776,43 @@ Išvestis: The installer failed to resize a volume group named '%1'. - Diegimo programai nepavyko pakeisti tomų grupės, pavadinimu "%1", dydį. + Diegimo programai nepavyko pakeisti tomų grupės, kurios pavadinimas „%1“, dydžio. ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Šis kompiuteris netenkina minimalių %1 nustatymo reikalavimų.<br/>Sąranka negali būti tęsiama. <a href="#details">Išsamiau...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Šis kompiuteris netenkina minimalių %1 diegimo reikalavimų.<br/>Diegimas negali būti tęsiamas. <a href="#details">Išsamiau...</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. Šis kompiuteris netenkina kai kurių %1 nustatymui rekomenduojamų reikalavimų.<br/>Sąranką galima tęsti, tačiau kai kurios funkcijos gali būti išjungtos. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.<br/>Diegimą galima tęsti, tačiau kai kurios funkcijos gali būti išjungtos. - + This program will ask you some questions and set up %2 on your computer. Programa užduos kelis klausimus ir padės įsidiegti %2. - + For best results, please ensure that this computer: Norėdami pasiekti geriausių rezultatų, įsitikinkite kad šis kompiuteris: - + System requirements Sistemos reikalavimai @@ -2595,29 +2833,29 @@ Išvestis: SetHostNameJob - + Set hostname %1 Nustatyti kompiuterio vardą %1 - + Set hostname <strong>%1</strong>. Nustatyti kompiuterio vardą <strong>%1</strong>. - + Setting hostname %1. Nustatomas kompiuterio vardas %1. - - + + Internal Error Vidinė klaida - - + + Cannot write hostname to target system Nepavyko įrašyti kompiuterio vardo į paskirties sistemą @@ -2758,22 +2996,22 @@ Išvestis: rootMountPoint yra %1 - + Cannot disable root account. Nepavyksta išjungti administratoriaus (root) paskyros. - + passwd terminated with error code %1. komanda passwd nutraukė darbą dėl klaidos kodo %1. - + Cannot set password for user %1. Nepavyko nustatyti slaptažodžio naudotojui %1. - + usermod terminated with error code %1. komanda usermod nutraukė darbą dėl klaidos kodo %1. @@ -2796,22 +3034,22 @@ Išvestis: Neteisingas kelias: %1 - + Cannot set timezone. Negalima nustatyti laiko juostas. - + Link creation failed, target: %1; link name: %2 Nuorodos sukūrimas nepavyko, paskirtis: %1; nuorodos pavadinimas: %2 - + Cannot set timezone, Nepavyksta nustatyti laiko juostos, - + Cannot open /etc/timezone for writing Nepavyksta įrašymui atidaryti failo /etc/timezone @@ -2857,22 +3095,22 @@ Išvestis: TrackingInstallJob - + Installation feedback Grįžtamasis ryšys apie diegimą - + Sending installation feedback. Siunčiamas grįžtamasis ryšys apie diegimą. - + Internal error in install-tracking. Vidinė klaida diegimo sekime. - + HTTP request timed out. Baigėsi HTTP užklausos laikas. @@ -2880,28 +3118,28 @@ Išvestis: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Išvestis: Diegimo sekimas padeda %1 matyti kiek jie turi naudotojų, į kokią aparatinę įrangą naudotojai diegia %1 ir (su paskutiniais dviejais parametrais žemiau), gauti tęstinę informaciją apie pageidaujamas programas. Norėdami matyti kas bus siunčiama, šalia kiekvienos srities spustelėkite žinyno piktogramą. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Tai pažymėdami, išsiųsite informaciją apie savo diegimą ir aparatinę įrangą. Ši informacija bus <b>išsiųsta tik vieną kartą</b>, užbaigus diegimą. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Tai pažymėdami, <b>periodiškai</b> siųsite informaciją apie savo diegimą, aparatinę įrangą ir programas į %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Tai pažymėdami, <b>reguliariai</b> siųsite informaciją apie savo diegimą, aparatinę įrangą, programas ir naudojimo būdus į %1. @@ -2952,7 +3190,7 @@ Išvestis: TrackingViewStep - + Feedback Grįžtamasis ryšys @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Jūsų naudotojo varde yra neleistinų simbolių. Leidžiamos tik mažosios raidės ir skaičiai. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Yra leidžiamos tik 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Jūsų kompiuterio varde yra neleistinų simbolių. Kompiuterio varde gali būti tik raidės, skaičiai ir brūkšniai. - - - - + Your passwords do not match! Jūsų slaptažodžiai nesutampa! @@ -3004,11 +3246,24 @@ Išvestis: UsersViewStep - + Users Naudotojai + + VariantModel + + + Key + Raktas + + + + Value + Reikšmė + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Išvestis: Forma - + + + Select application and system language + Pasirinkite programų ir sistemos kalbą + + + + Open donations website + Atverti paaukojimų internetinę svetainę + + + + &Donate + &Paaukoti + + + + Open help and support website + Atverti pagalbos ir palaikymo internetinę svetainę + + + + Open issues and bug-tracking website + Atverti strigčių ir klaidų sekimo internetinę svetainę + + + + Open release notes website + Atverti laidos informacijos internetinę svetainę + + + &Release notes Lai&dos informacija - + &Known issues Ž&inomos problemos - - - Select language - Pasirinkite kalbą - - - + &Support &Palaikymas @@ -3096,42 +3376,42 @@ Išvestis: &Apie - + <h1>Welcome to the %1 installer.</h1> <h1>Jus sveikina %1 diegimo programa.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Jus sveikina Calamares diegimo programa, skirta %1 sistemai.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Jus sveikina Calamares sąrankos programa, skirta %1 sistemai.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Jus sveikina %1 sąranka.</h1> - + About %1 setup Apie %1 sąranką - + About %1 installer Apie %1 diegimo programą - + <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-2019 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/>skirta %3</strong><br/><br/>Autorių teisės 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorių teisės 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dėkojame <a href="https://calamares.io/team/">Calamares komandai</a> bei <a href="https://www.transifex.com/calamares/calamares/">Calamares vertėjų komandai</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> plėtojimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti programinė įrangą. - + %1 support %1 palaikymas @@ -3139,7 +3419,7 @@ Išvestis: WelcomeViewStep - + Welcome Pasisveikinimas diff --git a/lang/calamares_mk.ts b/lang/calamares_mk.ts index 05cf84668..956b0af4c 100644 --- a/lang/calamares_mk.ts +++ b/lang/calamares_mk.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Празна Страна @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools Алатки - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Инсталирај @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Готово @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. Инсталацијата е готова. Исклучете го инсталерот. - + Error Грешка - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_ml.ts b/lang/calamares_ml.ts new file mode 100644 index 000000000..2d18379e1 --- /dev/null +++ b/lang/calamares_ml.ts @@ -0,0 +1,3427 @@ + + + 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>ബയോസ്</strong> മാത്രമേ പിന്തുണയ്ക്കൂ.<br>നൂതന സിസ്റ്റങ്ങൾ പൊതുവേ <strong>ഇഎഫ്ഐ</strong>ആണ് ഉപയോഗിക്കുന്നത് എന്നിരുന്നാലും യോജിപ്പുള്ള രീതിയിൽ ആരംഭിക്കുകയാണെങ്കിൽ ബയോസ് ആയി പ്രദർശിപ്പിക്കപ്പെട്ടേക്കാം. + + + + 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>ഇ.എഫ്.ഐ</strong> ബൂട്ട് എൻ‌വയോൺ‌മെന്റ് ഉപയോഗിച്ചാണ് ആരംഭിച്ചത്.<br>ഒരു ഇ.എഫ്.ഐ എൻ‌വയോൺ‌മെൻറിൽ‌ നിന്നും സ്റ്റാർ‌ട്ടപ്പ് ക്രമീകരിക്കുന്നതിന്, ഒരു ഇ.എഫ്.ഐ സിസ്റ്റം പാർട്ടീഷനിൽ ഈ ഇൻസ്റ്റാളർ <strong>ഗ്രബ്</strong> അല്ലെങ്കിൽ <strong>systemd-boot</strong> പോലെയുള്ള ഒരു ബൂട്ട് ലോഡർ ആപ്ലിക്കേഷൻ വിന്യസിക്കണം.നിങ്ങൾ മാനുവൽ പാർട്ടീഷനിംഗ് തിരഞ്ഞെടുത്തിട്ടില്ലെങ്കിൽ ഇത് യാന്ത്രികമായി നടക്കേണ്ടതാണ്,അത്തരം സന്ദർഭങ്ങളിൽ നിങ്ങൾ അത് തിരഞ്ഞെടുക്കണം അല്ലെങ്കിൽ സ്വന്തമായി സൃഷ്ടിക്കണം.<br> + + + + 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>ബയോസ്</strong> ബൂട്ട് എൻ‌വയോൺ‌മെന്റ് ഉപയോഗിച്ചാണ് ആരംഭിച്ചത്.<br><br>ഒരു ബയോസ് എൻ‌വയോൺ‌മെൻറിൽ‌ നിന്നും സ്റ്റാർ‌ട്ടപ്പ് ക്രമീകരിക്കുന്നതിന്, പാർട്ടീഷൻന്റെ തുടക്കത്തിൽ അല്ലെങ്കിൽ പാർട്ടീഷൻ ടേബിളിന്റെ തുടക്കത്തിനടുത്തുള്ള മാസ്റ്റർ ബൂട്ട് റെക്കോർഡ് ൽ (മുൻഗണന) ഈ ഇൻസ്റ്റാളർ <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 + GlobalStorage + + + + JobQueue + 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. + പൈതൺ ജോബ് %2 യുടെ പ്രവർത്തന പാതയായ %1 വായിക്കുവാൻ കഴിയുന്നില്ല + + + + Bad main script file + മോശമായ പ്രധാന സ്ക്രിപ്റ്റ് ഫയൽ + + + + Main script file %1 for python job %2 is not readable. + പൈത്തൺ ജോബ് %2 നായുള്ള പ്രധാന സ്ക്രിപ്റ്റ് ഫയൽ %1 വായിക്കാൻ കഴിയുന്നില്ല. + + + + Boost.Python error in job "%1". + "%1" എന്ന പ്രവൃത്തിയില്‍ ബൂസ്റ്റ്.പൈതണ്‍ പിശക് + + + + Calamares::RequirementsChecker + + + Waiting for %n module(s). + %n മൊഡ്യൂളിനായി കാത്തിരിക്കുന്നു.%n മൊഡ്യൂളുകൾക്കായി കാത്തിരിക്കുന്നു. + + + + (%n second(s)) + (%1 സെക്കൻഡ്)(%1 സെക്കൻഡുകൾ) + + + + System-requirements checking is complete. + സിസ്റ്റം-ആവശ്യകതകളുടെ പരിശോധന പൂർത്തിയായി. + + + + Calamares::ViewManager + + + + &Back + പുറകോട്ട് (&B) + + + + + &Next + അടുത്തത് (&N) + + + + + &Cancel + റദ്ദാക്കുക (&C) + + + + Cancel setup without changing the system. + സിസ്റ്റത്തിന് മാറ്റമൊന്നും വരുത്താതെ സജ്ജീകരണപ്രക്രിയ റദ്ദാക്കുക. + + + + Cancel installation without changing the system. + സിസ്റ്റത്തിന് മാറ്റമൊന്നും വരുത്താതെ ഇൻസ്റ്റളേഷൻ റദ്ദാക്കുക. + + + + Setup Failed + സജ്ജീകരണപ്രക്രിയ പരാജയപ്പെട്ടു + + + + Would you like to paste the install log to the web? + ഇൻസ്റ്റാൾ ലോഗ് വെബിലേക്ക് പകർത്തണോ? + + + + 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 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> + + + + &Set up now + ഉടൻ സജ്ജീകരിക്കുക (&S) + + + + &Set up + സജ്ജീകരിക്കുക (&S) + + + + &Install + ഇൻസ്റ്റാൾ (&I) + + + + Setup is complete. Close the setup program. + സജ്ജീകരണം പൂർത്തിയായി. പ്രയോഗം അടയ്ക്കുക. + + + + 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. + നിലവിലുള്ള ഇൻസ്റ്റാൾ പ്രക്രിയ റദ്ദാക്കണോ? +ഇൻസ്റ്റാളർ നിൽക്കുകയും എല്ലാ മാറ്റങ്ങളും നഷ്ടപ്പെടുകയും ചെയ്യും. + + + + + &Yes + വേണം (&Y) + + + + + &No + വേണ്ട (&N) + + + + &Close + അടയ്ക്കുക (&C) + + + + Continue with setup? + സജ്ജീകരണപ്രക്രിയ തുടരണോ? + + + + 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> + + + + &Install now + ഉടൻ ഇൻസ്റ്റാൾ ചെയ്യുക (&I) + + + + Go &back + പുറകോട്ടു പോകുക + + + + &Done + ചെയ്‌തു + + + + The installation is complete. Close the installer. + ഇൻസ്റ്റളേഷൻ പൂർത്തിയായി. ഇൻസ്റ്റാളർ അടയ്ക്കുക + + + + Error + പിശക് + + + + Installation Failed + ഇൻസ്റ്റളേഷൻ പരാജയപ്പെട്ടു + + + + CalamaresPython::Helper + + + Unknown exception type + അജ്ഞാതമായ പിശക് + + + + unparseable Python error + മനസ്സിലാക്കാനാവാത്ത പൈത്തൺ പിഴവ് + + + + unparseable Python traceback + മനസ്സിലാക്കാനാവാത്ത പൈത്തൺ ട്രേസ്ബാക്ക് + + + + Unfetchable Python error. + ലഭ്യമാക്കാനാവാത്ത പൈത്തൺ പിഴവ്. + + + + CalamaresUtils + + + Install log posted to: +%1 + ഇൻസ്റ്റാൾ ലോഗ് ഇങ്ങോട്ട് സ്ഥാപിച്ചിരിക്കുന്നു +%1 + + + + CalamaresWindow + + + %1 Setup Program + %1 സജ്ജീകരണപ്രയോഗം + + + + %1 Installer + %1 ഇൻസ്റ്റാളർ + + + + Show debug information + ഡീബഗ് വിവരങ്ങൾ കാണിക്കുക + + + + CheckerContainer + + + Gathering system information... + സിസ്റ്റത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ശേഖരിക്കുന്നു... + + + + ChoicePage + + + Form + ഫോം + + + + After: + ശേഷം: + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>സ്വമേധയാ ഉള്ള പാർട്ടീഷനിങ്</strong><br/>നിങ്ങൾക്ക് സ്വയം പാർട്ടീഷനുകൾ സൃഷ്ടിക്കാനോ വലുപ്പം മാറ്റാനോ കഴിയും. + + + + Boot loader location: + ബൂട്ട് ലോഡറിന്റെ സ്ഥാനം: + + + + Select storage de&vice: + സംഭരണിയ്ക്കുള്ള ഉപകരണം തിരഞ്ഞെടുക്കൂ: + + + + + + + Current: + നിലവിലുള്ളത്: + + + + 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 പാർട്ടീഷൻ സൃഷ്ടിക്കുകയും ചെയ്യും. + + + + <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>. + + + + 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/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും നിങ്ങൾക്ക് കഴിയും. + + + + No Swap + സ്വാപ്പ് വേണ്ട + + + + Reuse Swap + സ്വാപ്പ് വീണ്ടും ഉപയോഗിക്കൂ + + + + Swap (no Hibernate) + സ്വാപ്പ് (ഹൈബർനേഷൻ ഇല്ല) + + + + Swap (with Hibernate) + സ്വാപ്പ് (ഹൈബർനേഷനോട് കൂടി) + + + + Swap to file + ഫയലിലേക്ക് സ്വാപ്പ് ചെയ്യുക + + + + + + + <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 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/>സ്റ്റോറേജ് ഉപകരണത്തിൽ എന്തെങ്കിലും മാറ്റം വരുത്തുന്നതിനുമുമ്പ് നിങ്ങൾക്ക് നിങ്ങളുടെ ചോയ്‌സുകൾ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും കഴിയും.  + + + + 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. + കമാൻഡ് ഹോസ്റ്റ് എൻവയോൺമെന്റിൽ പ്രവർത്തിക്കുന്നു, റൂട്ട് പാത്ത് അറിയേണ്ടതുണ്ട്, പക്ഷേ rootMountPoint നിർവചിച്ചിട്ടില്ല. + + + + The command needs to know the user's name, but no username is defined. + കമാൻഡിന് ഉപയോക്താവിന്റെ പേര് അറിയേണ്ടതുണ്ട്,എന്നാൽ ഉപയോക്തൃനാമമൊന്നും നിർവചിച്ചിട്ടില്ല. + + + + ContextualProcessJob + + + Contextual Processes Job + സാന്ദർഭിക പ്രക്രിയകൾ ജോലി + + + + CreatePartitionDialog + + + Create a Partition + ഒരു പാർട്ടീഷൻ സൃഷ്ടിക്കുക + + + + MiB + MiB + + + + Partition &Type: + പാർട്ടീഷൻ തരം (&T): + + + + &Primary + പ്രാഥമികം (&P) + + + + E&xtended + എക്സ്റ്റൻഡഡ് (&x) + + + + Fi&le System: + ഫയൽ സിസ്റ്റം (&l): + + + + LVM LV name + എൽവി‌എം എൽവി പേര് + + + + Flags: + ഫ്ലാഗുകൾ: + + + + &Mount Point: + മൗണ്ട് പോയിന്റ് (&M): + + + + Si&ze: + വലുപ്പം (&z): + + + + En&crypt + എൻക്രിപ്റ്റ് (&c) + + + + Logical + ലോജിക്കൽ + + + + Primary + പ്രാഥമികം + + + + GPT + ജിപിറ്റി + + + + Mountpoint already in use. Please select another one. + മൗണ്ട്പോയിന്റ് നിലവിൽ ഉപയോഗിക്കപ്പെട്ടിരിക്കുന്നു. ദയവായി മറ്റൊരെണ്ണം തിരഞ്ഞെടുക്കൂ. + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + ഫയൽ സിസ്റ്റം %1 ഉപയോഗിച്ച് %4 (%3) ൽ പുതിയ %2MiB പാർട്ടീഷൻ സൃഷ്ടിക്കുക. + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + ഫയൽ സിസ്റ്റം <strong>%1</strong> ഉപയോഗിച്ച് <strong>%4</strong> (%3) ൽ പുതിയ <strong>%2MiB</strong> പാർട്ടീഷൻ സൃഷ്ടിക്കുക. + + + + Creating new %1 partition on %2. + %2 ൽ പുതിയ %1 പാർട്ടീഷൻ സൃഷ്ടിക്കുന്നു. + + + + 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) + മാസ്റ്റർ ബൂട്ട് റെക്കോർഡ് (എംബിആർ) + + + + GUID Partition Table (GPT) + GUID പാർട്ടീഷൻ ടേബിൾ (ജിപിറ്റി) + + + + CreatePartitionTableJob + + + 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>. + <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 + + + 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 + + + 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>ഉറപ്പില്ലെങ്കിൽ, ആധുനിക സിസ്റ്റങ്ങളിൽ ജിപിടിയാണ് ശുപാർശ ചെയ്യുന്നത്. + + + + 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>ഇ‌എഫ്‌ഐ</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>ബയോസ്</strong> ബൂട്ട് എൻ‌വയോൺ‌മെൻറിൽ‌ നിന്നും ആരംഭിക്കുന്ന പഴയ സിസ്റ്റങ്ങളിൽ‌ മാത്രമേ ഈ പാർട്ടീഷൻ ടേബിൾ തരം ഉചിതമാകൂ.മറ്റു സാഹചര്യങ്ങളിൽ പൊതുവെ ജിപിടി യാണ് ശുപാർശ ചെയ്യുന്നത്.<br><br><strong>മുന്നറിയിപ്പ്:</strong> കാലഹരണപ്പെട്ട MS-DOS കാലഘട്ട സ്റ്റാൻഡേർഡാണ് MBR പാർട്ടീഷൻ ടേബിൾ.<br>പാർട്ടീഷൻ ടേബിൾ 4 പ്രാഥമിക പാർട്ടീഷനുകൾ മാത്രമേ സൃഷ്ടിക്കാൻ കഴിയൂ, അവയിൽ 4 ൽ ഒന്ന് <em>എക്സ്ടെൻഡഡ്‌</em> പാർട്ടീഷൻ ആകാം, അതിൽ നിരവധി <em>ലോജിക്കൽ</em> പാർട്ടീഷനുകൾ അടങ്ങിയിരിക്കാം. + + + + 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 കോൺഫിഗറേഷൻ %1 ലേക്ക് എഴുതുക + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + ഡ്രാക്കട്ടിനായി LUKS കോൺഫിഗറേഷൻ എഴുതുന്നത് ഒഴിവാക്കുക: "/" പാർട്ടീഷൻ എൻ‌ക്രിപ്റ്റ് ചെയ്തിട്ടില്ല + + + + Failed to open %1 + %1 തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു + + + + DummyCppJob + + + Dummy C++ Job + ഡമ്മി C++ ജോലി + + + + EditExistingPartitionDialog + + + Edit Existing Partition + നിലവിലുള്ള പാർട്ടീഷൻ തിരുത്തുക + + + + Content: + ഉള്ളടക്കം: + + + + &Keep + നിലനിർത്തുക (&K) + + + + Format + ഫോർമാറ്റ് + + + + Warning: Formatting the partition will erase all existing data. + മുന്നറിയിപ്പ്: പാർട്ടീഷൻ ഫോർമാറ്റ് ചെയ്യുന്നത് നിലവിലുള്ള എല്ലാ ഡാറ്റയും ഇല്ലാതാക്കും. + + + + &Mount Point: + മൗണ്ട് പോയിന്റ് (&M): + + + + Si&ze: + വലുപ്പം (&z): + + + + MiB + MiB + + + + Fi&le System: + ഫയൽ സിസ്റ്റം (&l): + + + + Flags: + ഫ്ലാഗുകൾ: + + + + Mountpoint already in use. Please select another one. + മൗണ്ട്പോയിന്റ് നിലവിൽ ഉപയോഗിക്കപ്പെട്ടിരിക്കുന്നു. ദയവായി മറ്റൊരെണ്ണം തിരഞ്ഞെടുക്കൂ. + + + + EncryptWidget + + + Form + ഫോം + + + + En&crypt system + സിസ്റ്റം എൻക്രിപ്റ്റ് ചെയ്യുക (&c) + + + + Passphrase + രഹസ്യവാചകം + + + + Confirm passphrase + രഹസ്യവാചകം സ്ഥിരീകരിക്കുക + + + + Please enter the same passphrase in both boxes. + രണ്ട് പെട്ടികളിലും ഒരേ രഹസ്യവാചകം നല്‍കുക, + + + + 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. + മൗണ്ട് പോയിന്റുകൾ സജ്ജീകരിക്കുക. + + + + FinishedPage + + + Form + ഫോം + + + + <Restart checkbox tooltip> + <Restart checkbox tooltip> + + + + &Restart now + ഇപ്പോൾ റീസ്റ്റാർട്ട് ചെയ്യുക (&R) + + + + <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>അമർത്തുമ്പോഴോ സജ്ജീകരണ പ്രോഗ്രാം അടയ്ക്കുമ്പോഴോ ഉടൻ പുനരാരംഭിക്കും. + + + + <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>അമർത്തുമ്പോഴോ സജ്ജീകരണ പ്രോഗ്രാം അടയ്ക്കുമ്പോഴോ ഉടൻ പുനരാരംഭിക്കും. + + + + <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. + %4 -ലുള്ള പാർട്ടീഷൻ %1 (ഫയൽ സിസ്റ്റം: %2, വലുപ്പം:‌%3 MiB) ഫോർമാറ്റ് ചെയ്യുക. + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + ഫയൽ സിസ്റ്റം <strong>%2</strong> ഉപയോഗിച്ച് %3 MiB പാർട്ടീഷൻ <strong>%1</strong> ഫോർമാറ്റ് ചെയ്യുക. + + + + Formatting partition %1 with file system %2. + ഫയൽ സിസ്റ്റം %2 ഉപയോഗിച്ച് പാർട്ടീഷൻ‌%1 ഫോർമാറ്റ് ചെയ്യുന്നു. + + + + The installer failed to format partition %1 on disk '%2'. + ഡിസ്ക് '%2'ൽ ഉള്ള പാർട്ടീഷൻ‌ %1 ഫോർമാറ്റ് ചെയ്യുന്നതിൽ ഇൻസ്റ്റാളർ പരാജയപ്പെട്ടു. + + + + GeneralRequirements + + + has at least %1 GiB available drive space + %1 GiB ഡിസ്ക്സ്പെയ്സ് എങ്കിലും ലഭ്യമായിരിക്കണം. + + + + There is not enough drive space. At least %1 GiB is required. + ആവശ്യത്തിനു ഡിസ്ക്സ്പെയ്സ് ലഭ്യമല്ല. %1 GiB എങ്കിലും വേണം. + + + + has at least %1 GiB working memory + %1 GiB RAM എങ്കിലും ലഭ്യമായിരിക്കണം. + + + + The system does not have enough working memory. At least %1 GiB is required. + സിസ്റ്റത്തിൽ ആവശ്യത്തിനു RAM ലഭ്യമല്ല. %1 GiB എങ്കിലും വേണം. + + + + 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. + സിസ്റ്റം ഇന്റർനെറ്റുമായി ബന്ധിപ്പിച്ചിട്ടില്ല. + + + + The setup program is not running with administrator rights. + സെറ്റപ്പ് പ്രോഗ്രാം അഡ്മിനിസ്ട്രേറ്റർ അവകാശങ്ങൾ ഇല്ലാതെയാണ് പ്രവർത്തിക്കുന്നത്. + + + + The installer is not running with administrator rights. + ഇൻസ്റ്റാളർ അഡ്മിനിസ്ട്രേറ്റർ അവകാശങ്ങൾ ഇല്ലാതെയാണ് പ്രവർത്തിക്കുന്നത് + + + + 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>. + <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. + mkinitcpio ഉപയോഗിച്ച് initramfs നിർമ്മിക്കുന്നു. + + + + InitramfsJob + + + Creating initramfs. + initramfs നിർമ്മിക്കുന്നു. + + + + InteractiveTerminalPage + + + Konsole not installed + കോണ്‍സോള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്തിട്ടില്ല + + + + Please install KDE Konsole and try again! + കെഡിഇ കൺസോൾ ഇൻസ്റ്റാൾ ചെയ്ത് വീണ്ടും ശ്രമിക്കുക! + + + + 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%2 എന്നതായി ക്രമീകരിക്കുക. + + + + 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 + റദ്ദാക്കുക (&C) + + + + &OK + ശരി (&O) + + + + LicensePage + + + Form + ഫോം + + + + I accept the terms and conditions above. + മുകളിലുള്ള നിബന്ധനകളും വ്യവസ്ഥകളും ഞാൻ അംഗീകരിക്കുന്നു. + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + <h1>ലൈസൻസ് ഉടമ്പടി</h1>ഈ സജ്ജീകരണ നടപടിക്രമം ലൈസൻസിംഗ് നിബന്ധനകൾക്ക് വിധേയമായ കുത്തക സോഫ്റ്റ്വെയർ ഇൻസ്റ്റാൾ ചെയ്യും. + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + മുകളിലുള്ള അന്തിമ ഉപയോക്തൃ ലൈസൻസ് കരാറുകൾ (EULAs) അവലോകനം ചെയ്യുക.<br/>നിങ്ങൾ നിബന്ധനകളോട് യോജിക്കുന്നില്ലെങ്കിൽ, സജ്ജീകരണ നടപടിക്രമം തുടരാനാവില്ല. + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + <h1>ലൈസൻസ് ഉടമ്പടി</h1>അധിക സവിശേഷതകൾ നൽകുന്നതിനും ഉപയോക്തൃ അനുഭവം മെച്ചപ്പെടുത്തുന്നതിനും ഈ സജ്ജീകരണ നടപടിക്രമത്തിന് ലൈസൻസിംഗ് നിബന്ധനകൾക്ക് വിധേയമായ കുത്തക സോഫ്റ്റ്വെയർ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും. + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + മുകളിലുള്ള അന്തിമ ഉപയോക്തൃ ലൈസൻസ് കരാറുകൾ (EULAs) അവലോകനം ചെയ്യുക.<br/>നിങ്ങൾ നിബന്ധനകളോട് യോജിക്കുന്നില്ലെങ്കിൽ, പ്രൊപ്രൈറ്ററി സോഫ്റ്റ്വെയർ ഇൻസ്റ്റാൾ ചെയ്യില്ല, പകരം ഓപ്പൺ സോഴ്‌സ് ഇതരമാർഗങ്ങൾ ഉപയോഗിക്കും. + + + + LicenseViewStep + + + License + അനുമതിപത്രം + + + + LicenseWidget + + + <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">by %2</font> + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + <strong>%1 ബ്രൌസർ പ്ലഗിൻ</strong><br/><font color="Grey">by %2</font> + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + <strong>%1 കോഡെക് </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> + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + Shows the complete license text + മുഴുവന്‍ അനുമതി പത്രവും കാണിക്കുക + + + + Hide license text + അനുമതി പത്രം മറച്ച് വെക്കുക + + + + Show license agreement + അധികാരപത്രക്കാരാർ കാണിക്കുക + + + + Hide license agreement + അധികാരപത്രക്കാരാർ ഒളിപ്പിക്കുക + + + + Opens the license agreement in a browser window. + അധികാരപത്രക്കാരാർ ഒരു ബ്രൗസർ ജാലകത്തിൽ തുറക്കുക്കുക. + + + + <a href="%1">View license agreement</a> + <a href="%1">പകർപ്പവകാശപത്രം കാണുക</a> + + + + LocalePage + + + The system language will be set to %1. + സിസ്റ്റം ഭാഷ %1 ആയി സജ്ജമാക്കും. + + + + The numbers and dates locale will be set to %1. + സംഖ്യ & തീയതി രീതി %1 ആയി ക്രമീകരിക്കും. + + + + Region: + പ്രദേശം: + + + + Zone: + മേഖല: + + + + + &Change... + മാറ്റുക (&C)... + + + + Set timezone to %1/%2.<br/> + സമയപദ്ധതി %1/%2 ആയി ക്രമീകരിക്കുക.<br/> + + + + LocaleViewStep + + + Location + സ്ഥാനം + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + LUKS കീ ഫയൽ ക്രമീകരിക്കുന്നു. + + + + + No partitions are defined. + പാര്‍ട്ടീഷ്യനുകള്‍ നിര്‍വ്വചിച്ചിട്ടില്ല + + + + + + Encrypted rootfs setup error + എന്‍ക്രിപ്റ്റുചെയ്ത റൂട്ട് എഫ്എസ് സജ്ജീകരണത്തില്‍ പ്രശ്നമുണ്ടു് + + + + Root partition %1 is LUKS but no passphrase has been set. + റൂട്ട് പാർട്ടീഷൻ %1 LUKS ആണ് പക്ഷേ രഹസ്യവാക്കൊന്നും ക്രമീകരിച്ചിട്ടില്ല. + + + + Could not create LUKS key file for root partition %1. + റൂട്ട് പാർട്ടീഷൻ %1ന് വേണ്ടി LUKS കീ ഫയൽ നിർമ്മിക്കാനായില്ല. + + + + Could configure LUKS key file on partition %1. + പാർട്ടീഷൻ %1ൽ LUKS കീ ഫയൽ ക്രമീകരിക്കാം. + + + + MachineIdJob + + + Generate machine-id. + മെഷീൻ-ഐഡ് നിർമ്മിക്കുക + + + + Configuration Error + ക്രമീകരണത്തിൽ പിഴവ് + + + + No root mount point is set for MachineId. + മെഷീൻ ഐഡിയ്ക്ക് റൂട്ട് മൗണ്ട് പോയിന്റൊന്നും ക്രമീകരിച്ചിട്ടില്ല + + + + NetInstallPage + + + Name + പേര് + + + + Description + വിവരണം + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + നെറ്റ്‌വർക്ക് ഇൻസ്റ്റാളേഷൻ. (അപ്രാപ്‌തമാക്കി: പാക്കേജ് ലിസ്റ്റുകൾ നേടാനായില്ല, നിങ്ങളുടെ നെറ്റ്‌വർക്ക് കണക്ഷൻ പരിശോധിക്കുക) + + + + Network Installation. (Disabled: Received invalid groups data) + നെറ്റ്‌വർക്ക് ഇൻസ്റ്റാളേഷൻ. (അപ്രാപ്‌തമാക്കി: അസാധുവായ ഗ്രൂപ്പുകളുടെ ഡാറ്റ ലഭിച്ചു) + + + + Network Installation. (Disabled: Incorrect configuration) + നെറ്റ്‌വർക്ക് ഇൻസ്റ്റാളേഷൻ. (പ്രവർത്തനരഹിതമാക്കി: തെറ്റായ ക്രമീകരണം) + + + + NetInstallViewStep + + + Package selection + പാക്കേജു് തിരഞ്ഞെടുക്കല്‍ + + + + OEMPage + + + Ba&tch: + കൂട്ടം (&t): + + + + <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>കലാമരേസ് ലക്ഷ്യ സിസ്റ്റം ക്രമീകരിക്കുമ്പോൾ OEM ക്രമീകരണങ്ങൾ ഉപയോഗിക്കും.</p></body></html> + + + + OEMViewStep + + + OEM Configuration + ഓഇഎം ക്രമീകരണം + + + + Set the OEM Batch Identifier to <code>%1</code>. + OEM ബാച്ച് ഐഡന്റിഫയർ <code>%1</code> ആയി ക്രമീകരിക്കുക. + + + + 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 + രഹസ്യവാക്ക് ശൂന്യമാണ് + + + + 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 + പാക്കേജുകൾ + + + + Page_Keyboard + + + Form + ഫോം + + + + Keyboard Model: + കീബോഡ് മാതൃക: + + + + Type here to test your keyboard + നിങ്ങളുടെ കീബോർഡ് പരിശോധിക്കുന്നതിന് ഇവിടെ ടൈപ്പുചെയ്യുക + + + + Page_UserSetup + + + Form + ഫോം + + + + What is your name? + നിങ്ങളുടെ പേരെന്താണ് ? + + + + What name do you want to use to log in? + ലോഗിൻ ചെയ്യാൻ നിങ്ങൾ ഏത് നാമം ഉപയോഗിക്കാനാണു ആഗ്രഹിക്കുന്നത്? + + + + 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> + + + + What is the name of this computer? + ഈ കമ്പ്യൂട്ടറിന്റെ നാമം എന്താണ് ? + + + + Your Full Name + താങ്കളുടെ മുഴുവൻ പേരു് + + + + login + ലോഗിൻ + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + <small>നിങ്ങൾ ഒരു നെറ്റ്‌വർക്കിൽ കമ്പ്യൂട്ടർ മറ്റുള്ളവർക്ക് ദൃശ്യമാക്കുകയാണെങ്കിൽ ഈ പേര് ഉപയോഗിക്കും.</small> + + + + Computer Name + കമ്പ്യൂട്ടറിന്റെ പേര് + + + + + 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 + റൂട്ട് + + + + Home + ഹോം + + + + Boot + ബൂട്ട് + + + + EFI system + ഇഎഫ്ഐ സിസ്റ്റം + + + + 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: + സ്റ്റോറേജ് ഉപകരണം (&v): + + + + &Revert All Changes + എല്ലാ മാറ്റങ്ങളും പിൻവലിക്കുക (&R) + + + + New Partition &Table + പുതിയ പാർട്ടീഷൻ ടേബിൾ + + + + Cre&ate + നിർമ്മിക്കുക (&a) + + + + &Edit + തിരുത്തുക (&E) + + + + &Delete + ഇല്ലാതാക്കുക (&D) + + + + New Volume Group + പുതിയ വോള്യം ഗ്രൂപ്പ് + + + + Resize Volume Group + വോള്യം ഗ്രൂപ്പിന്റെ വലുപ്പം മാറ്റുക + + + + Deactivate Volume Group + വോള്യം ഗ്രൂപ്പ് നിഷ്ക്രിയമാക്കുക + + + + Remove Volume Group + വോള്യം ഗ്രൂപ്പ് നീക്കം ചെയ്യുക + + + + I&nstall boot loader on: + ബൂട്ട്ലോഡർ ഇവിടെ ഇൻസ്റ്റാൾ ചെയ്യുക (&n): + + + + 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>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>esp</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 ആരംഭിക്കാൻ ഒരു ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ആവശ്യമാണ്.<br/><br/>ഒരു ഇഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ക്രമീകരിക്കുന്നതിന്,തിരികെ പോയി <strong>ഇ എസ് പി</strong> ഫ്ലാഗും മൗണ്ട് പോയിന്റ് <strong>%2</strong> ഉം ആയിട്ടുള്ള ഒരു FAT32 ഫയൽസിസ്റ്റം തിരഞ്ഞെടുക്കുക അല്ലെങ്കിൽ സൃഷ്ടിക്കുക.<br/><br/>ഒരു ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ സജ്ജീകരിക്കാതെ നിങ്ങൾക്ക് തുടരാം, പക്ഷേ നിങ്ങളുടെ സിസ്റ്റം ആരംഭിക്കുന്നതിൽ പരാജയപ്പെട്ടേക്കാം. + + + + EFI system partition flag not set + ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ഫ്ലാഗ് ക്രമീകരിച്ചിട്ടില്ല + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 ആരംഭിക്കുന്നതിനായി ഒരു ഇഎഫ്ഐ.<br/><br/>മൗണ്ട് പോയിന്റ് <strong>%2 -ഓട്</strong>കൂടി ഒരു പാർട്ടീഷൻ ക്രമീകരിച്ചിട്ടുണ്ടായിരുന്നു, പക്ഷേ അതിന്റെ <strong>esp</strong> ഫ്ലാഗ് ക്രമീകരിച്ചിട്ടില്ല.<br/> ഫ്ലാഗ് ക്രമീകരിക്കാനായി തിരിച്ച് പോയി പാർട്ടീഷൻ തിരുത്തുക.<br/><br/>ഫ്ലാഗ് ക്രമീകരിക്കാതെ തന്നെ താങ്കൾക്ക് തുടരാവുന്നതാണ്, പക്ഷേ താങ്കളുടെ സിസ്റ്റം ആരംഭിക്കാതിരുന്നേക്കാം. + + + + 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 partitons 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. + ആജ്ഞ <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 + + + Default Keyboard Model + സ്വതേയുള്ള കീബോർഡ് തരം + + + + + Default + സ്വതേയുള്ളത് + + + + unknown + അജ്ഞാതം + + + + extended + വിസ്തൃതമായത് + + + + unformatted + ഫോർമാറ്റ് ചെയ്യപ്പെടാത്തത് + + + + swap + സ്വാപ്പ് + + + + Unpartitioned space or unknown partition table + പാർട്ടീഷൻ ചെയ്യപ്പെടാത്ത സ്ഥലം അല്ലെങ്കിൽ അപരിചിതമായ പാർട്ടീഷൻ ടേബിൾ + + + + (no mount point) + (മൗണ്ട് പോയിന്റ് ഇല്ല) + + + + Requirements checking for module <i>%1</i> is complete. + <i>%1</i>മൊഡ്യൂളിനായുള്ള ആവശ്യകതകൾ പരിശോധിക്കൽ പൂർത്തിയായിരിക്കുന്നു. + + + + %1 (%2) + language[name] (country[name]) + %1 (%2) + + + + No product + ഉൽപ്പന്നമൊന്നുമില്ല + + + + No description provided. + വിവരണമൊന്നും നൽകിയിട്ടില്ല. + + + + + + + + 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> നിർമ്മിക്കാനായില്ല. + + + + Could not read random file <pre>%1</pre>. + റാൻഡം ഫയൽ <pre>%1</pre> വായിക്കാനായില്ല. + + + + 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/>ഈ സിസ്റ്റത്തിൽ എവിടേയും ഒരു ഇഎഫ്ഐ സിസ്റ്റം പർട്ടീഷൻ കണ്ടെത്താനായില്ല. %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 ലെ ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ %2 ആരംഭിക്കുന്നതിന് ഉപയോഗിക്കും. + + + + EFI system partition: + ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ + + + + 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. + ഫയൽ സിസ്റ്റം വലുപ്പം മാറ്റുന്നതിനുള്ള ജോലിക്കായി കാലാമറസിന് 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>%1</strong> എന്ന <strong>%2MiB</strong> പാർട്ടീഷന്റെ വലുപ്പം <strong>%3Mib</strong>യിലേക്ക് മാറ്റുക. + + + + Resizing %2MiB partition %1 to %3MiB. + %1 എന്ന %2MiB പാർട്ടീഷന്റെ വലുപ്പം %3Mibയിലേക്ക് മാറ്റുന്നു. + + + + The installer failed to resize partition %1 on disk '%2'. + '%2' ഡിസ്കിലുള്ള %1 പാർട്ടീഷന്റെ വലുപ്പം മാറ്റുന്നതിൽ ഇൻസ്റ്റാളർ പരാജയപ്പെട്ടു + + + + 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' എന്ന് പേരുള്ള ഒരു വോള്യം ഗ്രൂപ്പിന്റെ വലുപ്പം മാറ്റുന്നതിൽ ഇൻസ്റ്റാളർ പരാജയപ്പെട്ടു. + + + + 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 താങ്കളുടെ കമ്പ്യൂട്ടറിൽ സജ്ജീകരിക്കുകയും ചെയ്യും. + + + + For best results, please ensure that this computer: + മികച്ച ഫലങ്ങൾക്കായി ഈ കമ്പ്യൂട്ടർ താഴെപ്പറയുന്നവ നിറവേറ്റുന്നു എന്നുറപ്പുവരുത്തുക: + + + + System requirements + സിസ്റ്റം ആവശ്യകതകൾ + + + + 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. + %1എംബി പാർട്ടീഷൻ %2ൽ ഫ്ലാഗുകൾ ക്രമീകരിക്കുക. + + + + Set flags on new partition. + പുതിയ പാർട്ടീഷനിൽ ഫ്ലാഗുകൾ ക്രമീകരിക്കുക. + + + + Clear flags on partition <strong>%1</strong>. + <strong>%1</strong> പാർട്ടീഷനിലെ ഫ്ലാഗുകൾ നീക്കം ചെയ്യുക. + + + + Clear flags on %1MiB <strong>%2</strong> partition. + %1എംബി <strong>%2</strong> പാർട്ടീഷനിലെ ഫ്ലാഗുകൾ ക്രമീകരിക്കുക. + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + %1MiB <strong>%2</strong> പാർട്ടീഷൻ <strong>%3</strong> ആയി ഫ്ലാഗ് ചെയ്യുക. + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + ഫ്ലാഗുകൾ %1MiB <strong>%2</strong> പാർട്ടീഷനിൽ നിർമ്മിക്കുന്നു. + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + <strong>%3</strong> ഫ്ലാഗുകൾ %1MiB <strong>%2</strong> പാർട്ടീഷനിൽ ക്രമീകരിക്കുന്നു. + + + + Clear flags on new partition. + പുതിയ പാർട്ടീഷനിലെ ഫ്ലാഗുകൾ മായ്ക്കുക. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + <strong>%1</strong> പാർട്ടീഷനെ <strong>%2</strong> ആയി ഫ്ലാഗ് ചെയ്യുക + + + + Flag new partition as <strong>%1</strong>. + പുതിയ പാർട്ടീഷൻ <strong>%1 </strong>ആയി ഫ്ലാഗുചെയ്യുക. + + + + Clearing flags on partition <strong>%1</strong>. + പാർട്ടീഷൻ <strong>%1</strong>ലെ ഫ്ലാഗുകൾ മായ്ക്കുന്നു. + + + + Clearing flags on new partition. + പുതിയ പാർട്ടീഷനിലെ ഫ്ലാഗുകൾ മായ്ക്കുന്നു. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + <strong>%2</strong> ഫ്ലാഗുകൾ <strong>%1</strong> പാർട്ടീഷനിൽ ക്രമീകരിക്കുക. + + + + 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. + റൂട്ട് അക്കൗണ്ട് നിഷ്ക്രിയമാക്കാനായില്ല. + + + + 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 അപേക്ഷയുടെ സമയപരിധി കഴിഞ്ഞു. + + + + TrackingMachineNeonJob + + + 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. + + + + TrackingPage + + + Form + ഫോം + + + + Placeholder + പ്ലേസ്‌ഹോൾഡർ + + + + <html><head/><body><p>By selecting this, you will 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> + + + + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. + എത്ര ഉപയോക്താക്കളുണ്ട് ,ഏത് ഹാർഡ്‌വെയറിലാണ് %1 ഇൻസ്റ്റാൾ ചെയ്യുന്നത് (ചുവടെയുള്ള അവസാന രണ്ടു ഓപ്ഷനുകൾക്കൊപ്പം) കൂടാതെ നിങ്ങൾ മുന്ഗണന നൽകുന്ന പ്രയോഗങ്ങളെക്കുറിച്ചുള്ള വിവരങ്ങൾ നേടുന്നതിന് %1 ഇൻസ്റ്റാൾ ട്രാക്കിംഗ് സഹായിക്കുന്നു.എന്താണ് അയയ്‌ക്കുന്നതെന്ന് കാണാൻ, ഓരോ ഭാഗത്തിനും അടുത്തുള്ള സഹായ ഐക്കണിൽ ക്ലിക്കുചെയ്യുക. + + + + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. + ഇത് തിരഞ്ഞെടുക്കുന്നതിലൂടെ നിങ്ങളുടെ ഇൻസ്റ്റാളേഷനെക്കുറിച്ചും ഹാർഡ്‌വെയറിനെക്കുറിച്ചും വിവരങ്ങൾ അയയ്ക്കും. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയായതിന് ശേഷം <b>ഒരു തവണ മാത്രമേ ഈ വിവരങ്ങൾ അയയ്ക്കൂ</b>. + + + + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. + ഇത് തിരഞ്ഞെടുക്കുന്നതിലൂടെ താങ്കൾ <b>ഇടയ്ക്കിടെ</b>താങ്കളുടെ ഇൻസ്റ്റളേഷനെയും ഹാർഡ്‌വെയറിനെയും പ്രയോഗങ്ങളേയും പറ്റിയുള്ള വിവരങ്ങൾ %1ന് അയച്ചുകൊടുക്കും. + + + + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and 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 username is too long. + നിങ്ങളുടെ ഉപയോക്തൃനാമം വളരെ വലുതാണ്. + + + + Your username must start with a lowercase letter or underscore. + താങ്കളുടെ ഉപയോക്തൃനാമം ഒരു ചെറിയ അക്ഷരമോ അണ്ടർസ്കോറോ ഉപയോഗിച്ച് വേണം തുടങ്ങാൻ. + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + ചെറിയ അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. + + + + Only letters, numbers, underscore and hyphen are allowed. + അക്ഷരങ്ങൾ, അക്കങ്ങൾ, അണ്ടർസ്കോർ, ഹൈഫൺ എന്നിവയേ അനുവദിച്ചിട്ടുള്ളൂ. + + + + Your hostname is too short. + നിങ്ങളുടെ ഹോസ്റ്റ്നാമം വളരെ ചെറുതാണ് + + + + Your hostname is too long. + നിങ്ങളുടെ ഹോസ്റ്റ്നാമം ദൈർഘ്യമേറിയതാണ് + + + + 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 + MiB + + + + Total Size: + മൊത്തം വലുപ്പം: + + + + Used Size: + ഉപയോഗിച്ച വലുപ്പം: + + + + Total Sectors: + മൊത്തം സെക്ടറുകൾ: + + + + Quantity of LVs: + LVകളുടെ അളവ്: + + + + WelcomePage + + + Form + ഫോം + + + + + Select application and system language + അപ്ലിക്കേഷനും സിസ്റ്റം ഭാഷയും തിരഞ്ഞെടുക്കുക + + + + Open donations website + സംഭാവനകളുടെ വെബ്സൈറ്റ് തുറക്കുക + + + + &Donate + &സംഭാവന ചെയ്യുക + + + + Open help and support website + സഹായ പിന്തുണ വെബ്സൈറ്റ് തുറക്കുക + + + + Open issues and bug-tracking website + പ്രശനങ്ങൾ,ബഗ്ഗ്‌ ട്രാക്കിംഗ് വെബ്സൈറ്റ് തുറക്കുക + + + + Open release notes website + പ്രകാശന കുറിപ്പുകളുടെ വെബ്സൈറ്റ് തുറക്കുക + + + + &Release notes + പ്രകാശന കുറിപ്പുകൾ (&R) + + + + &Known issues + ഇതിനകം അറിയാവുന്ന പ്രശ്നങ്ങൾ (&K) + + + + &Support + പിന്തുണ (&S) + + + + &About + വിവരം (&A) + + + + <h1>Welcome to the %1 installer.</h1> + <h1>%1 ഇൻസ്റ്റാളറിലേക്ക് സ്വാഗതം</h1> + + + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>%1 -നായുള്ള കലാമാരേസ് ഇൻസ്റ്റാളറിലേക്ക് സ്വാഗതം.</h1> + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + <h1>%1 -നായുള്ള കലാമാരേസ് സജ്ജീകരണപ്രക്രിയയിലേയ്ക്ക് സ്വാഗതം.</h1> + + + + <h1>Welcome to %1 setup.</h1> + <h1>%1 സജ്ജീകരണത്തിലേക്ക് സ്വാഗതം.</h1> + + + + 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-2019 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/>പകർപ്പവകാശം 2015-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>പകർപ്പവകാശം 2018-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/><a href="https://calamares.io/team/">കലാമരേസ് ടീമിനും</a><a href="https://www.transifex.com/calamares/calamares/">കലാമരേസ് പരിഭാഷാ ടീമിനും</a> നന്ദി.<br/><br/><a href="https://calamares.io/">കലാമരേസ്</a>വികസനം <br/><a href="http://www.blue-systems.com/">Blue Systems</a>- Liberating Software സ്പോൺസർ ചെയ്യുന്നതാണ്. + + + + %1 support + %1 പിന്തുണ + + + + WelcomeViewStep + + + Welcome + സ്വാഗതം + + + \ No newline at end of file diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index e21e2d337..e6477c073 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1 च्या मुख्य आरंभ अभिलेखामधे - + Boot Partition आरंभक विभाजन - + System Partition प्रणाली विभाजन - + Do not install a boot loader आरंभ सूचक अधिष्ठापित करु नका - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form स्वरुप - + GlobalStorage - + JobQueue - + Modules मोडयुल्स - + Type: प्रकार : - - + + none कोणतेही नाहीत - + Interface: अंतराफलक : - + Tools साधने - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information दोषमार्जन माहिती @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install अधिष्ठापना @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done पूर्ण झाली @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - %1 %2 आज्ञा चालवा + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 %1 %2 आज्ञा चालवला जातोय @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. %1 क्रिया चालवला जातोय - + 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back &मागे - - + + &Next &पुढे - - + + &Cancel &रद्द करा - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. प्रणालीत बदल न करता अधिष्टापना रद्द करा. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes &होय - + + &No &नाही - + &Close &बंद करा - + Continue with setup? - + 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> - + &Install now &आता अधिष्ठापित करा - + Go &back &मागे जा - + &Done &पूर्ण झाली - + The installation is complete. Close the installer. अधिष्ठापना संपूर्ण झाली. अधिष्ठापक बंद करा. - + Error त्रुटी - + Installation Failed अधिष्ठापना अयशस्वी झाली @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer %1 अधिष्ठापक - + Show debug information दोषमार्जन माहिती दर्शवा @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: सद्या : @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. स्वरुप - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements प्रणालीची आवशक्यता @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error अंतर्गत त्रूटी  - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1.  %1 या एरर कोडसहित usermod रद्द केले. @@ -2791,22 +3028,22 @@ Output: खराब पाथ : %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 लिहिण्याकरिता उघडू शकत नाही @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - तुमच्या वापरकर्तानावात अवैध अक्षरे आहेत. फक्त अक्षरे, अंक आणि डॅश स्वीकारले जातील. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. तुमचा संगणकनाव खूप लहान आहे - + Your hostname is too long. तुमचा संगणकनाव खूप लांब आहे - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - तुमच्या संगणकनावात अवैध अक्षरे आहेत. फक्त अक्षरे, अंक आणि डॅश स्वीकारले जातील. - - - - + Your passwords do not match! तुमचा परवलीशब्द जुळत नाही @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users वापरकर्ते + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: स्वरुप - - &Release notes - &प्रकाशन टिपा - - - - &Known issues - &ज्ञात त्रुटी - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &प्रकाशन टिपा + + + + &Known issues + &ज्ञात त्रुटी + + + &Support %1 पाठबळ @@ -3091,42 +3370,42 @@ Output: &विषयी - + <h1>Welcome to the %1 installer.</h1> <h1>‌%1 अधिष्ठापकमधे स्वागत आहे.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>‌%1 साठी असलेल्या अधिष्ठापकमध्ये स्वागत आहे.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support %1 पाठबळ @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome स्वागत diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index 9e0f3f6b8..0f937c093 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record til %1 - + Boot Partition Bootpartisjon - + System Partition Systempartisjon - + Do not install a boot loader Ikke installer en oppstartslaster - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage Global Lagring - + JobQueue OppgaveKø - + Modules Moduler - + Type: - - + + none - + Interface: Grensesnitt: - + Tools Verktøy - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Debug informasjon @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Installer @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Ferdig @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Kjør kommando %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Kjører kommando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Feil filsti til arbeidsmappe - + Working directory %1 for python job %2 is not readable. Arbeidsmappe %1 for python oppgave %2 er ikke lesbar. - + Bad main script file Ugyldig hovedskriptfil - + Main script file %1 for python job %2 is not readable. Hovedskriptfil %1 for python oppgave %2 er ikke lesbar. - + Boost.Python error in job "%1". Boost.Python feil i oppgave "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Tilbake - - + + &Next &Neste - - + + &Cancel &Avbryt - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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? Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + + &Yes &Ja - + + &No &Nei - + &Close &Lukk - + Continue with setup? Fortsette å sette opp? - + 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> - + &Install now &Installer nå - + Go &back Gå &tilbake - + &Done &Ferdig - + The installation is complete. Close the installer. Installasjonen er fullført. Lukk installeringsprogrammet. - + Error Feil - + Installation Failed Installasjon feilet @@ -371,40 +402,49 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CalamaresPython::Helper - + Unknown exception type Ukjent unntakstype - + unparseable Python error Ikke-kjørbar Python feil - + unparseable Python traceback Ikke-kjørbar Python tilbakesporing - + Unfetchable Python error. Ukjent Python feil. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Installasjonsprogram - + Show debug information Vis feilrettingsinformasjon @@ -435,7 +475,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.<strong>Manuell partisjonering</strong><br/>Du kan opprette eller endre størrelse på partisjoner selv. - + Boot loader location: @@ -447,8 +487,8 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - - + + Current: @@ -463,96 +503,96 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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. @@ -620,7 +660,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -957,7 +997,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + <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. <h1>Innnstallasjonen mislyktes</h1><br/>%1 har ikke blitt installert på datamaskinen din.<br/>Feilmeldingen var: %2. @@ -1188,66 +1228,74 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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 er koblet til en strømkilde - + The system is not plugged in to a power source. Systemet er ikke koblet til en strømkilde. - + is connected to the Internet er tilkoblet Internett - + The system is not connected to the Internet. Systemet er ikke tilkoblet Internett. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. InteractiveTerminalViewStep - + Script @@ -1324,22 +1388,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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 &Avbryt - + &OK &OK @@ -1352,27 +1416,27 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.Form - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LicenseViewStep - + License Lisens @@ -1388,64 +1452,64 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</strong><br/>fra %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 grafikkdriver</strong><br/><font color="Grey">fra %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 nettlesertillegg</strong><br/><font color="Grey">fra %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> <strong>%1</strong><br/><font color="Grey">fra %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... &Endre... - + Set timezone to %1/%2.<br/> @@ -1487,38 +1551,92 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocaleViewStep - - Loading location data... - - - - + Location Plassering + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generer maskin-ID. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + 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 + + + + + PackageChooserPage + + + Form + Form + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.Hva heter du? - + What name do you want to use to log in? Hvilket navn vil du bruke for å logge inn? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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. Ugyldige parametere for prosessens oppgavekall - + 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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> Denne datamaskinen oppfyller ikke minimumskravene for installering %1.<br/> Installeringen kan ikke fortsette. <a href="#details">Detaljer..</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. - + For best results, please ensure that this computer: - + System requirements Systemkrav @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Intern feil - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing Klarte ikke åpne /etc/timezone for skriving @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users Brukere + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Form - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3092,42 +3371,42 @@ Output: &Om - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Velkommen diff --git a/lang/calamares_ne_NP.ts b/lang/calamares_ne_NP.ts index 41f30c140..da257191f 100644 --- a/lang/calamares_ne_NP.ts +++ b/lang/calamares_ne_NP.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index fe283920c..a35297828 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record van %1 - + Boot Partition Bootpartitie - + System Partition Systeempartitie - + Do not install a boot loader Geen bootloader installeren - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Lege pagina @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulier - + GlobalStorage Globale Opslag - + JobQueue Wachtrij - + Modules Modules - + Type: Type: - - + + none geen - + Interface: Interface: - + Tools Hulpmiddelen - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Debug informatie @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Installeer @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Gereed @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Voer opdracht %1 %2 uit + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Uitvoeren van opdracht %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Bewerking %1 uitvoeren. - + Bad working directory path Ongeldig pad voor huidige map - + Working directory %1 for python job %2 is not readable. Werkmap %1 voor python taak %2 onleesbaar. - + Bad main script file Onjuist hoofdscriptbestand - + Main script file %1 for python job %2 is not readable. Hoofdscriptbestand %1 voor python taak %2 onleesbaar. - + Boost.Python error in job "%1". Boost.Python fout in taak "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Terug - - + + &Next &Volgende - - + + &Cancel &Afbreken - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Installatie afbreken zonder aanpassingen aan het systeem. - + Setup Failed - - Calamares Initialization Failed - Calamares Initialisatie mislukt + + Would you like to paste the install log to the web? + - - %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. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>The volgende modules konden niet worden geladen: - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. + 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 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> - + &Set up now - + &Set up - + &Install &Installeer - + Setup is complete. Close the setup program. - + Cancel setup? - + 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. - + 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? Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + + &Yes &ja - + + &No &Nee - + &Close &Sluiten - + Continue with setup? Doorgaan met installatie? - + 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> - + &Install now Nu &installeren - + Go &back Ga &terug - + &Done Voltooi&d - + The installation is complete. Close the installer. De installatie is voltooid. Sluit het installatie-programma. - + Error Fout - + Installation Failed Installatie Mislukt @@ -371,40 +402,49 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CalamaresPython::Helper - + Unknown exception type Onbekend uitzonderingstype - + unparseable Python error onuitvoerbare Python fout - + unparseable Python traceback onuitvoerbare Python traceback - + Unfetchable Python error. Onbekende Python fout. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Installatieprogramma - + Show debug information Toon debug informatie @@ -435,7 +475,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <strong>Handmatig partitioneren</strong><br/>Je maakt of wijzigt zelf de partities. - + Boot loader location: Bootloader locatie: @@ -447,8 +487,8 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - - + + Current: Huidig: @@ -463,96 +503,96 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <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. - + <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>. - + 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. - + 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 - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CommandList - - + + Could not run command. Kon de opdracht niet uitvoeren. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. De opdracht loopt in de gastomgeving en moet het root pad weten, maar rootMountPoint is niet gedefinieerd. - + The command needs to know the user's name, but no username is defined. De opdracht moet de naam van de gebruiker weten, maar de gebruikersnaam is niet gedefinieerd. @@ -620,7 +660,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ContextualProcessJob - + Contextual Processes Job Contextuele processen Taak @@ -800,17 +840,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. 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. @@ -957,7 +997,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. DummyCppJob - + Dummy C++ Job C++ schijnopdracht @@ -1124,12 +1164,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + <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. <h1>Installatie Mislukt</h1><br/>%1 werd niet op de computer geïnstalleerd. <br/>De foutboodschap was: %2 @@ -1188,66 +1228,74 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. 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 aangesloten is op netstroom - + The system is not plugged in to a power source. Dit systeem is niet aangesloten op netstroom. - + is connected to the Internet verbonden is met het Internet - + The system is not connected to the Internet. Dit systeem is niet verbonden met het Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Het installatieprogramma draait zonder administratorrechten. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Het schem is te klein on het installatieprogramma te vertonen. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. InteractiveTerminalViewStep - + Script Script @@ -1324,22 +1388,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LCLocaleDialog - + System locale setting Landinstellingen - + 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>. De landinstellingen bepalen de taal en het tekenset voor sommige opdrachtregelelementen.<br/>De huidige instelling is <strong>%1</strong>. - + &Cancel &Afbreken - + &OK &OK @@ -1352,27 +1416,27 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Formulier - + I accept the terms and conditions above. Ik aanvaard de bovenstaande algemene voorwaarden. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licentieovereenkomst</h1>Deze installatieprocedure zal propriëtaire software installeren die onderworpen is aan licentievoorwaarden. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Gelieve bovenstaande licentieovereenkomsten voor eindgebruikers (EULA's) na te kijken.<br/>Indien je de voorwaarden niet aanvaardt, kan de installatie niet doorgaan. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licentieovereenkomst</h1>Deze installatieprocedure kan mogelijk propriëtaire software, onderworpen aan licentievoorwaarden, installeren om bijkomende functies aan te bieden of de gebruikservaring te verbeteren. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Gelieve bovenstaande licentieovereenkomsten voor eindgebruikers (EULA's) na te kijken.<br/>Indien je de voorwaarden niet aanvaardt zal de propriëtaire software vervangen worden door openbron alternatieven. @@ -1380,7 +1444,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LicenseViewStep - + License Licentie @@ -1388,64 +1452,64 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 stuurprogramma</strong><br/>door %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 grafisch stuurprogramma</strong><br/><font color="Grey">door %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">door %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">door %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pakket</strong><br/><font color="Grey">door %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">door %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocalePage - + 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. - + Region: Regio: - + Zone: Zone: - - + + &Change... &Aanpassen - + Set timezone to %1/%2.<br/> Instellen tijdzone naar %1/%2.<br/> @@ -1487,38 +1551,92 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocaleViewStep - - Loading location data... - Laden van locatiegegevens... - - - + Location Locatie + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Genereer machine-id + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Naam - + Description Beschrijving - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Netwerkinstallatie. (Uitgeschakeld: kon de pakketlijsten niet binnenhalen, controleer de netwerkconnectie) - + Network Installation. (Disabled: Received invalid groups data) Netwerkinstallatie. (Uitgeschakeld: ongeldige gegevens over groepen) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. 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. @@ -1682,125 +1800,171 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. 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 + + + + + PackageChooserPage + + + Form + Formulier + + + + Product Name + + + + + TextLabel + TextLabel + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Wat is je naam? - + What name do you want to use to log in? Welke naam wil je gebruiken om in te loggen? - + Choose a password to keep your account safe. Kies een wachtwoord om uw account veilig te houden. - + + <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>Voer hetzelfde wachtwoord twee keer in, zodat het gecontroleerd kan worden op typefouten. Een goed wachtwoord bevat een combinatie van letters, cijfers en leestekens, is ten minste acht tekens lang en moet regelmatig worden gewijzigd.</ small> - + What is the name of this computer? Wat is de naam van deze computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Deze naam zal worden gebruikt als u de computer zichtbaar maakt voor anderen op een netwerk.</ small> - + + Computer Name + + + + + + 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. Automatisch aanmelden zonder wachtwoord te vragen. - + Use the same password for the administrator account. Gebruik hetzelfde wachtwoord voor het administratoraccount. - + Choose a password for the administrator account. Kies een wachtwoord voor het administrator account. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Voer hetzelfde wachtwoord twee keer in, zodat het gecontroleerd kan worden op typefouten.</ small> @@ -2038,107 +2241,107 @@ 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>esp</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>esp</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. - + EFI system partition flag not set EFI-systeem partitievlag niet ingesteld. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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>esp</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. - + 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. - + There are no partitons to install on. @@ -2204,14 +2407,14 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ProcessResult - + There was no output from the command. Er was geen uitvoer van de opdracht. - + Output: @@ -2220,52 +2423,52 @@ Uitvoer: - + External command crashed. Externe opdracht is vastgelopen. - + Command <i>%1</i> crashed. Opdracht <i>%1</i> is vastgelopen. - + External command failed to start. Externe opdracht kon niet worden gestart. - + Command <i>%1</i> failed to start. Opdracht <i>%1</i> kon niet worden gestart. - + Internal error when starting command. Interne fout bij het starten van de opdracht. - + Bad parameters for process job call. Onjuiste parameters voor procestaak - + External command failed to finish. Externe opdracht is niet correct beëindigd. - + Command <i>%1</i> failed to finish in %2 seconds. Opdracht <i>%1</i> is niet beëindigd in %2 seconden. - + External command finished with errors. Externe opdracht beëindigd met fouten. - + Command <i>%1</i> finished with exit code %2. Opdracht <i>%1</i> beëindigd met foutcode %2. @@ -2314,16 +2517,50 @@ Uitvoer: (geen aankoppelpunt) - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2543,37 +2780,37 @@ Uitvoer: 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> Deze computer voldoet niet aan de minimumvereisten om %1 te installeren.<br/>De installatie kan niet doorgaan. <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. 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. - + This program will ask you some questions and set up %2 on your computer. Dit programma stelt je enkele vragen en installeert %2 op jouw computer. - + For best results, please ensure that this computer: Voor de beste resultaten is het aangeraden dat deze computer: - + System requirements Systeemvereisten @@ -2594,29 +2831,29 @@ Uitvoer: SetHostNameJob - + Set hostname %1 Instellen hostnaam %1 - + Set hostname <strong>%1</strong>. Instellen hostnaam <strong>%1</strong> - + Setting hostname %1. Hostnaam %1 instellen. - - + + Internal Error Interne Fout - - + + Cannot write hostname to target system Kan de hostnaam niet naar doelsysteem schrijven @@ -2757,22 +2994,22 @@ Uitvoer: rootMountPoint is %1 - + Cannot disable root account. Kan root account niet uitschakelen. - + passwd terminated with error code %1. passwd is afgesloten met foutcode %1. - + Cannot set password for user %1. Kan het wachtwoord niet instellen voor gebruiker %1 - + usermod terminated with error code %1. usermod beëindigd met foutcode %1. @@ -2795,22 +3032,22 @@ Uitvoer: Onjuist pad: %1 - + Cannot set timezone. Kan tijdzone niet instellen. - + Link creation failed, target: %1; link name: %2 Link maken mislukt, doel: %1; koppeling naam: %2 - + Cannot set timezone, Kan de tijdzone niet instellen, - + Cannot open /etc/timezone for writing Kan niet schrijven naar /etc/timezone @@ -2856,22 +3093,22 @@ Uitvoer: TrackingInstallJob - + Installation feedback Installatiefeedback - + Sending installation feedback. Installatiefeedback opsturen. - + Internal error in install-tracking. Interne fout in de installatie-tracking. - + HTTP request timed out. HTTP request is verlopen. @@ -2879,28 +3116,28 @@ Uitvoer: TrackingMachineNeonJob - + 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. @@ -2933,17 +3170,17 @@ Uitvoer: Installatie-tracking helpt %1 om te zien hoeveel gebruikers ze hebben, op welke hardware %1 geïnstalleerd wordt en (met de laatste twee opties hieronder) op de hoogte te blijven van de geprefereerde toepassingen. Om na te gaan wat verzonden zal worden, klik dan op het help-pictogram naast elke optie. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Door dit aan te vinken zal er informatie verstuurd worden over jouw installatie en hardware. Deze informatie zal <b>slechts eenmaal verstuurd worden</b> na het afronden van de installatie. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Door dit aan te vinken zal <b>periodiek</b> informatie verstuurd worden naar %1 over jouw installatie, hardware en toepassingen. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Door dit aan te vinken zal <b>regelmatig</b> informatie verstuurd worden naar %1 over jouw installatie, hardware, toepassingen en gebruikspatronen. @@ -2951,7 +3188,7 @@ Uitvoer: TrackingViewStep - + Feedback Feedback @@ -2959,43 +3196,47 @@ Uitvoer: 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. De gebruikersnaam is te lang. - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - De gebruikersnaam bevat ongeldige tekens. Enkel kleine letters en nummers zijn toegelaten. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - De hostnaam bevat ongeldige tekens. Enkel letters, cijfers en liggende streepjes zijn toegelaten. - - - - + Your passwords do not match! Je wachtwoorden komen niet overeen! @@ -3003,11 +3244,24 @@ Uitvoer: UsersViewStep - + Users Gebruikers + + VariantModel + + + Key + + + + + Value + Waarde + + VolumeGroupBaseDialog @@ -3069,23 +3323,48 @@ Uitvoer: Formulier - - &Release notes - Aantekeningen bij deze ve&rsie - - - - &Known issues - Be&kende problemen - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + Aantekeningen bij deze ve&rsie + + + + &Known issues + Be&kende problemen + + + &Support Onder&steuning @@ -3095,42 +3374,42 @@ Uitvoer: &Over - + <h1>Welcome to the %1 installer.</h1> <h1>Welkom in het %1 installatieprogramma.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Welkom in het Calamares installatieprogramma voor %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer Over het %1 installatieprogramma - + <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-2019 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. - + %1 support %1 ondersteuning @@ -3138,7 +3417,7 @@ Uitvoer: WelcomeViewStep - + Welcome Welkom diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index 4cd49e159..b5eafd6aa 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record %1 - + Boot Partition Partycja rozruchowa - + System Partition Partycja systemowa - + Do not install a boot loader Nie instaluj programu rozruchowego - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Pusta strona @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formularz - + GlobalStorage Ogólne przechowywanie - + JobQueue Oczekujące zadania - + Modules Moduły - + Type: Rodzaj: - - + + none brak - + Interface: Interfejs: - + Tools Narzędzia - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Informacje debugowania @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Zainstaluj @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Ukończono @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Uruchom polecenie %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Wykonywanie polecenia %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Wykonuję operację %1. - + Bad working directory path Niepoprawna ścieżka katalogu roboczego - + Working directory %1 for python job %2 is not readable. Katalog roboczy %1 dla zadań pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 dla zadań pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Wystąpił błąd Boost.Python w zadaniu "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Wstecz - - + + &Next &Dalej - - + + &Cancel &Anuluj - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Anuluj instalację bez dokonywania zmian w systemie. - + Setup Failed - - Calamares Initialization Failed - Błąd inicjacji programu Calamares + + Would you like to paste the install log to the web? + - - %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ę. + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>Następujące moduły nie mogły zostać wczytane: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install Za&instaluj - + Setup is complete. Close the setup program. - + 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? Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + + &Yes &Tak - + + &No &Nie - + &Close Zam&knij - + Continue with setup? Kontynuować z programem instalacyjnym? - + 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> - + &Install now &Zainstaluj teraz - + Go &back &Cofnij się - + &Done &Ukończono - + The installation is complete. Close the installer. Instalacja ukończona pomyślnie. Możesz zamknąć instalator. - + Error Błąd - + Installation Failed Wystąpił błąd instalacji @@ -371,40 +402,49 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CalamaresPython::Helper - + Unknown exception type Nieznany rodzaj wyjątku - + unparseable Python error nieparowalny błąd Pythona - + unparseable Python traceback nieparowalny traceback Pythona - + Unfetchable Python error. Nieosiągalny błąd Pythona. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Instalator %1 - + Show debug information Pokaż informacje debugowania @@ -435,7 +475,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.<strong>Ręczne partycjonowanie</strong><br/>Możesz samodzielnie utworzyć lub zmienić rozmiar istniejących partycji. - + Boot loader location: Położenie programu rozruchowego: @@ -447,8 +487,8 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - - + + Current: Bieżący: @@ -463,96 +503,96 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.<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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CommandList - - + + Could not run command. Nie można wykonać polecenia. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Polecenie uruchomione jest w środowisku hosta i musi znać ścieżkę katalogu głównego, jednakże nie został określony punkt montowania katalogu głównego (root). - + The command needs to know the user's name, but no username is defined. Polecenie musi znać nazwę użytkownika, ale żadna nazwa nie została jeszcze zdefiniowana. @@ -620,7 +660,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ContextualProcessJob - + Contextual Processes Job Działania procesów kontekstualnych @@ -800,17 +840,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.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. @@ -957,7 +997,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. DummyCppJob - + Dummy C++ Job Działanie obiektu Dummy C++ @@ -1124,12 +1164,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + <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. <h1>Instalacja nie powiodła się</h1><br/>Nie udało się zainstalować %1 na Twoim komputerze.<br/>Komunikat o błędzie: %2. @@ -1188,66 +1228,74 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. 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 jest podłączony do źródła zasilania - + The system is not plugged in to a power source. System nie jest podłączony do źródła zasilania. - + is connected to the Internet jest podłączony do Internetu - + The system is not connected to the Internet. System nie jest podłączony do Internetu. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Instalator jest uruchomiony bez praw administratora. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Zbyt niska rozdzielczość ekranu, aby wyświetlić instalator. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Tworzenie initramfs z mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Tworzenie initramfs. + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. InteractiveTerminalViewStep - + Script Skrypt @@ -1324,22 +1388,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LCLocaleDialog - + System locale setting Systemowe ustawienia lokalne - + 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>. Systemowe ustawienia lokalne wpływają na ustawienia języka i znaków w niektórych elementach wiersza poleceń interfejsu użytkownika.<br/>Bieżące ustawienie to <strong>%1</strong>. - + &Cancel &Anuluj - + &OK &OK @@ -1352,27 +1416,27 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Formularz - + I accept the terms and conditions above. Akceptuję powyższe warunki korzystania. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Umowy licencyjne</h1>Ten etap instalacji zainstaluje własnościowe oprogramowanie, którego dotyczą zasady licencji. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zgadzasz się z tymi warunkami, nie możesz kontynuować. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Umowy licencyjne</h1>Ten etap instalacji pozwoli zainstalować własnościowe oprogramowanie, którego dotyczą zasady licencji w celu poprawienia doświadczenia i zapewnienia dodatkowych funkcji. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zaakceptujesz tych warunków, własnościowe oprogramowanie nie zostanie zainstalowane, zamiast tego zostaną użyte otwartoźródłowe odpowiedniki. @@ -1380,7 +1444,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LicenseViewStep - + License Licencja @@ -1388,64 +1452,64 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>sterownik %1</strong><br/>autorstwa %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>sterownik graficzny %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>wtyczka do przeglądarki %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>kodek %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>pakiet %1</strong><br/><font color="Grey">autorstwa %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">autorstwa %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocalePage - + 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. - + Region: Region: - + Zone: Strefa: - - + + &Change... &Zmień... - + Set timezone to %1/%2.<br/> Ustaw strefę czasową na %1/%2.<br/> @@ -1487,38 +1551,92 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocaleViewStep - - Loading location data... - Wczytywanie danych położenia - - - + Location Położenie + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Konfigurowanie pliku klucza LUKS. + + + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generuj machine-id. + + + + Configuration Error + Błąd konfiguracji + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nazwa - + Description Opis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalacja sieciowa. (Wyłączona: Nie można pobrać listy pakietów, sprawdź swoje połączenie z siecią) - + Network Installation. (Disabled: Received invalid groups data) Instalacja sieciowa. (Niedostępna: Otrzymano nieprawidłowe dane grupowe) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. OEMViewStep - + OEM Configuration Konfiguracja OEM - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.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 + + + + + PackageChooserPage + + + Form + Formularz + + + + Product Name + + + + + TextLabel + EtykietaTekstowa + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Jak się nazywasz? - + What name do you want to use to log in? Jakiego imienia chcesz używać do logowania się? - + Choose a password to keep your account safe. Wybierz hasło, aby chronić swoje konto. - + + <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>Wpisz swoje hasło dwa razy, aby mieć pewność, że uniknąłeś literówek. Dobre hasło powinno zawierać mieszaninę liter, cyfr, znaków specjalnych; mieć przynajmniej 8 znaków i być regularnie zmieniane.</small> - + What is the name of this computer? Jaka jest nazwa tego komputera? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ta nazwa będzie używana, jeśli udostępnisz swój komputer w sieci.</small> - + + Computer Name + + + + + + 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. Zaloguj automatycznie bez proszenia o hasło. - + Use the same password for the administrator account. Użyj tego samego hasła dla konta administratora. - + Choose a password for the administrator account. Wybierz hasło do konta administratora. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Wpisz to samo hasło dwa razy, aby mieć pewność, że uniknąłeś literówek.</small> @@ -2038,107 +2241,107 @@ 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>esp</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. Partycja systemu EFI jest zalecana aby rozpocząć %1.<br/><br/>Aby ją skonfigurować, wróć i wybierz lub utwórz partycję z systemem plików FAT32 i flagą <strong>esp</strong> o punkcie montowania <strong>%2</strong>.<br/><br/>Możesz kontynuować bez ustawiania partycji systemu EFI, ale twój system może nie uruchomić się. - + EFI system partition flag not set Flaga partycji systemowej EFI nie została ustawiona - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. Partycja systemu EFI jest konieczna, aby rozpocząć %1.<br/><br/>Partycja została skonfigurowana w punkcie montowania <strong>%2</strong>, ale nie została ustawiona flaga <strong>esp</strong>. Aby ustawić tę flagę, wróć i zmodyfikuj tę partycję.<br/><br/>Możesz kontynuować bez ustawienia tej flagi, ale Twój system może się nie uruchomić. - + 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 partitons to install on. Brak partycji, na których można zainstalować. @@ -2204,14 +2407,14 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ProcessResult - + There was no output from the command. W wyniku polecenia nie ma żadnego rezultatu. - + Output: @@ -2220,52 +2423,52 @@ Wyjście: - + External command crashed. Zewnętrzne polecenie zakończone niepowodzeniem. - + Command <i>%1</i> crashed. Wykonanie polecenia <i>%1</i> nie powiodło się. - + External command failed to start. Nie udało się uruchomić zewnętrznego polecenia. - + Command <i>%1</i> failed to start. Polecenie <i>%1</i> nie zostało uruchomione. - + Internal error when starting command. Wystąpił wewnętrzny błąd podczas uruchamiania polecenia. - + Bad parameters for process job call. Błędne parametry wywołania zadania. - + External command failed to finish. Nie udało się ukończyć zewnętrznego polecenia. - + Command <i>%1</i> failed to finish in %2 seconds. Nie udało się ukończyć polecenia <i>%1</i> w ciągu %2 sekund. - + External command finished with errors. Ukończono zewnętrzne polecenie z błędami. - + Command <i>%1</i> finished with exit code %2. Polecenie <i>%1</i> zostało ukończone z błędem o kodzie %2. @@ -2314,16 +2517,50 @@ Wyjście: (brak punktu montowania) - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2544,37 +2781,37 @@ i nie uruchomi się 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> Ten komputer nie spełnia minimalnych wymagań, niezbędnych do instalacji %1.<br/>Instalacja nie może być kontynuowana. <a href="#details">Szczegóły...</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. Ten komputer nie spełnia wszystkich, zalecanych do instalacji %1 wymagań.<br/>Instalacja może być kontynuowana, ale niektóre opcje mogą być niedostępne. - + This program will ask you some questions and set up %2 on your computer. Ten program zada Ci garść pytań i ustawi %2 na Twoim komputerze. - + For best results, please ensure that this computer: Dla osiągnięcia najlepszych rezultatów upewnij się, że ten komputer: - + System requirements Wymagania systemowe @@ -2595,29 +2832,29 @@ i nie uruchomi się SetHostNameJob - + Set hostname %1 Ustaw nazwę komputera %1 - + Set hostname <strong>%1</strong>. Ustaw nazwę komputera <strong>%1</strong>. - + Setting hostname %1. Ustawianie nazwy komputera %1. - - + + Internal Error Błąd wewnętrzny - - + + Cannot write hostname to target system Nie można zapisać nazwy komputera w docelowym systemie @@ -2758,22 +2995,22 @@ i nie uruchomi się Punkt montowania / to %1 - + Cannot disable root account. Nie można wyłączyć konta administratora. - + passwd terminated with error code %1. Zakończono passwd z kodem błędu %1. - + Cannot set password for user %1. Nie można ustawić hasła dla użytkownika %1. - + usermod terminated with error code %1. Polecenie usermod przerwane z kodem błędu %1. @@ -2796,22 +3033,22 @@ i nie uruchomi się Niepoprawna ścieżka: %1 - + Cannot set timezone. Nie można ustawić strefy czasowej. - + Link creation failed, target: %1; link name: %2 Błąd tworzenia dowiązania, cel: %1; nazwa dowiązania: %2 - + Cannot set timezone, Nie można ustawić strefy czasowej, - + Cannot open /etc/timezone for writing Nie można otworzyć /etc/timezone celem zapisu @@ -2857,22 +3094,22 @@ i nie uruchomi się TrackingInstallJob - + Installation feedback Informacja zwrotna o instalacji - + Sending installation feedback. Wysyłanie informacji zwrotnej o instalacji. - + Internal error in install-tracking. Błąd wewnętrzny śledzenia instalacji. - + HTTP request timed out. Wyczerpano limit czasu żądania HTTP. @@ -2880,28 +3117,28 @@ i nie uruchomi się TrackingMachineNeonJob - + Machine feedback Maszynowa informacja zwrotna - + Configuring machine feedback. Konfiguracja machine feedback - - + + 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. @@ -2934,17 +3171,17 @@ i nie uruchomi się Śledzenie instalacji pomoże %1 dowiedzieć się, ilu mają użytkowników, na jakim sprzęcie instalują %1 i (jeżeli wybierzesz dwie ostatnie opcje) uzyskać informacje o używanych aplikacjach. Jeżeli chcesz wiedzieć, jakie informacje będą wysyłane, naciśnij ikonę pomocy obok. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Jeżeli wybierzesz tę opcję, zostaną wysłane informacje dotyczące tej instalacji i używanego sprzętu. Zostaną wysłane <b>jednokrotnie</b> po zakończeniu instalacji. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Jeżeli wybierzesz tę opcję, <b>okazjonalnie</b> będą wysyłane informacje dotyczące tej instalacji, używanego sprzętu i aplikacji do %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Jeżeli wybierzesz tą opcję, <b>regularnie</b> będą wysyłane informacje dotyczące tej instalacji, używanego sprzętu i aplikacji do %1. @@ -2952,7 +3189,7 @@ i nie uruchomi się TrackingViewStep - + Feedback Informacje zwrotne @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Twoja nazwa użytkownika zawiera niepoprawne znaki. Dozwolone są tylko małe litery i cyfry. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Twoja nazwa komputera zawiera niepoprawne znaki. Dozwolone są tylko litery, cyfry i myślniki. - - - - + Your passwords do not match! Twoje hasła nie są zgodne! @@ -3004,11 +3245,24 @@ i nie uruchomi się UsersViewStep - + Users Użytkownicy + + VariantModel + + + Key + + + + + Value + Wartość + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ i nie uruchomi się Formularz - + + + Select application and system language + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + &Release notes Informacje o &wydaniu - + &Known issues &Znane problemy - - - Select language - Wybierz język - - - + &Support &Wsparcie @@ -3096,42 +3375,42 @@ i nie uruchomi się &Informacje - + <h1>Welcome to the %1 installer.</h1> <h1>Witamy w instalatorze %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Witamy w instalatorze Calamares dla systemu %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Witamy w ustawianiu %1.</h1> - + About %1 setup - + About %1 installer O instalatorze %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-2019 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. - + %1 support Wsparcie %1 @@ -3139,7 +3418,7 @@ i nie uruchomi się WelcomeViewStep - + Welcome Witamy diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 93e5a0ffb..ce5dc315f 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partição de Boot - + System Partition Partição de Sistema - + Do not install a boot loader Não instalar um gerenciador de inicialização - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Página em Branco @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulário - + GlobalStorage Armazenamento Global - + JobQueue Fila de Trabalhos - + Modules Módulos - + Type: Tipo: - - + + none nenhum - + Interface: Interface: - + Tools Ferramentas - + + Reload Stylesheet + Recarregar folha de estilo + + + + Widget Tree + Árvore de widgets + + + Debug information Informações de depuração @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Configurar - + Install Instalar @@ -123,7 +133,7 @@ A tarefa falhou (%1) - + Programmed job failure was explicitly requested. Falha na tarefa programada foi solicitada explicitamente. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Concluído @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Executar comando %1 %2 + Run command '%1' in target system. + Executar o comando '%1' no sistema de destino. - + + Run command '%1'. + Executar comando '%1'. + + + Running command %1 %2 Executando comando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Executando operação %1. - + Bad working directory path Caminho de diretório de trabalho ruim - + Working directory %1 for python job %2 is not readable. Diretório de trabalho %1 para a tarefa do python %2 não é legível. - + Bad main script file Arquivo de script principal ruim - + Main script file %1 for python job %2 is not readable. Arquivo de script principal %1 para a tarefa do python %2 não é legível. - + Boost.Python error in job "%1". Boost.Python erro na tarefa "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Esperando por %n módulo.Esperando por %n módulos. - + (%n second(s)) (%n segundo)(%n segundos) - + System-requirements checking is complete. Verificação de requerimentos do sistema completa. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Voltar - - + + &Next &Próximo - - + + &Cancel &Cancelar - - + 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. - + Setup Failed A Configuração Falhou - + + Would you like to paste the install log to the web? + Deseja colar o registro de instalação na web? + + + + 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 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> - + &Set up now &Configurar agora - + &Set up &Configurar - + &Install &Instalar - + Setup is complete. Close the setup program. A configuração está completa. Feche o programa de configuração. - + 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? O instalador será fechado e todas as alterações serão perdidas. - + + &Yes &Sim - + + &No &Não - + &Close Fe&char - + Continue with setup? Continuar com configuração? - + 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> - + &Install now &Instalar agora - + Go &back &Voltar - + &Done Concluí&do - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Error Erro - + Installation Failed Falha na Instalação @@ -372,40 +403,50 @@ O instalador será fechado e todas as alterações serão perdidas. CalamaresPython::Helper - + Unknown exception type Tipo de exceção desconhecida - + unparseable Python error erro inanalisável do Python - + unparseable Python traceback rastreamento inanalisável do Python - + Unfetchable Python error. Erro inbuscável do Python. + + CalamaresUtils + + + Install log posted to: +%1 + Registro de instalação colado em: +%1 + + CalamaresWindow - + %1 Setup Program Programa de configuração %1 - + %1 Installer Instalador %1 - + Show debug information Exibir informações de depuração @@ -436,7 +477,7 @@ O instalador será fechado e todas as alterações serão perdidas.<strong>Particionamento manual</strong><br/>Você pode criar ou redimensionar partições. - + Boot loader location: Local do gerenciador de inicialização: @@ -448,8 +489,8 @@ O instalador será fechado e todas as alterações serão perdidas. - - + + Current: Atual: @@ -464,96 +505,96 @@ O instalador será fechado e todas as alterações serão perdidas.<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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ O instalador será fechado e todas as alterações serão perdidas. CommandList - - + + Could not run command. Não foi possível executar o comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. O comando é executado no ambiente do hospedeiro e precisa saber o caminho root, mas nenhum rootMountPoint foi definido. - + The command needs to know the user's name, but no username is defined. O comando precisa saber do nome do usuário, mas nenhum nome de usuário foi definido. @@ -621,7 +662,7 @@ O instalador será fechado e todas as alterações serão perdidas. ContextualProcessJob - + Contextual Processes Job Tarefa de Processos Contextuais @@ -801,17 +842,17 @@ O instalador será fechado e todas as alterações serão perdidas.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. @@ -958,7 +999,7 @@ O instalador será fechado e todas as alterações serão perdidas. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1125,12 +1166,12 @@ O instalador será fechado e todas as alterações serão perdidas.<html><head/><body><p>Quando essa caixa for marcada, seu sistema irá reiniciar imediatamente quando você clicar em <span style="font-style:italic;">Concluído</span> ou fechar o instalador.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>A configuração falhou</h1><br/>%1 não foi configurado no seu computador.<br/>A mensagem de erro foi: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>A instalação falhou</h1><br/>%1 não foi instalado em seu computador.<br/>A mensagem de erro foi: %2. @@ -1189,66 +1230,74 @@ O instalador será fechado e todas as alterações serão perdidas. GeneralRequirements - + has at least %1 GiB available drive space tenha pelo menos %1 GiB disponível de espaço no disco - + There is not enough drive space. At least %1 GiB is required. Não há espaço suficiente no disco. Pelo menos %1 GiB é requerido. - + has at least %1 GiB working memory tenha pelo menos %1 GiB de memória de trabalho - + The system does not have enough working memory. At least %1 GiB is required. O sistema não tem memória de trabalho o suficiente. Pelo menos %1 GiB é requerido. - + is plugged in to a power source está conectado a uma fonte de energia - + The system is not plugged in to a power source. O sistema não está conectado a uma fonte de energia. - + is connected to the Internet está conectado à Internet - + The system is not connected to the Internet. O sistema não está conectado à Internet. - + The setup program is not running with administrator rights. O programa de configuração não está sendo executado com direitos de administrador. - + The installer is not running with administrator rights. O instalador não está sendo executado com permissões de administrador. - + The screen is too small to display the setup program. A tela é muito pequena para exibir o programa de configuração. - + The screen is too small to display the installer. A tela é muito pequena para exibir o instalador. + + HostInfoJob + + + Collecting information about your machine. + Coletando informações sobre a sua máquina. + + IDJob @@ -1275,6 +1324,22 @@ O instalador será fechado e todas as alterações serão perdidas.Não foi possível escrever no arquivo <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Criando initramfs com mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Criando initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ O instalador será fechado e todas as alterações serão perdidas. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1390,22 @@ O instalador será fechado e todas as alterações serão perdidas. LCLocaleDialog - + System locale setting Definição de localidade do sistema - + 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>. A configuração de localidade do sistema afeta a linguagem e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário.<br/>A configuração atual é <strong>%1</strong>. - + &Cancel &Cancelar - + &OK &OK @@ -1353,27 +1418,27 @@ O instalador será fechado e todas as alterações serão perdidas.Formulário - + I accept the terms and conditions above. Aceito os termos e condições acima. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Termos de licença</h1>Este procedimento de configuração irá instalar software proprietário, que está sujeito aos termos de licenciamento. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor, revise os acordos de licença de usuário final (EULAs) acima.<br/>Se você não concordar com os termos, o procedimento de configuração não pode continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Termos de licença</h1>Este procedimento de instalação pode instalar o software proprietário, que está sujeito a termos de licenciamento, a fim de fornecer recursos adicionais e melhorar a experiência do usuário. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor, revise os acordos de licença de usuário final (EULAs) acima.<br/>Se você não concordar com os termos, o software proprietário não será instalado e as alternativas de código aberto serão utilizadas em seu lugar. @@ -1381,7 +1446,7 @@ O instalador será fechado e todas as alterações serão perdidas. LicenseViewStep - + License Licença @@ -1389,64 +1454,64 @@ O instalador será fechado e todas as alterações serão perdidas. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>driver %1</strong><br/>por %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 gráfico %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>plugin do navegador %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>codec %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>pacote %1</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + Shows the complete license text Mostra o texto de licença completo - + Hide license text Esconder texto de licença - + Show license agreement Mostrar termos de licença - + Hide license agreement Esconder termos de licença - + Opens the license agreement in a browser window. Abre os termos de licença na janela do navegador. - + <a href="%1">View license agreement</a> <a href="%1">Ver termos de licença</a> @@ -1454,33 +1519,33 @@ O instalador será fechado e todas as alterações serão perdidas. LocalePage - + 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. O local dos números e datas será definido como %1. - + Region: Região: - + Zone: Área: - - + + &Change... &Mudar... - + Set timezone to %1/%2.<br/> Definir o fuso horário para %1/%2.<br/> @@ -1488,38 +1553,92 @@ O instalador será fechado e todas as alterações serão perdidas. LocaleViewStep - - Loading location data... - Carregando dados de localização... - - - + Location Localização + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Configurando o arquivo de chave do LUKS. + + + + + No partitions are defined. + Nenhuma partição está definida. + + + + + + Encrypted rootfs setup error + Erro de configuração de rootfs encriptado + + + + Root partition %1 is LUKS but no passphrase has been set. + A partição raiz %1 é LUKS, mas nenhuma senha foi definida. + + + + Could not create LUKS key file for root partition %1. + Não foi possível criar o arquivo de chave LUKS para a partição raiz %1. + + + + Could configure LUKS key file on partition %1. + Pode configurar o arquivo de chave LUKS na partição% 1. + + + + MachineIdJob + + + Generate machine-id. + Gerar machine-id. + + + + Configuration Error + Erro de Configuração. + + + + No root mount point is set for MachineId. + Nenhum ponto de montagem raiz está definido para MachineId. + + NetInstallPage - + Name Nome - + Description Descrição - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalação pela Rede. (Desabilitada: Não foi possível adquirir lista de pacotes, verifique sua conexão com a internet) - + Network Installation. (Disabled: Received invalid groups data) Instalação pela Rede. (Desabilitado: Recebidos dados de grupos inválidos) + + + Network Installation. (Disabled: Incorrect configuration) + Instalação via Rede. (Desabilitada: Configuração incorreta) + NetInstallViewStep @@ -1550,12 +1669,12 @@ O instalador será fechado e todas as alterações serão perdidas. OEMViewStep - + OEM Configuration Configuração OEM - + Set the OEM Batch Identifier to <code>%1</code>. Definir o identificador de Lote OEM em <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ O instalador será fechado e todas as alterações serão perdidas.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 + + + + PackageChooserPage + + + Form + Formulário + + + + Product Name + Nome do Produto + + + + TextLabel + EtiquetaDeTexto + + + + Long Product Description + Descrição Estendida do Produto + + + + Package Selection + Seleção de Pacote + + + + Please pick a product from the list. The selected product will be installed. + Por favor, escolha um produto da lista. O produto selecionado será instalado. + + + + PackageChooserViewStep + + + Packages + Pacotes + Page_Keyboard @@ -1834,47 +1999,86 @@ O instalador será fechado e todas as alterações serão perdidas.Qual é o seu nome? - + What name do you want to use to log in? Qual nome você quer usar para entrar? - + Choose a password to keep your account safe. Escolha uma senha para mantar a sua conta segura. - + + <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>Digite a mesma senha duas vezes, de modo que possam ser verificados erros de digitação. Uma boa senha contém uma mistura de letras, números e sinais de pontuação, deve ter pelo menos oito caracteres e deve ser alterada em intervalos regulares.</small> - + What is the name of this computer? Qual é o nome deste computador? - + + Your Full Name + Seu nome completo + + + + login + login + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Esse nome será usado caso você deixe o computador visível a outros na rede.</small> - + + Computer Name + Nome do computador + + + + + Password + Senha + + + + + Repeat Password + Repita a senha + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Quando esta caixa estiver marcada, será feita a verificação do tamanho da senha e você não poderá usar uma senha fraca. + + + + Require strong passwords. + Exigir senhas fortes. + + + Log in automatically without asking for the password. Entrar automaticamente sem perguntar pela senha. - + Use the same password for the administrator account. Usar a mesma senha para a conta de administrador. - + Choose a password for the administrator account. Escolha uma senha para a conta administradora. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Digite a mesma senha duas vezes para que possa ser verificada contra erros de digitação.</small> @@ -2039,107 +2243,107 @@ 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>esp</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. Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte, selecione ou crie um sistema de arquivos FAT32 com o marcador <strong>esp</strong> ativado e ponto de montagem <strong>%2</strong>.<br/><br/>Você pode continuar sem definir uma partição de sistema EFI, mas seu sistema pode não iniciar. - + EFI system partition flag not set Marcador da partição do sistema EFI não definida - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Uma partição foi configurada com o ponto de montagem <strong>%2</strong>, mas seu marcador <strong>esp</strong> não foi definido.<br/>Para definir o marcador, volte e edite a partição.<br/><br/>Você pode continuar sem definir um marcador, mas seu sistema pode não iniciar. - + 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 partitons to install on. Não existem partições para a instalação. @@ -2205,14 +2409,14 @@ O instalador será fechado e todas as alterações serão perdidas. ProcessResult - + There was no output from the command. Não houve saída do comando. - + Output: @@ -2221,52 +2425,52 @@ Saída: - + External command crashed. O comando externo falhou. - + Command <i>%1</i> crashed. O comando <i>%1</i> falhou. - + External command failed to start. O comando externo falhou ao iniciar. - + Command <i>%1</i> failed to start. O comando <i>%1</i> falhou ao iniciar. - + Internal error when starting command. Erro interno ao iniciar o comando. - + Bad parameters for process job call. Parâmetros ruins para a chamada da tarefa do processo. - + External command failed to finish. O comando externo falhou ao finalizar. - + Command <i>%1</i> failed to finish in %2 seconds. O comando <i>%1</i> falhou ao finalizar em %2 segundos. - + External command finished with errors. O comando externo foi concluído com erros. - + Command <i>%1</i> finished with exit code %2. O comando <i>%1</i> foi concluído com o código %2. @@ -2315,16 +2519,50 @@ Saída: (sem ponto de montagem) - + Requirements checking for module <i>%1</i> is complete. A verificação de requerimentos para o módulo <i>%1</i> está completa. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Sem produto + + + + No description provided. + Nenhuma descrição disponível. + + + + + + + + File not found + Arquivo não encontrado + + + + Path <pre>%1</pre> must be an absolute path. + O caminho <pre>%1</pre> deve ser completo. + + + + Could not create new random file <pre>%1</pre>. + Não foi possível criar um novo arquivo aleatório <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Não foi possível ler o arquivo aleatório <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Saída: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Este computador não satisfaz os requerimentos mínimos para configurar %1.<br/>A configuração não pode continuar. <a href="#details">Detalhes...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este computador não satisfaz os requisitos mínimos para instalar %1.<br/>A instalação não pode continuar. <a href="#details">Detalhes...</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. Este computador não satisfaz alguns dos requerimentos recomendados para configurar %1.<br/>A configuração pode continuar, mas algumas funções podem ser desativadas. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Este computador não satisfaz alguns dos requisitos recomendados para instalar %1.<br/>A instalação pode continuar, mas alguns recursos podem ser desativados. - + This program will ask you some questions and set up %2 on your computer. Este programa irá fazer-lhe algumas perguntas e configurar %2 no computador. - + For best results, please ensure that this computer: Para melhores resultados, por favor, certifique-se de que este computador: - + System requirements Requisitos do sistema @@ -2595,29 +2833,29 @@ Saída: SetHostNameJob - + Set hostname %1 Definir nome da máquina %1 - + Set hostname <strong>%1</strong>. Definir nome da máquina <strong>%1</strong>. - + Setting hostname %1. Definindo nome da máquina %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Não é possível gravar o nome da máquina para o sistema alvo @@ -2758,22 +2996,22 @@ Saída: rootMountPoint é %1 - + Cannot disable root account. Não é possível desativar a conta root. - + passwd terminated with error code %1. passwd terminado com código de erro %1. - + Cannot set password for user %1. Não foi possível definir senha para o usuário %1. - + usermod terminated with error code %1. usermod terminou com código de erro %1. @@ -2796,22 +3034,22 @@ Saída: Caminho ruim: %1 - + Cannot set timezone. Não foi possível definir o fuso horário. - + Link creation failed, target: %1; link name: %2 Não foi possível criar o link, alvo: %1; nome: %2 - + Cannot set timezone, Não foi possível definir o fuso horário. - + Cannot open /etc/timezone for writing Não foi possível abrir /etc/timezone para gravação @@ -2857,22 +3095,22 @@ Saída: TrackingInstallJob - + Installation feedback Feedback da instalação - + Sending installation feedback. Enviando feedback da instalação. - + Internal error in install-tracking. Erro interno no install-tracking. - + HTTP request timed out. A solicitação HTTP expirou. @@ -2880,28 +3118,28 @@ Saída: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Saída: O rastreamento de instalação ajuda %1 a ver quantos usuários eles têm, em qual hardware eles instalam %1 e (com as duas últimas opções abaixo), adquirir informações sobre os aplicativos preferidos. Para ver o que será enviado, por favor, clique no ícone de ajuda perto de cada área. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Ao selecionar isto, você enviará informações sobre sua instalação e hardware. Esta informação <b>será enviada apenas uma vez</b> depois que a instalação terminar. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Ao selecionar isto, você enviará <b>periodicamente</b> informações sobre sua instalação, hardware e aplicativos para %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Ao selecionar isto, você enviará <b>regularmente</b> informações sobre sua instalação, hardware, aplicativos e padrões de uso para %1. @@ -2952,7 +3190,7 @@ Saída: TrackingViewStep - + Feedback Feedback @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - O nome de usuário contém caracteres inválidos. Apenas letras minúsculas e números são permitidos. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + É permitido apenas letras, 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - O nome da máquina contém caracteres inválidos. Apenas letras, números e traços são permitidos. - - - - + Your passwords do not match! As senhas não estão iguais! @@ -3004,11 +3246,24 @@ Saída: UsersViewStep - + Users Usuários + + VariantModel + + + Key + Chave + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Saída: Formulário - + + + Select application and system language + Selecione a aplicação e a linguagem do sistema + + + + Open donations website + Abrir website de doações + + + + &Donate + &Doar + + + + Open help and support website + Abrir website de ajuda e suporte + + + + Open issues and bug-tracking website + Abrir website de problemas e rastreamento de bugs + + + + Open release notes website + Abrir o site com as notas de lançamento + + + &Release notes &Notas de lançamento - + &Known issues &Problemas conhecidos - - - Select language - Selecionar idioma - - - + &Support &Suporte @@ -3096,42 +3376,42 @@ Saída: &Sobre - + <h1>Welcome to the %1 installer.</h1> <h1>Bem-vindo ao instalador %1 .</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Bem-vindo ao instalador Calamares para %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Bem-vindo ao programa de configuração Calamares para %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Bem-vindo à configuração de %1</h1> - + About %1 setup Sobre a configuração de %1 - + About %1 installer Sobre o instalador %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-2019 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/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Obrigado ao <a href="https://calamares.io/team/">time Calamares</a> e ao <a href="https://www.transifex.com/calamares/calamares/">time de tradutores do Calamares</a>.<br/><br/>O desenvolvimento do <a href="https://calamares.io/">Calamares</a> é patrocinado pela <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte @@ -3139,7 +3419,7 @@ Saída: WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index 2897a8d31..91bafc2c4 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record de %1 - + Boot Partition Partição de arranque - + System Partition Partição do Sistema - + Do not install a boot loader Não instalar um carregador de arranque - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Página em Branco @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formulário - + GlobalStorage ArmazenamentoGlobal - + JobQueue FilaDeTrabalho - + Modules Módulos - + Type: Tipo: - - + + none nenhum - + Interface: Interface: - + Tools Ferramentas - + + Reload Stylesheet + Recarregar Folha de estilo + + + + Widget Tree + Árvore de Widgets + + + Debug information Informação de depuração @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Configuração - + Install Instalar @@ -123,7 +133,7 @@ Tarefa falhou (%1) - + Programmed job failure was explicitly requested. Falha de tarefa programada foi explicitamente solicitada. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Concluído @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Correr comando %1 %2 + Run command '%1' in target system. + Execute o comando '%1' no sistema alvo. - + + Run command '%1'. + Execute o comando '%1'. + + + Running command %1 %2 A executar comando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Operação %1 em execução. - + Bad working directory path Caminho do directório de trabalho errado - + Working directory %1 for python job %2 is not readable. Directório de trabalho %1 para a tarefa python %2 não é legível. - + Bad main script file Ficheiro de script principal errado - + Main script file %1 for python job %2 is not readable. Ficheiro de script principal %1 para a tarefa python %2 não é legível. - + Boost.Python error in job "%1". Erro Boost.Python na tarefa "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). A aguardar por %n módulo(s).A aguardar por %n módulo(s). - + (%n second(s)) (%n segundo(s))(%n segundo(s)) - + System-requirements checking is complete. A verificação de requisitos de sistema está completa. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Voltar - - + + &Next &Próximo - - + + &Cancel &Cancelar - - + 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. - + Setup Failed Falha de Instalação - + + Would you like to paste the install log to the web? + Deseja colar o registo de instalação na Web? + + + + 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 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> - + &Set up now &Instalar agora - + &Set up &Instalar - + &Install &Instalar - + Setup is complete. Close the setup program. Instalação completa. Feche o programa de instalação. - + 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? O instalador será encerrado e todas as alterações serão perdidas. - + + &Yes &Sim - + + &No &Não - + &Close &Fechar - + Continue with setup? Continuar com a configuração? - + 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> - + &Install now &Instalar agora - + Go &back Voltar &atrás - + &Done &Feito - + The installation is complete. Close the installer. A instalação está completa. Feche o instalador. - + Error Erro - + Installation Failed Falha na Instalação @@ -372,40 +403,50 @@ O instalador será encerrado e todas as alterações serão perdidas. CalamaresPython::Helper - + Unknown exception type Tipo de exceção desconhecido - + unparseable Python error erro inanalisável do Python - + unparseable Python traceback rasto inanalisável do Python - + Unfetchable Python error. Erro inatingível do Python. + + CalamaresUtils + + + Install log posted to: +%1 + Instalar registo publicado em: +%1 + + CalamaresWindow - + %1 Setup Program %1 Programa de Instalação - + %1 Installer %1 Instalador - + Show debug information Mostrar informação de depuração @@ -436,7 +477,7 @@ O instalador será encerrado e todas as alterações serão perdidas.<strong>Particionamento manual</strong><br/>Pode criar ou redimensionar partições manualmente. - + Boot loader location: Localização do carregador de arranque: @@ -448,8 +489,8 @@ O instalador será encerrado e todas as alterações serão perdidas. - - + + Current: Atual: @@ -464,96 +505,96 @@ O instalador será encerrado e todas as alterações serão perdidas.<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. - + <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. - + 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. - + 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 - - - - + + + + <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 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. @@ -602,18 +643,18 @@ O instalador será encerrado e todas as alterações serão perdidas. CommandList - - + + Could not run command. Não foi possível correr o comando. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. O comando corre no ambiente do host e precisa de conhecer o caminho root, mas nenhum Ponto de Montagem root está definido. - + The command needs to know the user's name, but no username is defined. O comando precisa de saber o nome do utilizador, mas não está definido nenhum nome de utilizador. @@ -621,7 +662,7 @@ O instalador será encerrado e todas as alterações serão perdidas. ContextualProcessJob - + Contextual Processes Job Tarefa de Processos Contextuais @@ -801,17 +842,17 @@ O instalador será encerrado e todas as alterações serão perdidas.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. @@ -958,7 +999,7 @@ O instalador será encerrado e todas as alterações serão perdidas. DummyCppJob - + Dummy C++ Job Tarefa Dummy C++ @@ -1125,12 +1166,12 @@ O instalador será encerrado e todas as alterações serão perdidas. - + <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. <h1>Instalação Falhada</h1><br/>%1 não foi instalado no seu computador.<br/>A mensagem de erro foi: %2. @@ -1189,66 +1230,74 @@ O instalador será encerrado e todas as alterações serão perdidas. 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 está ligado a uma fonte de energia - + The system is not plugged in to a power source. O sistema não está ligado a uma fonte de energia. - + is connected to the Internet está ligado à internet - + The system is not connected to the Internet. O sistema não está ligado à internet. - + The setup program is not running with administrator rights. O programa de instalação está agora a correr com direitos de administrador. - + The installer is not running with administrator rights. O instalador não está a correr com permissões de administrador. - + The screen is too small to display the setup program. O ecrã é demasiado pequeno para mostrar o programa de instalação. - + The screen is too small to display the installer. O ecrã tem um tamanho demasiado pequeno para mostrar o instalador. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1257,24 +1306,40 @@ O instalador será encerrado e todas as alterações serão perdidas. OEM Batch Identifier - + Identificador OEM em Lote Could not create directories <code>%1</code>. - + Não foi possível criar diretorias <code>%1</code>. Could not open file <code>%1</code>. - + Não foi possível abrir ficheiro <code>%1</code>. Could not write to file <code>%1</code>. + Não foi possível escrever para o ficheiro <code>%1</code>. + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + InitramfsJob + + + Creating initramfs. + A criar o initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ O instalador será encerrado e todas as alterações serão perdidas. InteractiveTerminalViewStep - + Script Script @@ -1325,22 +1390,22 @@ O instalador será encerrado e todas as alterações serão perdidas. LCLocaleDialog - + System locale setting Definição de localização do Sistema - + 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>. A definição local do sistema afeta o idioma e conjunto de carateres para alguns elementos do interface da linha de comandos.<br/>A definição atual é <strong>%1</strong>. - + &Cancel &Cancelar - + &OK &OK @@ -1353,27 +1418,27 @@ O instalador será encerrado e todas as alterações serão perdidas.Formulário - + I accept the terms and conditions above. Aceito os termos e condições acima descritos. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acordo de Licença</h1>Este procedimento instalará programas proprietários que estão sujeitos a termos de licenciamento. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Por favor reveja o Acordo de Utilização do Utilizador Final (EULA) acima.<br/>Se não concordar com os termos, o procedimento de instalação não pode continuar. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acordo de Licença</h1>Este procedimento pode instalar programas proprietários que estão sujeitos a termos de licenciamento com vista a proporcionar funcionalidades adicionais e melhorar a experiência do utilizador. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Por favor reveja o Acordo de Utilização do Utilizador Final (EULA) acima.<br/>Se não concordar com os termos, programas proprietários não serão instalados, e em vez disso serão usadas soluções alternativas de código aberto. @@ -1381,7 +1446,7 @@ O instalador será encerrado e todas as alterações serão perdidas. LicenseViewStep - + License Licença @@ -1389,64 +1454,64 @@ O instalador será encerrado e todas as alterações serão perdidas. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 controlador</strong><br/>por %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 controlador gráfico</strong><br/><font color="Grey">por %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 extra para navegador</strong><br/><font color="Grey">por %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">por %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pacote</strong><br/><font color="Grey">por %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">por %2</font> - + Shows the complete license text Mostra ao texto completo da licença - + Hide license text Esconder texto da licença - + Show license agreement Mostrar acordo da licença - + Hide license agreement Esconder acordo da licença - + Opens the license agreement in a browser window. Abre o acordo da licença numa janela do navegador. - + <a href="%1">View license agreement</a> <a href="%1">Ver acordo da licença</a> @@ -1454,33 +1519,33 @@ O instalador será encerrado e todas as alterações serão perdidas. LocalePage - + 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. - + Region: Região: - + Zone: Zona: - - + + &Change... &Alterar... - + Set timezone to %1/%2.<br/> Definir fuso horário para %1/%2.<br/> @@ -1488,38 +1553,92 @@ O instalador será encerrado e todas as alterações serão perdidas. LocaleViewStep - - Loading location data... - A carregar dados de localização... - - - + Location Localização + + LuksBootKeyFileJob + + + Configuring LUKS key file. + A configurar o ficheiro chave do LUKS. + + + + + No partitions are defined. + Nenhuma partição é definida. + + + + + + Encrypted rootfs setup error + Erro de configuração do rootfs criptografado + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Gerar id-máquina + + + + Configuration Error + Erro de configuração + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nome - + Description Descrição - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalaçao de Rede. (Desativada: Incapaz de buscar listas de pacotes, verifique a sua ligação de rede) - + Network Installation. (Disabled: Received invalid groups data) Instalação de Rede. (Desativada: Recebeu dados de grupos inválidos) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1534,7 +1653,7 @@ O instalador será encerrado e todas as alterações serão perdidas. Ba&tch: - + Ba&tch: @@ -1550,130 +1669,130 @@ O instalador será encerrado e todas as alterações serão perdidas. OEMViewStep - + OEM Configuration - + Configuração OEM - + Set the OEM Batch Identifier to <code>%1</code>. - + Definir o Identificar OEM em Lote para <code>%1</code>. 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 @@ -1683,125 +1802,171 @@ O instalador será encerrado e todas as alterações serão perdidas.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 + + + + + PackageChooserPage + + + Form + Forma + + + + Product Name + Nome do produto + + + + TextLabel + EtiquetaTexto + + + + Long Product Description + Descrição longa do produto + + + + Package Selection + Seleção de pacote + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + Pacotes + Page_Keyboard @@ -1834,47 +1999,86 @@ O instalador será encerrado e todas as alterações serão perdidas.Qual é o seu nome? - + What name do you want to use to log in? Que nome deseja usar para iniciar a sessão? - + Choose a password to keep your account safe. Escolha uma palavra-passe para manter a sua conta segura. - + + <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>Digite a mesma palavra-passe duas vezes, de modo a que possam ser verificados erros de digitação. Uma boa palavra-passe contém uma mistura de letras, números e sinais de pontuação, deve ter pelo menos oito caracteres de comprimento, e deve ser alterada em intervalos regulares.</small> - + What is the name of this computer? Qual o nome deste computador? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Este nome será usado se tornar este computador visível para outros numa rede.</small> - + + Computer Name + + + + + + 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. Iniciar sessão automaticamente sem pedir a palavra-passe. - + Use the same password for the administrator account. Usar a mesma palavra-passe para a conta de administrador. - + Choose a password for the administrator account. Escolha uma palavra-passe para a conta de administrador. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Introduza a mesma palavra-passe duas vezes, para que se possam verificar erros de digitação.</small> @@ -2039,107 +2243,107 @@ 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>esp</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ária uma partição de sistema EFI para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte atrás e selecione ou crie um sistema de ficheiros FAT32 com a flag <strong>esp</strong> ativada e ponto de montagem <strong>%2</strong>.<br/><br/>Pode continuar sem configurar uma partição de sistema EFI mas o seu sistema pode falhar o arranque. - + EFI system partition flag not set flag não definida da partição de sistema 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>esp</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ária uma partição de sistema EFI para iniciar %1.<br/><br/>A partitição foi configurada com o ponto de montagem <strong>%2</strong> mas a sua flag <strong>esp</strong> não está definida.<br/>Para definir a flag, volte atrás e edite a partição.<br/><br/>Pode continuar sem definir a flag mas o seu sistema pode falhar o arranque. - + 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 partitons to install on. Não há partições para onde instalar. @@ -2205,14 +2409,14 @@ O instalador será encerrado e todas as alterações serão perdidas. ProcessResult - + There was no output from the command. O comando não produziu saída de dados. - + Output: @@ -2221,52 +2425,52 @@ Saída de Dados: - + External command crashed. O comando externo "crashou". - + Command <i>%1</i> crashed. Comando <i>%1</i> "crashou". - + External command failed to start. Comando externo falhou ao iniciar. - + Command <i>%1</i> failed to start. Comando <i>%1</i> falhou a inicialização. - + Internal error when starting command. Erro interno ao iniciar comando. - + Bad parameters for process job call. Maus parâmetros para chamada de processamento de tarefa. - + External command failed to finish. Comando externo falhou a finalização. - + Command <i>%1</i> failed to finish in %2 seconds. Comando <i>%1</i> falhou ao finalizar em %2 segundos. - + External command finished with errors. Comando externo finalizou com erros. - + Command <i>%1</i> finished with exit code %2. Comando <i>%1</i> finalizou com código de saída %2. @@ -2315,16 +2519,50 @@ Saída de Dados: (sem ponto de montagem) - + Requirements checking for module <i>%1</i> is complete. A verificação de requisitos para módulo <i>%1</i> está completa. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Nenhum produto + + + + No description provided. + Nenhuma descrição fornecida. + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2501,12 +2739,12 @@ Saída de Dados: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Redimensionar <strong>%2MiB</strong> partição <strong>%1</strong> para <strong>%3MiB</strong>. Resizing %2MiB partition %1 to %3MiB. - + A redimensionar %2MiB partição %1 para %3MiB. @@ -2544,37 +2782,37 @@ Saída de Dados: 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> Este computador não satisfaz os requisitos mínimos para instalar %1.<br/>A instalação não pode continuar. <a href="#details">Detalhes...</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. Este computador não satisfaz alguns dos requisitos recomendados para instalar %1.<br/>A instalação pode continuar, mas algumas funcionalidades poderão ser desativadas. - + This program will ask you some questions and set up %2 on your computer. Este programa vai fazer-lhe algumas perguntas e configurar o %2 no seu computador. - + For best results, please ensure that this computer: Para melhores resultados, por favor certifique-se que este computador: - + System requirements Requisitos de sistema @@ -2595,29 +2833,29 @@ Saída de Dados: SetHostNameJob - + Set hostname %1 Configurar nome da máquina %1 - + Set hostname <strong>%1</strong>. Definir nome da máquina <strong>%1</strong>. - + Setting hostname %1. A definir nome da máquina %1. - - + + Internal Error Erro interno - - + + Cannot write hostname to target system Não é possível escrever o nome da máquina para o sistema selecionado @@ -2662,7 +2900,7 @@ Saída de Dados: Set flags on %1MiB %2 partition. - + Definir flags na partição %1MiB %2. @@ -2758,22 +2996,22 @@ Saída de Dados: rootMountPoint é %1 - + Cannot disable root account. Não é possível desativar a conta root. - + passwd terminated with error code %1. passwd terminado com código de erro %1. - + Cannot set password for user %1. Não é possível definir a palavra-passe para o utilizador %1. - + usermod terminated with error code %1. usermod terminou com código de erro %1. @@ -2796,22 +3034,22 @@ Saída de Dados: Mau caminho: %1 - + Cannot set timezone. Não é possível definir o fuso horário. - + Link creation failed, target: %1; link name: %2 Falha na criação de ligação, alvo: %1; nome da ligação: %2 - + Cannot set timezone, Não é possível definir o fuso horário, - + Cannot open /etc/timezone for writing Não é possível abrir /etc/timezone para escrita @@ -2838,7 +3076,7 @@ Saída de Dados: This is an overview of what will happen once you start the setup procedure. - + Isto é uma visão geral do que acontecerá assim que iniciar o procedimento de configuração. @@ -2857,22 +3095,22 @@ Saída de Dados: TrackingInstallJob - + Installation feedback Relatório da Instalação - + Sending installation feedback. A enviar relatório da instalação. - + Internal error in install-tracking. Erro interno no rastreio da instalação. - + HTTP request timed out. Expirou o tempo para o pedido de HTTP. @@ -2880,28 +3118,28 @@ Saída de Dados: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Saída de Dados: O rastreio de instalação ajuda %1 a ver quanto utilizadores eles têm, qual o hardware que instalam %1 e (com a duas últimas opções abaixo), obter informação contínua sobre aplicações preferidas. Para ver o que será enviado, por favor clique no ícone de ajuda a seguir a cada área. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Ao selecionar isto estará a enviar informação acerca da sua instalação e hardware. Esta informação será <b>enviada apenas uma vez</b> depois da instalação terminar. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Ao selecionar isto irá <b>periodicamente</b> enviar informação sobre a instalação, hardware e aplicações, para %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Ao selecionar isto irá periodicamente enviar informação sobre a instalação, hardware, aplicações e padrões de uso, para %1. @@ -2952,7 +3190,7 @@ Saída de Dados: TrackingViewStep - + Feedback Relatório @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - O seu nome de utilizador contem caractéres inválidos. Apenas letras minúsculas e números são permitidos. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - O nome da sua máquina contém caratéres inválidos. Apenas letras, números e traços são permitidos. - - - - + Your passwords do not match! As suas palavras-passe não coincidem! @@ -3004,11 +3246,24 @@ Saída de Dados: UsersViewStep - + Users Utilizadores + + VariantModel + + + Key + Chave + + + + Value + Valor + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Saída de Dados: Formulário - + + + Select application and system language + Selecione o idioma da aplicação e do sistema + + + + Open donations website + Abrir site de doações + + + + &Donate + &Doar + + + + Open help and support website + Abra o site de ajuda e suporte + + + + Open issues and bug-tracking website + Site de questões abertas e monitorização de erros + + + + Open release notes website + Abrir o site com as notas de lançamento + + + &Release notes &Notas de lançamento - + &Known issues &Problemas conhecidos - - - Select language - Selecione o idioma - - - + &Support &Suporte @@ -3096,42 +3376,42 @@ Saída de Dados: &Acerca - + <h1>Welcome to the %1 installer.</h1> <h1>Bem vindo ao instalador do %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Bem vindo ao instalador Calamares para %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Bem vindo ao programa de instalação Calamares para %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Bem vindo à instalação de %1.</h1> - + About %1 setup Sobre a instalação de %1 - + About %1 installer Acerca %1 instalador - + <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-2019 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/>para %3</strong><br/><br/>Direitos de Cópia 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Direitos de Cópia 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos à <a href="https://calamares.io/team/">Equipa Calamares</a> e à<a href="https://www.transifex.com/calamares/calamares/">Equipa de tradutores do Calamares</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> desenvolvido e patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte @@ -3139,7 +3419,7 @@ Saída de Dados: WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 9819aa880..261088b5c 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master boot record (MBR) al %1 - + Boot Partition Partiție de boot - + System Partition Partiție de sistem - + Do not install a boot loader Nu instala un bootloader - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formular - + GlobalStorage Stocare globală - + JobQueue Coadă de sarcini - + Modules Module - + Type: Tipul: - - + + none nimic - + Interface: Interfața: - + Tools Unelte - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Informație pentru depanare @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instalează @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Gata @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Rulează comanda %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Se rulează comanda %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Se rulează operațiunea %1. - + Bad working directory path Calea dosarului de lucru este proastă - + Working directory %1 for python job %2 is not readable. Dosarul de lucru %1 pentru sarcina python %2 nu este citibil. - + Bad main script file Fișierul script principal este prost - + Main script file %1 for python job %2 is not readable. Fișierul script peincipal %1 pentru sarcina Python %2 nu este citibil. - + Boost.Python error in job "%1". Eroare Boost.Python în sarcina „%1”. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Înapoi - - + + &Next &Următorul - - + + &Cancel &Anulează - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. Anulează instalarea fără schimbarea sistemului. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install Instalează - + Setup is complete. Close the setup program. - + 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? Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + + &Yes &Da - + + &No &Nu - + &Close În&chide - + Continue with setup? Continuați configurarea? - + 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> - + &Install now &Instalează acum - + Go &back Î&napoi - + &Done &Gata - + The installation is complete. Close the installer. Instalarea este completă. Închide instalatorul. - + Error Eroare - + Installation Failed Instalare eșuată @@ -371,40 +402,49 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CalamaresPython::Helper - + Unknown exception type Tip de excepție necunoscut - + unparseable Python error Eroare Python neanalizabilă - + unparseable Python traceback Traceback Python neanalizabil - + Unfetchable Python error. Eroare Python nepreluabilă + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Program de instalare %1 - + Show debug information Arată informația de depanare @@ -435,7 +475,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.<strong>Partiționare manuală</strong><br/>Puteți crea sau redimensiona partițiile. - + Boot loader location: Locație boot loader: @@ -447,8 +487,8 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - - + + Current: Actual: @@ -463,96 +503,96 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.<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. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CommandList - - + + Could not run command. Nu s-a putut executa comanda. - + 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. @@ -620,7 +660,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ContextualProcessJob - + Contextual Processes Job Job de tip Contextual Process @@ -800,17 +840,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.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. @@ -957,7 +997,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1124,12 +1164,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + <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. <h1>Instalarea a eșuat</h1><br/>%1 nu a mai fost instalat pe acest calculator.<br/>Mesajul de eroare era: %2. @@ -1188,66 +1228,74 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. 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 este alimentat cu curent - + The system is not plugged in to a power source. Sistemul nu este alimentat cu curent. - + is connected to the Internet este conectat la Internet - + The system is not connected to the Internet. Sistemul nu este conectat la Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Programul de instalare nu rulează cu privilegii de administrator. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Ecranu este prea mic pentru a afișa instalatorul. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. InteractiveTerminalViewStep - + Script Script @@ -1324,22 +1388,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LCLocaleDialog - + System locale setting Setările de localizare - + 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>. Setările de localizare ale sistemului afectează limba și setul de caractere folosit pentru unele elemente de interfață la linia de comandă.<br/>Setările actuale sunt <strong>%1</strong>. - + &Cancel &Anulează - + &OK %Ok @@ -1352,27 +1416,27 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Formular - + I accept the terms and conditions above. Sunt de acord cu termenii și condițiile de mai sus. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Acord de licențiere</h1>Această procedură va instala software proprietar supus unor termeni de licențiere. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Vă rugăm să citiți Licența de utilizare (EULA) de mai sus.<br>Dacă nu sunteți de acord cu termenii, procedura de instalare nu poate continua. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Acord de licențiere</h1>Această procedură de instalare poate instala software proprietar supus unor termeni de licențiere, pentru a putea oferi funcții suplimentare și pentru a îmbunătăți experiența utilizatorilor. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Vă rugăm să citiți Licența de utilizare (EULA) de mai sus.<br/>Dacă nu sunteți de acord cu termenii, softwareul proprietar nu va fi instalat și se vor folosi alternative open-source în loc. @@ -1380,7 +1444,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LicenseViewStep - + License Licență @@ -1388,64 +1452,64 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 driver</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>%1 driver grafic</strong><br/><font color="Grey">de %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 plugin de browser</strong><br/><font color="Grey">de %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">de %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 pachet</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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocalePage - + 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. - + Region: Regiune: - + Zone: Zonă: - - + + &Change... S&chimbă - + Set timezone to %1/%2.<br/> Setează fusul orar la %1/%2.<br/> @@ -1487,38 +1551,92 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocaleViewStep - - Loading location data... - Se încarcă datele locației... - - - + Location Locație + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generează machine-id. + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Nume - + Description Despre - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalarea rețelei. (Dezactivat: Nu se pot obține listele de pachete, verificați conexiunea la rețea) - + Network Installation. (Disabled: Received invalid groups data) Instalare prin rețea. (Dezactivată: S-au recepționat grupuri de date invalide) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,102 +1680,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 @@ -1665,17 +1783,17 @@ 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 @@ -1685,125 +1803,171 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.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 + + + + + PackageChooserPage + + + Form + Formular + + + + Product Name + + + + + TextLabel + EtichetăText + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1836,47 +2000,86 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Cum vă numiți? - + What name do you want to use to log in? Ce nume doriți să utilizați pentru logare? - + Choose a password to keep your account safe. Alegeți o parolă pentru a menține contul în siguranță. - + + <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>Introduceți parola de 2 ori pentru a se verifica greșelile de tipar. O parolă bună va conține o combinație de litere, numere și punctuație, ar trebui să aibă cel puțin 8 caractere și ar trebui schimbată la intervale regulate.</small> - + What is the name of this computer? Care este numele calculatorului? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Numele va fi folosit dacă faceți acest calculator vizibil pentru alții pe o rețea.</small> - + + Computer Name + + + + + + 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. Autentifică-mă automat, fără a-mi cere parola. - + Use the same password for the administrator account. Folosește aceeași parolă pentru contul de administrator. - + Choose a password for the administrator account. Alege o parolă pentru contul de administrator. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Introduceți parola de 2 ori pentru a se verifica greșelile de tipar.</small> @@ -2041,107 +2244,107 @@ 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>esp</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. Este necesară o partiție de sistem EFI pentru a porni %1.<br/><br/>Pentru a configura o partiție de sistem EFI, reveniți și selectați sau creați o partiție FAT32 cu flag-ul <strong>esp</strong> activat și montată la <strong>%2</strong>.<br/><br/>Puteți continua și fără configurarea unei partiții de sistem EFI, dar este posibil ca sistemul să nu pornească. - + EFI system partition flag not set Flag-ul de partiție de sistem pentru EFI nu a fost setat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. O partiție de sistem EFI este necesară pentru a porni %1.<br/><br/>A fost configurată o partiție cu punct de montare la <strong>%2</strong> dar flag-ul <strong>esp</strong> al acesteia nu a fost setat.<br/>Pentru a seta flag-ul, reveniți și editați partiția.<br/><br/>Puteți continua și fără setarea flag-ului, dar este posibil ca sistemul să nu pornească. - + 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 partitons to install on. @@ -2207,14 +2410,14 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ProcessResult - + There was no output from the command. Nu a existat nici o iesire din comanda - + Output: @@ -2223,52 +2426,52 @@ Output - + External command crashed. Comanda externă a eșuat. - + Command <i>%1</i> crashed. Comanda <i>%1</i> a eșuat. - + External command failed to start. Comanda externă nu a putut fi pornită. - + Command <i>%1</i> failed to start. Comanda <i>%1</i> nu a putut fi pornită. - + Internal error when starting command. Eroare internă la pornirea comenzii. - + Bad parameters for process job call. Parametri proști pentru apelul sarcinii de proces. - + External command failed to finish. Finalizarea comenzii externe a eșuat. - + Command <i>%1</i> failed to finish in %2 seconds. Comanda <i>%1</i> nu a putut fi finalizată în %2 secunde. - + External command finished with errors. Comanda externă finalizată cu erori. - + Command <i>%1</i> finished with exit code %2. Comanda <i>%1</i> finalizată cu codul de ieșire %2. @@ -2317,16 +2520,50 @@ Output - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2546,37 +2783,37 @@ Output 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> Acest calculator nu satisface cerințele minimale pentru instalarea %1.<br/>Instalarea nu poate continua. <a href="#details">Detalii...</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. Acest calculator nu satisface unele din cerințele recomandate pentru instalarea %1.<br/>Instalarea poate continua, dar unele funcții ar putea fi dezactivate. - + This program will ask you some questions and set up %2 on your computer. Acest program vă va pune mai multe întrebări și va seta %2 pe calculatorul dumneavoastră. - + For best results, please ensure that this computer: Pentru rezultate optime, asigurați-vă că acest calculator: - + System requirements Cerințe de sistem @@ -2597,29 +2834,29 @@ Output SetHostNameJob - + Set hostname %1 Setează hostname %1 - + Set hostname <strong>%1</strong>. Setați un hostname <strong>%1</strong>. - + Setting hostname %1. Se setează hostname %1. - - + + Internal Error Eroare internă - - + + Cannot write hostname to target system Nu se poate scrie hostname pe sistemul țintă @@ -2760,22 +2997,22 @@ Output rootMountPoint este %1 - + Cannot disable root account. Nu pot dezactiva contul root - + passwd terminated with error code %1. eroare la setarea parolei cod %1 - + Cannot set password for user %1. Nu se poate seta parola pentru utilizatorul %1. - + usermod terminated with error code %1. usermod s-a terminat cu codul de eroare %1. @@ -2798,22 +3035,22 @@ Output Cale proastă: %1 - + Cannot set timezone. Nu se poate seta fusul orar. - + Link creation failed, target: %1; link name: %2 Crearea legăturii eșuată, ținta: %1; numele legăturii: 2 - + Cannot set timezone, Nu se poate seta fusul orar, - + Cannot open /etc/timezone for writing Nu se poate deschide /etc/timezone pentru scriere @@ -2859,22 +3096,22 @@ Output TrackingInstallJob - + Installation feedback Feedback pentru instalare - + Sending installation feedback. Trimite feedback pentru instalare - + Internal error in install-tracking. Eroare internă în gestionarea instalării. - + HTTP request timed out. Requestul HTTP a atins time out. @@ -2882,28 +3119,28 @@ Output TrackingMachineNeonJob - + 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. @@ -2936,17 +3173,17 @@ Output Urmărirea instalărilor ajută %1 să măsoare numărul de utilizatori, hardware-ul pe care se instalează %1 și (cu ajutorul celor două opțiuni de mai jos) poate obține informații în mod continuu despre aplicațiile preferate. Pentru a vedea ce informații se trimit, clic pe pictograma de ajutor din dreptul fiecărei zone. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Alegând să trimiți aceste informații despre instalare și hardware vei trimite aceste informații <b>o singură dată</b> după finalizarea instalării. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Prin această alegere vei trimite informații despre instalare, hardware și aplicații în mod <b>periodic</b>. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Prin această alegere vei trimite informații în mod <b>regulat</b> despre instalare, hardware, aplicații și tipare de utilizare la %1. @@ -2954,7 +3191,7 @@ Output TrackingViewStep - + Feedback Feedback @@ -2962,43 +3199,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Numele de utilizator conține caractere invalide. Folosiți doar litere mici și numere. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Hostname conține caractere invalide. Folosiți doar litere, numere și cratime. - - - - + Your passwords do not match! Parolele nu se potrivesc! @@ -3006,11 +3247,24 @@ Output UsersViewStep - + Users Utilizatori + + VariantModel + + + Key + + + + + Value + Valoare + + VolumeGroupBaseDialog @@ -3072,23 +3326,48 @@ Output Formular - - &Release notes - &Note asupra ediției - - - - &Known issues - &Probleme cunoscute - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Note asupra ediției + + + + &Known issues + &Probleme cunoscute + + + &Support &Suport @@ -3098,42 +3377,42 @@ Output &Despre - + <h1>Welcome to the %1 installer.</h1> <h1>Bine ați venit la programul de instalare pentru %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Bun venit în programul de instalare Calamares pentru %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + About %1 installer Despre programul de instalare %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-2019 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. - + %1 support %1 suport @@ -3141,7 +3420,7 @@ Output WelcomeViewStep - + Welcome Bine ați venit diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index eab111987..ef565bf0b 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Главная загрузочная запись %1 - + Boot Partition Загрузочный раздел - + System Partition Системный раздел - + Do not install a boot loader Не устанавливать загрузчик - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Пустая страница @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Форма - + GlobalStorage Глобальное хранилище - + JobQueue Очередь заданий - + Modules Модули - + Type: Тип: - - + + none нет - + Interface: Интерфейс: - + Tools Инструменты - + + Reload Stylesheet + Перезагрузить таблицу стилей + + + + Widget Tree + + + + Debug information Отладочная информация @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Установить @@ -120,10 +130,10 @@ Job failed (%1) - + Задание не успешно (%1) - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Готово @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Выполнить команду %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Выполняется команда %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,176 +208,193 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. - + Проверка соответствия системным требованиям завершена. Calamares::ViewManager - + + &Back &Назад - - + + &Next &Далее - - + + &Cancel О&тмена - - + Cancel setup without changing the system. - + Отменить установку без изменения системы. - - + Cancel installation without changing the system. Отменить установку без изменения системы. - + Setup Failed + Сбой установки + + + + Would you like to paste the install log to the web? - - Calamares Initialization Failed - Ошибка инициализации Calamares + + Install Log Paste URL + - - %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 installation? + + The upload was unsuccessful. No web-paste was done. - 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> - + 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 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> + + + &Set up now - + &Set up - + &Install &Установить - + Setup is complete. Close the setup program. - + Установка завершена. Закройте программу установки. - + 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. Действительно прервать процесс установки? Программа установки сразу прекратит работу, все изменения будут потеряны. - + + &Yes &Да - + + &No &Нет - + &Close &Закрыть - + Continue with setup? Продолжить установку? - + 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> - + &Install now Приступить к &установке - + Go &back &Назад - + &Done &Готово - + The installation is complete. Close the installer. Установка завершена. Закройте установщик. - + Error Ошибка - + Installation Failed Установка завершилась неудачей @@ -370,40 +402,49 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Неизвестный тип исключения - + unparseable Python error неподдающаяся обработке ошибка Python - + unparseable Python traceback неподдающийся обработке traceback Python - + Unfetchable Python error. Неизвестная ошибка Python - CalamaresWindow + CalamaresUtils - - %1 Setup Program + + Install log posted to: +%1 + + + CalamaresWindow - + + %1 Setup Program + Программа установки %1 + + + %1 Installer Программа установки %1 - + Show debug information Показать отладочную информацию @@ -434,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Ручная разметка</strong><br/>Вы можете самостоятельно создавать разделы или изменять их размеры. - + Boot loader location: Расположение загрузчика: @@ -446,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Текущий: @@ -462,96 +503,96 @@ The installer will quit and all changes will be lost. <strong>Выберите раздел для уменьшения, затем двигайте ползунок, изменяя размер</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + %1 будет уменьшен до %2MB и новый раздел %3MB будет создан для %4. - + <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> все данные, которые сейчас находятся на выбранном устройстве. - + 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/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - + No Swap - + Без раздела подкачки - + Reuse Swap - + Использовать существующий раздел подкачки - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. @@ -600,18 +641,18 @@ The installer will quit and all changes will be lost. CommandList - - + + Could not run command. Не удалось выполнить команду. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Команда выполняется в окружении установщика, и ей необходимо знать путь корневого раздела, но rootMountPoint не определено. - + The command needs to know the user's name, but no username is defined. Команде необходимо знать имя пользователя, но оно не задано. @@ -619,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -707,12 +748,12 @@ The installer will quit and all changes will be lost. Create new %2MiB partition on %4 (%3) with file system %1. - + Создать новый раздел %2 MB на %4 (%3) с файловой системой %1. Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Создать новый раздел <strong>%2 MB</strong> на <strong>%4</strong> (%3) с файловой системой <strong>%1</strong>. @@ -799,17 +840,17 @@ The installer will quit and all changes will be lost. Каталог sudoers не доступен для записи. - + Cannot create sudoers file for writing. Не удалось записать файл sudoers. - + Cannot chmod sudoers file. Не удалось применить chmod к файлу sudoers. - + Cannot open groups file for reading. Не удалось открыть файл groups для чтения. @@ -819,7 +860,7 @@ The installer will quit and all changes will be lost. Create Volume Group - + Создать группу томов @@ -956,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1095,7 +1136,7 @@ The installer will quit and all changes will be lost. <Restart checkbox tooltip> - + <Restart checkbox tooltip> @@ -1105,12 +1146,12 @@ The installer will quit and all changes will be lost. <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> @@ -1120,15 +1161,15 @@ The installer will quit and all changes will be lost. <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. - + <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. @@ -1143,7 +1184,7 @@ The installer will quit and all changes will be lost. Setup Complete - + Установка завершена @@ -1153,7 +1194,7 @@ The installer will quit and all changes will be lost. The setup of %1 is complete. - + Установка %1 завершена. @@ -1166,12 +1207,12 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + Форматировать раздел %1 (файловая система: %2, размер: %3 МБ) на %4. Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Форматировать раздел <strong>%1</strong> размером <strong>%3MB</strong> с файловой системой <strong>%2</strong>. @@ -1187,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. Отсутствует выход в Интернет. - + The setup program is not running with administrator rights. - + Программа установки запущена без прав администратора. - + The installer is not running with administrator rights. Программа установки не запущена с привилегиями администратора. - + 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 @@ -1260,17 +1309,33 @@ The installer will quit and all changes will be lost. 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. @@ -1294,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Скрипт @@ -1323,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 &ОК @@ -1351,27 +1416,27 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Я принимаю приведенные выше условия. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Лицензионное соглашение</h1>На этом этапе будет установлено программное обеспечение с проприетарной лицензией. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Ознакомьтесь с приведенными выше Лицензионными соглашениями пользователя (EULA).<br/>Если не согласны с условиями, продолжение установки невозможно. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Лицензионное соглашение</h1>На этом этапе можно установить программное обеспечение с проприетарной лицензией, дающее дополнительные возможности и повышающее удобство работы. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ознакомьтесь выше, с Лицензионными соглашениями конечного пользователя (EULA).<br/>Если вы не согласны с условиями, проприетарное программное обеспечение будет заменено на альтернативное открытое программное обеспечение. @@ -1379,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License Лицензия @@ -1387,98 +1452,98 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - - - Shows the complete license text - - + Shows the complete license text + Показывает полный текст лицензии + + + Hide license text - + Скрыть текст лицензии - + Show license agreement - + Показать лицензионное соглашение - + Hide license agreement - + Скрыть лицензионное соглашение - + Opens the license agreement in a browser window. - + Открывает лицензионное соглашение в окне браузера. - + <a href="%1">View license agreement</a> - + <a href="%1">Просмотреть лицензионное соглашение</a> LocalePage - + The system language will be set to %1. Системным языком будет установлен %1. - + The numbers and dates locale will be set to %1. Региональным форматом чисел и дат будет установлен %1. - + Region: Регион: - + Zone: Зона: - - + + &Change... И&зменить... - + Set timezone to %1/%2.<br/> Установить часовой пояс на %1/%2.<br/> @@ -1486,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Загружаю данные о местоположениях... - - - + Location Местоположение + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Конфигурация файла ключа LUKS. + + + + + No partitions are defined. + Разделы не были заданы. + + + + + + Encrypted rootfs setup error + + + + + Root partition %1 is LUKS but no passphrase has been set. + Корневой раздел %1 это LUKS, но ключ шифрования не был задан. + + + + Could not create LUKS key file for root partition %1. + Не удалось создать файл ключа LUKS для корневого раздела %1. + + + + Could configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Имя - + Description Описание - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Установка по сети. (Отключено: не удается получить список пакетов, проверьте сетевое подключение) - + Network Installation. (Disabled: Received invalid groups data) Установка по сети. (Отключено: получены неверные сведения о группах) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1680,117 @@ 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 Новый пароль — это просто перевёрнутый старый @@ -1681,125 +1800,171 @@ The installer will quit and all changes will be lost. Пароль содержит менее %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 + + Page_Keyboard @@ -1832,47 +1997,86 @@ The installer will quit and all changes will be lost. Как Вас зовут? - + What name do you want to use to log in? Какое имя Вы хотите использовать для входа? - + 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>Введите одинаковый пароль дважды, это необходимо для исключения ошибок. Хороший пароль состоит из смеси букв, цифр и знаков пунктуации; должен иметь длину от 8 знаков и его стоит периодически изменять.</small> - + What is the name of this computer? Какое имя у компьютера? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Это имя будет использовано, если Вы сделаете этот компьютер видимым в сети.</small> - + + Computer Name + + + + + + 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> @@ -2037,109 +2241,109 @@ 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>esp</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>esp</strong> и точкой монтирования <strong>%2</strong>.<br/><br/>Вы можете продолжить и без настройки системного раздела EFI, но Ваша система может не загрузиться. - + EFI system partition flag not set Не установлен флаг системного раздела 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>esp</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>esp</strong> не установлен.<br/>Для установки флага вернитесь и отредактируйте раздел.<br/><br/>Вы можете продолжить и без установки флага, но Ваша система может не загрузиться. - + 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 partitons to install on. - + Нет разделов для установки. @@ -2203,14 +2407,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. Вывода из команды не последовало. - + Output: @@ -2219,52 +2423,52 @@ 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. @@ -2310,19 +2514,53 @@ Output: (no mount point) - + (без точки монтирования) - + Requirements checking for module <i>%1</i> is complete. - + Проверка требований для модуля <i>%1</i> завершена. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2470,23 +2708,23 @@ Output: 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 @@ -2499,12 +2737,12 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Изменить размер <strong>%2MB</strong> раздела <strong>%1</strong> на <strong>%3MB</strong>. Resizing %2MiB partition %1 to %3MiB. - + Изменение размера раздела %1 с %2MB на %3MB. @@ -2526,53 +2764,53 @@ Output: 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'. 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 на ваш компьютер. - + For best results, please ensure that this computer: Для наилучших результатов, убедитесь, что этот компьютер: - + System requirements Системные требования @@ -2593,29 +2831,29 @@ Output: 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 Не возможно записать имя компьютера в целевую систему @@ -2660,7 +2898,7 @@ Output: Set flags on %1MiB %2 partition. - + Установить флаги %1MiB раздела %2. @@ -2675,22 +2913,22 @@ Output: Clear flags on %1MiB <strong>%2</strong> partition. - + Снять флаги %1MiB раздела <strong>%2</strong>. Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + Отметить %1MB раздел <strong>%2</strong> флагом как <strong>%3</strong>. Clearing flags on %1MiB <strong>%2</strong> partition. - + Снятие флагов %1MiB раздела <strong>%2</strong>. Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + Установка флагов <strong>%3</strong> %1MiB раздела <strong>%2</strong>. @@ -2756,22 +2994,22 @@ Output: Точка монтирования корневого раздела %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. @@ -2794,22 +3032,22 @@ Output: Неправильный путь: %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 для записи @@ -2836,7 +3074,7 @@ Output: This is an overview of what will happen once you start the setup procedure. - + Это обзор изменений, которые будут применены при запуске процедуры установки. @@ -2855,22 +3093,22 @@ Output: TrackingInstallJob - + Installation feedback Отчёт об установке - + Sending installation feedback. Отправка отчёта об установке. - + Internal error in install-tracking. - + HTTP request timed out. Тайм-аут запроса HTTP. @@ -2878,28 +3116,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2932,25 +3170,25 @@ Output: Отслеживание установок позволяет %1 узнать, сколько у них пользователей, на каком оборудовании устанавливается %1, и (с двумя последними опциями) постоянно получать сведения о предпочитаемых приложениях. Чтобы увидеть, что будет отправлено, щелкните по значку справки рядом с каждой областью. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + Отметив этот пункт, вы поделитесь информацией о установке и своем оборудовании. Эта информация <b>будет отправлена только один раз</b> после завершения установки. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + Отметив этот пункт, вы будете <b>периодически</b> отправлять %1 информацию о своей установке, оборудовании и приложениях. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + Отметив этот пункт, вы будете <b>регулярно</b> отправлять %1 информацию о своей установке, оборудовании, приложениях и паттернах их использования. TrackingViewStep - + Feedback Отзывы @@ -2958,43 +3196,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Ваше имя пользователя содержит недопустимые символы. Допускаются только строчные буквы и цифры. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Имя вашего компьютера слишком коротко. - + Your hostname is too long. Имя вашего компьютера слишком длинное. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Имя вашего компьютера содержит недопустимые символы. Разрешены буквы, цифры и тире. - - - - + Your passwords do not match! Пароли не совпадают! @@ -3002,17 +3244,30 @@ Output: UsersViewStep - + Users Пользователи + + VariantModel + + + Key + + + + + Value + Значение + + VolumeGroupBaseDialog Create Volume Group - + Создать группу томов @@ -3022,12 +3277,12 @@ Output: Volume Group Name: - + Имя группы томов: Volume Group Type: - + Тип группы томов: @@ -3042,17 +3297,17 @@ Output: Total Size: - + Общий объём: Used Size: - + Использованный объём: Total Sectors: - + Всего секторов: @@ -3068,68 +3323,93 @@ Output: Форма - - &Release notes - &Примечания к выпуску - - - - &Known issues - &Известные проблемы - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + &Примечания к выпуску + + + + &Known issues + &Известные проблемы + + + &Support П&оддержка &About - + &О программе - + <h1>Welcome to the %1 installer.</h1> <h1>Добро пожаловать в программу установки %1 .</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Добро пожаловать в установщик Calamares для %1 .</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Добро пожаловать в программу установки Calamares для %1 .</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>Добро пожаловать в программу установки %1 .</h1> - + 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-2019 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. - + %1 support %1 поддержка @@ -3137,7 +3417,7 @@ Output: WelcomeViewStep - + Welcome Добро пожаловать diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index 847d935fe..43d4c9a6e 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Hlavný zavádzací záznam (MBR) zariadenia %1 - + Boot Partition Zavádzací oddiel - + System Partition Systémový oddiel - + Do not install a boot loader Neinštalovať zavádzač - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Prázdna stránka @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Forma - + GlobalStorage Globálne úložisko - + JobQueue Fronta úloh - + Modules Moduly - + Type: Typ: - - + + none žiadny - + Interface: Rozhranie: - + Tools Nástroje - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Ladiace informácie @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Inštalácia - + Install Inštalácia @@ -123,7 +133,7 @@ Úloha zlyhala (%1) - + Programmed job failure was explicitly requested. Zlyhanie naprogramovanej úlohy bolo výlučne vyžiadané. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Hotovo @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Spustenie príkazu %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + Spustenie príkazu „%1“. + + + Running command %1 %2 Spúšťa sa príkaz %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Spúšťa sa operácia %1. - + Bad working directory path Nesprávna cesta k pracovnému adresáru - + Working directory %1 for python job %2 is not readable. Pracovný adresár %1 pre úlohu jazyka python %2 nie je možné čítať. - + Bad main script file Nesprávny súbor hlavného skriptu - + Main script file %1 for python job %2 is not readable. Súbor hlavného skriptu %1 pre úlohu jazyka python %2 nie je možné čítať. - + Boost.Python error in job "%1". Chyba knižnice Boost.Python v úlohe „%1“. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Čaká sa na %n modul.Čaká sa na %n moduly.Čaká sa na %n modulov.Čaká sa na %n modulov. - + (%n second(s)) (%n sekunda)(%n sekundy)(%n sekúnd)(%n sekúnd) - + System-requirements checking is complete. Kontrola systémových požiadaviek je dokončená. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Späť - - + + &Next Ď&alej - - + + &Cancel &Zrušiť - - + 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. - + Setup 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? + + + + Install Log Paste URL + + + + + The upload was unsuccessful. No web-paste was done. + + + + 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 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> - + &Set up now - + &Inštalovať teraz - + &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. - + 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? Inštalátor sa ukončí a všetky zmeny budú stratené. - + + &Yes _Áno - + + &No _Nie - + &Close _Zavrieť - + Continue with setup? Pokračovať v inštalácii? - + 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> - + &Install now &Inštalovať teraz - + Go &back Prejsť s&päť - + &Done _Dokončiť - + The installation is complete. Close the installer. Inštalácia je dokončená. Zatvorí inštalátor. - + Error Chyba - + Installation Failed Inštalácia zlyhala @@ -372,40 +403,49 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CalamaresPython::Helper - + Unknown exception type Neznámy typ výnimky - + unparseable Python error Neanalyzovateľná chyba jazyka Python - + unparseable Python traceback Neanalyzovateľný ladiaci výstup jazyka Python - + Unfetchable Python error. Nezískateľná chyba jazyka Python. - CalamaresWindow + CalamaresUtils - - %1 Setup Program + + Install log posted to: +%1 + + + CalamaresWindow - + + %1 Setup Program + Inštalačný program distribúcie %1 + + + %1 Installer Inštalátor distribúcie %1 - + Show debug information Zobraziť ladiace informácie @@ -436,7 +476,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <strong>Ručné rozdelenie oddielov</strong><br/>Môžete vytvoriť alebo zmeniť veľkosť oddielov podľa seba. - + Boot loader location: Umiestnenie zavádzača: @@ -448,8 +488,8 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. - - + + Current: Teraz: @@ -464,96 +504,96 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <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. - + <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í. - + 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í. - + 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 - - - - + + + + <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 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í. @@ -602,18 +642,18 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. CommandList - - + + Could not run command. Nepodarilo sa spustiť príkaz. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Príkaz beží v hostiteľskom prostredí a potrebuje poznať koreňovú cestu, ale nie je definovaný žiadny koreňový prípojný bod. - + The command needs to know the user's name, but no username is defined. Príkaz musí poznať meno používateľa, ale žiadne nie je definované. @@ -621,7 +661,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ContextualProcessJob - + Contextual Processes Job Úloha kontextových procesov @@ -709,12 +749,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Create new %2MiB partition on %4 (%3) with file system %1. - + Vytvorenie nového %2MiB oddielu na zariadení %4 (%3) so systémom súborov %1. Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Vytvorenie nového <strong>%2MiB</strong> oddielu na zariadení <strong>%4</strong> (%3) so systémom súborov <strong>%1</strong>. @@ -801,17 +841,17 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. 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. @@ -958,7 +998,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. DummyCppJob - + Dummy C++ Job Fiktívna úloha jazyka C++ @@ -1107,12 +1147,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. - + <h1>Všetko je dokončené.</h1><br/>Distribúcia %1 bola nainštalovaná do vášho počítača.<br/>Teraz môžete začať používať váš nový systém. <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>Keď je zaškrtnuté toto políčko, váš systém sa okamžite reštartuje po stlačení tlačidla <span style="font-style:italic;">Dokončiť</span> alebo zatvorení inštalačného programu.</p></body></html> @@ -1122,15 +1162,15 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. <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. - + <html><head/><body><p>Keď je zaškrtnuté toto políčko, váš systém sa okamžite reštartuje po stlačení tlačidla <span style="font-style:italic;">Dokončiť</span> alebo zatvorení inštalátora.</p></body></html> + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + <h1>Inštalácia zlyhala</h1><br/>Distribúcia %1 nebola nainštalovaná do vášho počítača.<br/>Chybová hláška: %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Inštalácia zlyhala</h1><br/>Distribúcia %1 nebola nainštalovaná do vášho počítača.<br/>Chybová hláška: %2. @@ -1168,12 +1208,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Format partition %1 (file system: %2, size: %3 MiB) on %4. - + Naformátovanie oddielu %1 (systém súborov: %2, veľkosť: %3 MiB) na %4. Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Naformátovanie <strong>%3MiB</strong> oddielu <strong>%1</strong> so systémom súborov <strong>%2</strong>. @@ -1189,66 +1229,74 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. GeneralRequirements - + has at least %1 GiB available drive space - + obsahuje aspoň %1 GiB voľného miesta na disku - + There is not enough drive space. At least %1 GiB is required. - + Nie je dostatok miesta na disku. Vyžaduje sa aspoň %1 GiB. - + has at least %1 GiB working memory - + obsahuje aspoň %1 GiB voľnej operačnej pamäte - + The system does not have enough working memory. At least %1 GiB is required. - + Počítač neobsahuje dostatok operačnej pamäte. Vyžaduje sa aspoň %1 GiB. - + is plugged in to a power source je pripojený k zdroju napájania - + The system is not plugged in to a power source. Počítač nie je pripojený k zdroju napájania. - + is connected to the Internet je pripojený k internetu - + The system is not connected to the Internet. Počítač nie je pripojený k internetu. - + The setup program is not running with administrator rights. Inštalačný program nie je spustený s právami správcu. - + The installer is not running with administrator rights. Inštalátor nie je spustený s právami správcu. - + The screen is too small to display the setup program. - + Obrazovka je príliš malá na to, aby bolo možné zobraziť inštalačný program. - + The screen is too small to display the installer. Obrazovka je príliš malá na to, aby bolo možné zobraziť inštalátor. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1257,22 +1305,38 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. OEM Batch Identifier - + Hromadný identifikátor OEM Could not create directories <code>%1</code>. - + Nepodarilo sa vytvoriť adresáre <code>%1</code>. Could not open file <code>%1</code>. - + Nepodarilo sa otvoriť súbor <code>%1</code>. Could not write to file <code>%1</code>. - + Nepodarilo sa zapísať do súboru <code>%1</code>. + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Vytvára sa initramfs pomocou mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Vytvára sa initramfs. @@ -1296,7 +1360,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. InteractiveTerminalViewStep - + Script Skript @@ -1325,22 +1389,22 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LCLocaleDialog - + System locale setting Miestne nastavenie systému - + 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>. Miestne nastavenie systému ovplyvní jazyk a znakovú sadu niektorých prvkov používateľského rozhrania v príkazovom riadku.<br/>Aktuálne nastavenie je <strong>%1</strong>. - + &Cancel &Zrušiť - + &OK &OK @@ -1353,27 +1417,27 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Forma - + I accept the terms and conditions above. Prijímam podmienky vyššie. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licenčné podmienky</h1>Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, proces inštalácie nemôže pokračovať. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licenčné podmienky</h1>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í. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, uzavretý softvér nebude nainštalovaný a namiesto neho budú použité alternatívy s otvoreným zdrojom. @@ -1381,7 +1445,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LicenseViewStep - + License Licencia @@ -1389,98 +1453,98 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>Ovládač %1</strong><br/>vytvoril %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Ovládač grafickej karty %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Zásuvný modul prehliadača %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Kodek %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Balík %1</strong><br/><font color="Grey">vytvoril %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">vytvoril %2</font> - + Shows the complete license text - + Zobrazí úplný text licencie - + Hide license text <br> - + Show license agreement - + Zobraziť licenčné podmienky - + Hide license agreement - + Skryť licenčné podmienky - + Opens the license agreement in a browser window. - + Otvorí licenčné podmienky v okne prehliadača. - + <a href="%1">View license agreement</a> - + <a href="%1">Zobraziť licenčné podmienky</a> LocalePage - + 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. - + Region: Oblasť: - + Zone: Zóna: - - + + &Change... Z&meniť... - + Set timezone to %1/%2.<br/> Nastavenie časovej zóny na %1/%2.<br/> @@ -1488,38 +1552,92 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. LocaleViewStep - - Loading location data... - Načítavajú sa údaje umiestnenia... - - - + Location Umiestnenie + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Nastavuje sa kľúčový súbor LUKS. + + + + + No partitions are defined. + Nie sú určené žiadne oddiely. + + + + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + Generovanie identifikátora počítača. + + + + Configuration Error + Chyba konfigurácie + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Názov - + Description Popis - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Sieťová inštalácia. (Zakázaná: Nie je možné získať zoznamy balíkov. Skontrolujte vaše sieťové pripojenie.) - + Network Installation. (Disabled: Received invalid groups data) Sieťová inštalácia. (Zakázaná: Boli prijaté neplatné údaje o skupinách) + + + Network Installation. (Disabled: Incorrect configuration) + Sieťová inštalácia. (Zakázaná: Nesprávna konfigurácia) + NetInstallViewStep @@ -1534,7 +1652,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Ba&tch: - + H&romadne: @@ -1550,12 +1668,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. OEMViewStep - + OEM Configuration - + Konfigurácia OEM - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1563,117 +1681,117 @@ 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 @@ -1683,125 +1801,171 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. 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 + + + + PackageChooserPage + + + Form + Forma + + + + Product Name + Názov produktu + + + + TextLabel + Textová menovka + + + + Long Product Description + Dlhý popis produktu + + + + Package Selection + Výber balíkov + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + Balíky + Page_Keyboard @@ -1834,47 +1998,86 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Aké je vaše meno? - + What name do you want to use to log in? Aké meno chcete použiť na prihlásenie? - + Choose a password to keep your account safe. Zvoľte heslo pre zachovanie vášho účtu v bezpečí. - + + <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>Zadajte rovnaké heslo dvakrát, aby sa predišlo preklepom. Dobré heslo by malo obsahovať mix písmen, čísel a diakritiky, malo by mať dĺžku aspoň osem znakov a malo by byť pravidelne menené.</small> - + What is the name of this computer? Aký je názov tohto počítača? - + + Your Full Name + Vaše celé meno + + + + login + prihlásenie + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Tento názov bude použitý, keď sprístupníte počítač v sieti.</small> - + + Computer Name + Názov počítača + + + + + Password + Heslo + + + + + Repeat Password + Zopakovanie hesla + + + + 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. Prihlásiť automaticky bez pýtania hesla. - + Use the same password for the administrator account. Použiť rovnaké heslo pre účet správcu. - + Choose a password for the administrator account. Zvoľte heslo pre účet správcu. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Zadajte rovnaké heslo dvakrát, aby sa predišlo preklepom.</small> @@ -2039,107 +2242,107 @@ 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>esp</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 povolenou značkou <strong>esp</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ť. - + EFI system partition flag not set Značka oddielu systému EFI nie je nastavená - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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ú značku <strong>esp</strong>.<br/>Na nastavenie značky prejdite späť a upravte oddiel.<br/><br/>Môžete pokračovať bez nastavenia značky, ale váš systém môže pri spustení zlyhať. - + 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 partitons to install on. Neexistujú žiadne oddiely, na ktoré je možné vykonať inštaláciu. @@ -2205,14 +2408,14 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. ProcessResult - + There was no output from the command. Žiadny výstup z príkazu. - + Output: @@ -2221,52 +2424,52 @@ Výstup: - + External command crashed. Externý príkaz nečakane skončil. - + Command <i>%1</i> crashed. Príkaz <i>%1</i> nečakane skončil. - + External command failed to start. Zlyhalo spustenie externého príkazu. - + Command <i>%1</i> failed to start. Zlyhalo spustenie príkazu <i>%1</i> . - + Internal error when starting command. Počas spúšťania príkazu sa vyskytla interná chyba. - + Bad parameters for process job call. Nesprávne parametre pre volanie úlohy procesu. - + External command failed to finish. Zlyhalo dokončenie externého príkazu. - + Command <i>%1</i> failed to finish in %2 seconds. Zlyhalo dokončenie príkazu <i>%1</i> počas doby %2 sekúnd. - + External command finished with errors. Externý príkaz bol dokončený s chybami. - + Command <i>%1</i> finished with exit code %2. Príkaz <i>%1</i> skončil s ukončovacím kódom %2. @@ -2315,16 +2518,50 @@ Výstup: (žiadny bod pripojenia) - + Requirements checking for module <i>%1</i> is complete. Kontrola požiadaviek modulu <i>%1</i> je dokončená. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Žiadny produkt + + + + No description provided. + Nie je poskytnutý żiadny popis. + + + + + + + + File not found + Súbor sa nenašiel + + + + Path <pre>%1</pre> must be an absolute path. + Cesta <pre>%1</pre> musí byť úplnou cestou. + + + + Could not create new random file <pre>%1</pre>. + Nepodarilo sa vytvoriť nový náhodný súbor <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + Nepodarilo sa čítať náhodný súbor <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2501,12 +2738,12 @@ Výstup: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Zmena veľkosti <strong>%2MiB</strong> oddielu <strong>%1</strong> na <strong>%3MiB</strong>. Resizing %2MiB partition %1 to %3MiB. - + Mení sa veľkosť %2MiB oddielu %1 na %3MiB. @@ -2544,37 +2781,37 @@ Výstup: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Tento počítač nespĺňa minimálne požiadavky pre inštaláciu distribúcie %1.<br/>Inštalácia nemôže pokračovať. <a href="#details">Podrobnosti...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Tento počítač nespĺňa minimálne požiadavky pre inštaláciu distribúcie %1.<br/>Inštalácia nemôže pokračovať. <a href="#details">Podrobnosti...</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. - + Tento počítač nespĺňa niektoré z odporúčaných požiadaviek pre inštaláciu distribúcie %1.<br/>Inštalácia môže pokračovať, ale niektoré funkcie môžu byť zakázané. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Tento počítač nespĺňa niektoré z odporúčaných požiadaviek pre inštaláciu distribúcie %1.<br/>Inštalácia môže pokračovať, ale niektoré funkcie môžu byť zakázané. - + This program will ask you some questions and set up %2 on your computer. Tento program vám položí niekoľko otázok a nainštaluje distribúciu %2 do vášho počítača. - + For best results, please ensure that this computer: Pre čo najlepší výsledok, sa prosím, uistite, že tento počítač: - + System requirements Systémové požiadavky @@ -2595,29 +2832,29 @@ Výstup: SetHostNameJob - + Set hostname %1 Nastavenie názvu hostiteľa %1 - + Set hostname <strong>%1</strong>. Nastavenie názvu hostiteľa <strong>%1</strong>. - + Setting hostname %1. Nastavuje sa názov hostiteľa %1. - - + + Internal Error Vnútorná chyba - - + + Cannot write hostname to target system Nedá sa zapísať názov hostiteľa do cieľového systému @@ -2662,7 +2899,7 @@ Výstup: Set flags on %1MiB %2 partition. - + Nastavenie značiek na %1MiB oddieli %2. @@ -2677,22 +2914,22 @@ Výstup: Clear flags on %1MiB <strong>%2</strong> partition. - + Vymazanie značiek na %1MiB oddieli <strong>%2</strong>. Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. - + Označenie %1MiB oddielu <strong>%2</strong> ako <strong>%3</strong>. Clearing flags on %1MiB <strong>%2</strong> partition. - + Vymazávajú sa značky na %1MiB oddieli <strong>%2</strong>. Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. - + Nastavujú sa značky <strong>%3</strong> na %1MiB oddieli <strong>%2</strong>. @@ -2758,22 +2995,22 @@ Výstup: rootMountPoint je %1 - + Cannot disable root account. Nedá sa zakázať účet správcu. - + passwd terminated with error code %1. Príkaz passwd ukončený s chybovým kódom %1. - + Cannot set password for user %1. Nedá sa nastaviť heslo pre používateľa %1. - + usermod terminated with error code %1. Príkaz usermod ukončený s chybovým kódom %1. @@ -2796,22 +3033,22 @@ Výstup: Nesprávna cesta: %1 - + Cannot set timezone. Nedá sa nastaviť časová zóna. - + Link creation failed, target: %1; link name: %2 Zlyhalo vytvorenie odakzu, cieľ: %1; názov odkazu: %2 - + Cannot set timezone, Nedá sa nastaviť časová zóna, - + Cannot open /etc/timezone for writing Nedá sa otvoriť cesta /etc/timezone pre zapisovanie @@ -2838,7 +3075,7 @@ Výstup: This is an overview of what will happen once you start the setup procedure. - + Toto je prehľad toho, čo sa stane, keď spustíte inštaláciu. @@ -2857,22 +3094,22 @@ Výstup: TrackingInstallJob - + Installation feedback Spätná väzba inštalácie - + Sending installation feedback. Odosiela sa spätná väzba inštalácie. - + Internal error in install-tracking. Interná chyba príkazu install-tracking. - + HTTP request timed out. Požiadavka HTTP vypršala. @@ -2880,28 +3117,28 @@ Výstup: TrackingMachineNeonJob - + 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. @@ -2934,17 +3171,17 @@ Výstup: Inštalácia sledovania pomáha distribúcii %1 vidieť, koľko používateľov ju používa, na akom hardvéri inštalujú distribúciu %1 a (s poslednými dvoma voľbami nižšie) získavať nepretržité informácie o uprednostňovaných aplikáciách. Na zobrazenie, čo bude odosielané, prosím, kliknite na ikonu pomocníka vedľa každej oblasti. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Vybraním tejto voľby odošlete informácie o vašej inštalácii a hardvéri. Tieto informácie budú <b>odoslané iba raz</b> po dokončení inštalácie. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Vybraním tejto voľby budete <b>pravidelne</b> odosielať informácie o vašej inštalácii, hardvéri a aplikáciách distribúcii %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Vybraním tejto voľby budete <b>neustále</b> odosielať informácie o vašej inštalácii, hardvéri, aplikáciách a charakteristike používania distribúcii %1. @@ -2952,7 +3189,7 @@ Výstup: TrackingViewStep - + Feedback Spätná väzba @@ -2960,43 +3197,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Vaše používateľské meno obsahuje neplatné znaky. Povolené sú iba písmená, čísla a pomlčky. + + 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. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + 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ý. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Váš názov hostiteľa obsahuje neplatné znaky. Povolené sú iba písmená, čísla a pomlčky. - - - - + Your passwords do not match! Vaše heslá sa nezhodujú! @@ -3004,11 +3245,24 @@ Výstup: UsersViewStep - + Users Používatelia + + VariantModel + + + Key + + + + + Value + Hodnota + + VolumeGroupBaseDialog @@ -3070,23 +3324,48 @@ Výstup: Forma - + + + Select application and system language + Výber jazyka aplikácií a systému + + + + Open donations website + + + + + &Donate + &Prispieť + + + + Open help and support website + + + + + Open issues and bug-tracking website + Otvoriť webovú stránku s problémami a chybami + + + + Open release notes website + Otvoriť webovú stránku s poznámkami k vydaniu + + + &Release notes &Poznámky k vydaniu - + &Known issues &Známe problémy - - - Select language - - - - + &Support Po&dpora @@ -3096,42 +3375,42 @@ Výstup: &O inštalátore - + <h1>Welcome to the %1 installer.</h1> <h1>Vitajte v inštalátore distribúcie %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Vitajte v aplikácii Calamares, inštalátore distribúcie %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Vitajte v inštalačnom programe Calamares pre distribúciu %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + <h1>Vitajte pri inštalácii distribúcie %1.</h1> - + About %1 setup - + About %1 installer O inštalátore %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-2019 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/>pre %3</strong><br/><br/>Autorské práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorské práva 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poďakovanie patrí <a href="https://calamares.io/team/">tímu inštalátora Calamares</a> a <a href="https://www.transifex.com/calamares/calamares/">prekladateľskému tímu inštalátora Calamares</a>.<br/><br/>Vývoj inštalátora <a href="https://calamares.io/">Calamares</a> je sponzorovaný spoločnosťou <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - oslobodzujúci softvér. - + %1 support Podpora distribúcie %1 @@ -3139,7 +3418,7 @@ Výstup: WelcomeViewStep - + Welcome Uvítanie diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index 1ea9375e5..648c58aae 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition Zagonski razdelek - + System Partition Sistemski razdelek - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Oblika - + GlobalStorage - + JobQueue - + Modules - + Type: Vrsta: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Namesti @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Končano @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Nepravilna pot delovne mape - + Working directory %1 for python job %2 is not readable. Ni mogoče brati delovne mape %1 za pythonovo opravilo %2. - + Bad main script file Nepravilna datoteka glavnega skripta - + Main script file %1 for python job %2 is not readable. Ni mogoče brati datoteke %1 glavnega skripta za pythonovo opravilo %2. - + Boost.Python error in job "%1". Napaka Boost.Python v opravilu "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Nazaj - - + + &Next &Naprej - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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? Namestilni program se bo končal in vse spremembe bodo izgubljene. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Napaka - + Installation Failed Namestitev je spodletela @@ -371,40 +402,49 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CalamaresPython::Helper - + Unknown exception type Neznana vrsta izjeme - + unparseable Python error nerazčlenljiva napaka Python - + unparseable Python traceback - + Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Namestilnik - + Show debug information @@ -435,7 +475,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Boot loader location: @@ -447,8 +487,8 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - - + + Current: @@ -463,96 +503,96 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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. @@ -620,7 +660,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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. @@ -957,7 +997,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + <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. @@ -1188,66 +1228,74 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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 je priklopljen na vir napajanja - + The system is not plugged in to a power source. - + is connected to the Internet je povezan s spletom - + The system is not connected to the Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. InteractiveTerminalViewStep - + Script @@ -1324,22 +1388,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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 @@ -1352,27 +1416,27 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Oblika - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LicenseViewStep - + License @@ -1388,64 +1452,64 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: Območje: - + Zone: Časovni pas: - - + + &Change... - + Set timezone to %1/%2.<br/> Nastavi časovni pas na %1/%2.<br/> @@ -1487,38 +1551,92 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocaleViewStep - - Loading location data... - Nalaganje podatkov položaja ... - - - + Location Položaj + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Ime - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + 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 + Oblika + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Vaše ime? - + What name do you want to use to log in? Katero ime želite uporabiti za prijavljanje? - + Choose a password to keep your account safe. Izberite geslo za zaščito vašega računa. - + + <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>Geslo vnesite dvakrat, da se zavarujete pred morebitnimi tipkarskimi napakami. Dobro geslo vsebuje mešanico črk, številk in ločil ter ima najmanj osem znakov. Priporočljivo je, da ga spreminjate v rednih časovnih razmikih.</small> - + What is the name of this computer? Ime računalnika? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>To ime bo uporabljeno, če bo vaš računalnik viden drugim napravam v omrežju.</small> - + + Computer Name + + + + + + 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. Izberite geslo za skrbniški račun. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Geslo vnesite dvakrat, da se zavarujete pred morebitnimi tipkarskimi napakami.</small> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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. Nepravilni parametri za klic procesa opravila. - + 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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. - + For best results, please ensure that this computer: Za najboljše rezultate se prepričajte, da vaš računalnik izpolnjuje naslednje zahteve: - + System requirements @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Oblika - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3092,42 +3371,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 6d3bb2016..3624931ce 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record për %1 - + Boot Partition Pjesë Nisjesh - + System Partition Pjesëzim Sistemi - + Do not install a boot loader Mos instalo ngarkues nisjesh - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Faqe e Zbrazët @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Formular - + GlobalStorage GlobalStorage - + JobQueue Radhë Aktesh - + Modules Module - + Type: Lloj: - - + + none asnjë - + Interface: Ndërfaqe: - + Tools Mjete - + + Reload Stylesheet + Ringarko Fletëstilin + + + + Widget Tree + Pemë Widget-sh + + + Debug information Të dhëna diagnostikimi @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Ujdise - + Install Instaloje @@ -123,7 +133,7 @@ Akti dështoi (%1) - + Programmed job failure was explicitly requested. Dështimi i programuar i aktit qe kërkuar shprehimisht. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done U bë @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Xhiro urdhrin %1 %2 + Run command '%1' in target system. + Xhiroje urdhrin '%1' te sistemi i synuar. - + + Run command '%1'. + Xhiro urdhrin '%1'. + + + Running command %1 %2 Po xhirohet urdhri %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Po xhirohet %1 veprim. - + Bad working directory path Shteg i gabuar drejtorie pune - + Working directory %1 for python job %2 is not readable. Drejtoria e punës %1 për aktin python %2 s’është e lexueshme. - + Bad main script file Kartelë kryesore programthi e dëmtuar - + Main script file %1 for python job %2 is not readable. Kartela kryesore e programthit file %1 për aktin python %2 s’është e lexueshme. - + Boost.Python error in job "%1". Gabim Boost.Python tek akti \"%1\". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). Po pritet për %n modul(e).Po pritet për %n modul(e). - + (%n second(s)) (%n sekondë(a))(%n sekondë(a)) - + System-requirements checking is complete. Kontrolli i domosdoshmërive të sistemit u plotësua. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Mbrapsht - - + + &Next &Pasuesi - - + + &Cancel &Anuloje - - + Cancel setup without changing the system. Anuloje rregullimin pa ndryshuar sistemin. - - + Cancel installation without changing the system. Anuloje instalimin pa ndryshuar sistemin. - + Setup Failed Rregullimi Dështoi - + + Would you like to paste the install log to the web? + Do të donit të hidhet në web regjistri i instalimit? + + + + 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 konfiguruar. 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 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> - + &Set up now &Rregulloje tani - + &Set up &Rregulloje - + &Install &Instaloje - + Setup is complete. Close the setup program. Rregullimi është i plotë. Mbylleni programin e rregullimit. - + 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? Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - + + &Yes &Po - + + &No &Jo - + &Close &Mbylle - + Continue with setup? Të vazhdohet me rregullimin? - + 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> - + &Install now &Instaloje tani - + Go &back Kthehu &mbrapsht - + &Done &U bë - + The installation is complete. Close the installer. Instalimi u plotësua. Mbylle instaluesin. - + Error Gabim - + Installation Failed Instalimi Dështoi @@ -372,40 +403,50 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CalamaresPython::Helper - + Unknown exception type Lloj i panjohur përjashtimi - + unparseable Python error Gabim kodi Python të papërtypshëm - + unparseable Python traceback <i>Traceback</i> Python i papërtypshëm - + Unfetchable Python error. Gabim Python mosprurjeje kodi. + + CalamaresUtils + + + Install log posted to: +%1 + Regjistri i instalimit u postua te: +%1 + + CalamaresWindow - + %1 Setup Program Programi i Rregullimit të %1 - + %1 Installer Instalues %1 - + Show debug information Shfaq të dhëna diagnostikimi @@ -436,7 +477,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <strong>Pjesëzim dorazi</strong><br/>Pjesët mund t’i krijoni dhe ripërmasoni ju vetë. - + Boot loader location: Vendndodhje ngarkuesi nisjesh: @@ -448,8 +489,8 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. - - + + Current: E tanishmja: @@ -464,96 +505,96 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <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. - + <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ëzimin 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ë Sistemi 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. 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. - + 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. - + No Swap Pa Swap - + Reuse Swap Ripërdor Swap-in - + Swap (no Hibernate) Swap (pa Letargji) - + Swap (with Hibernate) Swap (me Letargji) - + Swap to file Swap në kartelë - - - - + + + + <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 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. @@ -602,18 +643,18 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. CommandList - - + + Could not run command. S’u xhirua dot urdhri. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Urdhri xhirohet në mjedisin strehë dhe është e nevojshme të dijë shtegun për rrënjën, por nuk ka rootMountPoint të përcaktuar. - + The command needs to know the user's name, but no username is defined. Urdhri lypset të dijë emrin e përdoruesit, por s’ka të përcaktuar emër përdoruesi. @@ -621,7 +662,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ContextualProcessJob - + Contextual Processes Job Akt Procesesh Kontekstuale @@ -801,17 +842,17 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. 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. @@ -958,7 +999,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. DummyCppJob - + Dummy C++ Job Akt C++ Dummy @@ -1125,12 +1166,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. <html><head/><body><p>Kur i vihet shenjë kësaj kutie, sistemi juaj do të riniset menjëherë, kur klikoni mbi <span style=" font-style:italic;">U bë</span> ose mbyllni instaluesin.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Rregullimi Dështoi</h1><br/>%1 s’u rregullua në kompjuterin tuaj.<br/>Mesazhi i gabimit qe: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Instalimi Dështoi</h1><br/>%1 s’u instalua në kompjuterin tuaj.<br/>Mesazhi i gabimit qe: %2. @@ -1189,66 +1230,74 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. GeneralRequirements - + has at least %1 GiB available drive space ka të paktën %1 GiB hapësirë të përdorshme - + There is not enough drive space. At least %1 GiB is required. S’ka hapësirë të mjaftueshme. Lypset të paktën %1 GiB. - + has at least %1 GiB working memory ka të paktën %1 GiB kujtesë të përdorshme - + The system does not have enough working memory. At least %1 GiB is required. Sistemi s’ka kujtesë të mjaftueshme për të punuar. Lypsen të paktën %1 GiB. - + is plugged in to a power source është në prizë - + The system is not plugged in to a power source. Sistemi s'është i lidhur me ndonjë burim rryme. - + is connected to the Internet është lidhur në Internet - + The system is not connected to the Internet. Sistemi s’është i lidhur në Internet. - + The setup program is not running with administrator rights. Programi i rregullimit nuk po xhirohen me të drejta përgjegjësi. - + The installer is not running with administrator rights. Instaluesi s’po xhirohet me të drejta përgjegjësi. - + The screen is too small to display the setup program. Ekrani është shumë i vogël për të shfaqur programin e rregullimit. - + The screen is too small to display the installer. Ekrani është shumë i vogël për shfaqjen e instaluesit. + + HostInfoJob + + + Collecting information about your machine. + Po grumbullohen të dhëna rreth makinës tuaj. + + IDJob @@ -1275,6 +1324,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. S’u shkrua dot te kartelë <code>%1</code>. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Po krijohet initramfs me mkinitcpio. + + + + InitramfsJob + + + Creating initramfs. + Po krijohet initramfs. + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. InteractiveTerminalViewStep - + Script Programth @@ -1325,22 +1390,22 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LCLocaleDialog - + System locale setting Rregullim i vendores së sistemit - + 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>. Rregullimi i vendores së sistemit ka të bëjë me gjuhën dhe shkronjat për disa elementë të ndërfaqes së përdoruesit për rresht urdhrash.<br/>Vlera e tanishme është <strong>%1</strong>. - + &Cancel &Anuloje - + &OK &OK @@ -1353,27 +1418,27 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Formular - + I accept the terms and conditions above. I pranoj termat dhe kushtet më sipër. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Marrëveshje Licence</h1>Kjo procedurë rregullimi do të instalojë software pronësor që është subjekt kushtesh licencimi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>Nëse nuk pajtohemi me kushtet, procedura e rregullimit s’mund të shkojë më tej. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Marrëveshje Licence</h1>Që të furnizojë veçori shtesë dhe të përmirësojë punën e përdoruesit, kjo procedurë rregullimi mundet të instalojë software pronësor që është subjekt kushtesh licencimi. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Ju lutemi, shqyrtoni Marrëveshje Licencimi Për Përdorues të Thjeshtë (EULAs) më sipër.<br/>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. @@ -1381,7 +1446,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LicenseViewStep - + License Licencë @@ -1389,64 +1454,64 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>përudhës %1</strong><br/>nga %2 - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver <strong>Përudhës grafik %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>Shtojcë shfletuesi %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>Kodek %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>Paketë %1</strong><br/><font color=\"Grey\">nga %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color=\"Grey\">nga %2</font> - + Shows the complete license text Shfaq tekstin e plotë të licencës - + Hide license text Fshihe tekstin e licencës - + Show license agreement Shfaq marrëveshje licence - + Hide license agreement Fshihe marrëveshjen e licencës - + Opens the license agreement in a browser window. E hap marrëveshjen e licencës në një dritare shfletuesi. - + <a href="%1">View license agreement</a> <a href="%1">Shihni marrëveshje licence</a> @@ -1454,33 +1519,33 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocalePage - + 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. - + Region: Rajon: - + Zone: Zonë: - - + + &Change... &Ndryshojeni… - + Set timezone to %1/%2.<br/> Si zonë kohore do të caktohet %1/%2.<br/> @@ -1488,38 +1553,92 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. LocaleViewStep - - Loading location data... - Po ngarkohen të dhëna vendndodhjeje… - - - + Location Vendndodhje + + LuksBootKeyFileJob + + + Configuring LUKS key file. + Po formësohet kartelë kyçesh LUKS. + + + + + No partitions are defined. + S’ka pjesë të përkufizuara. + + + + + + Encrypted rootfs setup error + Gabim ujdisjeje rootfs të fshehtëzuar + + + + Root partition %1 is LUKS but no passphrase has been set. + Pjesa rrënjë %1 është LUKS, por s’është caktuar frazëkalim. + + + + Could not create LUKS key file for root partition %1. + S’u krijua dot kartelë kyçi LUKS për ndarjen rrënjë %1. + + + + Could configure LUKS key file on partition %1. + Mund të formësohej kartelë kyçesh LUKS në pjesën %1. + + + + MachineIdJob + + + Generate machine-id. + Prodho machine-id. + + + + Configuration Error + Gabim Formësimi + + + + No root mount point is set for MachineId. + S’është caktuar pikë montimi rrënjë për MachineId. + + NetInstallPage - + Name Emër - + Description Përshkrim - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Instalim Nga Rrjeti. (U çaktivizua: S’arrihet të sillen lista paketash, kontrolloni lidhjen tuaj në rrjet) - + Network Installation. (Disabled: Received invalid groups data) Instalim Nga Rrjeti. (U çaktivizua: U morën të dhëna të pavlefshme grupesh) + + + Network Installation. (Disabled: Incorrect configuration) + Instalim Nga Rrjeti. (E çaktivizuar: Formësim i pasaktë) + NetInstallViewStep @@ -1550,12 +1669,12 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. OEMViewStep - + OEM Configuration Formësim OEM-i - + Set the OEM Batch Identifier to <code>%1</code>. Caktoni Identifikues partie OEM si <code>%1</code>. @@ -1563,117 +1682,117 @@ 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 @@ -1683,125 +1802,171 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. 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 + + + + PackageChooserPage + + + Form + Formular + + + + Product Name + Emër Produkti + + + + TextLabel + EtiketëTekst + + + + Long Product Description + Përshkrim i Gjatë i Produktit + + + + Package Selection + Përzgjedhje Pakete + + + + Please pick a product from the list. The selected product will be installed. + Ju lutemi, zgjidhni prej listës një produkt. Produkti i përzgjedhur do të instalohet. + + + + PackageChooserViewStep + + + Packages + Paketa + Page_Keyboard @@ -1834,47 +1999,86 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Cili është emri juaj? - + What name do you want to use to log in? Ç’emër doni të përdorni për t’u futur? - + Choose a password to keep your account safe. Zgjidhni një fjalëkalim për ta mbajtur llogarinë tuaj të parrezikuar. - + + <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>Jepeni të njëjtin fjalëkalim dy herë, që të kontrollohet për gabime shkrimi. Një fjalëkalim i mirë do të përmbante një përzierje shkronjash, numrash dhe shenjash pikësimi, do të duhej të ishte të paktën tetë shenja i gjatë, dhe do të duhej të ndryshohej periodikisht.</small> - + What is the name of this computer? Cili është emri i këtij kompjuteri? - + + Your Full Name + Emri Juaj i Plotë + + + + login + hyrje + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ky emër do të përdoret nëse e bëni kompjuterin të dukshëm për të tjerët në një rrjet.</small> - + + Computer Name + Emër Kompjuteri + + + + + Password + Fjalëkalim + + + + + Repeat Password + Ripërsëritni Fjalëkalimin + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Kur i vihet shenjë kësaj kutize, bëhet kontroll fortësie fjalëkalimi dhe s’do të jeni në gjendje të përdorni një fjalëkalim të dobët. + + + + Require strong passwords. + Kërko doemos fjalëkalimet të fuqishëm. + + + Log in automatically without asking for the password. Kryej hyrje vetvetiu, pa kërkuar fjalëkalimin. - + Use the same password for the administrator account. Përdor të njëjtin fjalëkalim për llogarinë e përgjegjësit. - + Choose a password for the administrator account. Zgjidhni një fjalëkalim për llogarinë e përgjegjësit. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Jepeni të njëjtin fjalëkalim dy herë, që të mund të kontrollohet për gabime shkrimi.</small> @@ -2039,107 +2243,107 @@ 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ëzim <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ëzim <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>esp</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. Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Që të formësoni një pjesë sistemi EFI, kthehuni mbrapsht dhe përzgjidhni ose krijoni një sistem kartelash FAT32 me flamurkën <strong>esp</strong> të aktivizuar dhe me pikë montimi <strong>%2</strong>.<br/><br/>Mund të vazhdoni pa rregulluar një pjesë sistemi EFI, por mundet që sistemi të mos arrijë dot të niset. - + EFI system partition flag not set S’është vënë flamurkë EFI pjese sistemi - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. Që të niset %1, është e domosdoshme një pjesë sistemi EFI.<br/><br/>Është formësuar një pjesë me pikë montimi <strong>%2</strong>, por pa i vënë flamurkën <strong>esp</strong>.<br/>Që t’ia vini, kthehuni mbrapsht dhe përpunoni pjesë.<br/><br/>Mund të vazhdoni pa i vënë flamurkën, por mundet që sistemi të mos arrijë dot të niset. - + 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 partitons to install on. S’ka pjesë ku të instalohet. @@ -2205,14 +2409,14 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. ProcessResult - + There was no output from the command. S’pati përfundim nga urdhri. - + Output: @@ -2221,52 +2425,52 @@ Përfundim: - + External command crashed. Urdhri i jashtëm u vithis. - + Command <i>%1</i> crashed. Urdhri <i>%1</i> u vithis. - + External command failed to start. Dështoi nisja e urdhrit të jashtëm. - + Command <i>%1</i> failed to start. Dështoi nisja e urdhrit <i>%1</i>. - + Internal error when starting command. Gabim i brendshëm kur niset urdhri. - + Bad parameters for process job call. Parametra të gabuar për thirrje akti procesi. - + External command failed to finish. S’u arrit të përfundohej urdhër i jashtëm. - + Command <i>%1</i> failed to finish in %2 seconds. Urdhri <i>%1</i> s’arriti të përfundohej në %2 sekonda. - + External command finished with errors. Urdhri i jashtë përfundoi me gabime. - + Command <i>%1</i> finished with exit code %2. Urdhri <i>%1</i> përfundoi me kod daljeje %2. @@ -2315,16 +2519,50 @@ Përfundim: (s’ka pikë montimi) - + Requirements checking for module <i>%1</i> is complete. Kontrolli i domosdoshmërive për modulin <i>%1</i> u plotësua. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + S’ka produkt + + + + No description provided. + S’u dha përshkrim. + + + + + + + + File not found + S’u gjet kartelë + + + + Path <pre>%1</pre> must be an absolute path. + Shtegu <pre>%1</pre> duhet të jetë shteg absolut. + + + + Could not create new random file <pre>%1</pre>. + S’u krijua dot kartelë e re kuturu <pre>%1</pre>. + + + + Could not read random file <pre>%1</pre>. + S’u lexua dot kartelë kuturu <pre>%1</pre>. + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Përfundim: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Ky kompjuter s’i plotëson kërkesat minimum për rregullimin e %1.<br/>Rregullimi s’mund të vazhdojë. <a href=\"#details\">Hollësi…</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ky kompjuter s’i plotëson kërkesat minimum për instalimin e %1.<br/>Instalimi s’mund të vazhdojë. <a href=\"#details\">Hollësi…</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. Ky kompjuter s’i plotëson disa nga domosdoshmëritë e rekomanduara për rregullimin e %1.<br/>Rregullimi mund të vazhdojë, por disa veçori mund të përfundojnë të çaktivizuara. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Ky kompjuter s’i plotëson disa nga domosdoshmëritë e rekomanduara për instalimin e %1.<br/>Instalimi mund të vazhdojë, por disa veçori mund të përfundojnë të çaktivizuara. - + This program will ask you some questions and set up %2 on your computer. Ky program do t’ju bëjë disa pyetje dhe do të rregullojë %2 në kompjuterin tuaj. - + For best results, please ensure that this computer: Për përfundime më të mira, ju lutemi, garantoni që ky kompjuter: - + System requirements Sistem i domosdoshëm @@ -2595,29 +2833,29 @@ Përfundim: SetHostNameJob - + Set hostname %1 Cakto strehëemër %1 - + Set hostname <strong>%1</strong>. Cakto strehëemër <strong>%1</strong>. - + Setting hostname %1. Po caktohet strehëemri %1. - - + + Internal Error Gabim i Brendshëm - - + + Cannot write hostname to target system S’shkruhet dot strehëemër te sistemi i synuar @@ -2758,22 +2996,22 @@ Përfundim: rootMountPoint është %1 - + Cannot disable root account. S’mund të çaktivizohet llogaria rrënjë. - + passwd terminated with error code %1. passwd përfundoi me kod gabimi %1. - + Cannot set password for user %1. S’caktohet dot fjalëkalim për përdoruesin %1. - + usermod terminated with error code %1. usermod përfundoi me kod gabimi %1. @@ -2796,22 +3034,22 @@ Përfundim: Shteg i gabuar: %1 - + Cannot set timezone. S’caktohet dot zonë kohore. - + Link creation failed, target: %1; link name: %2 Krijimi i lidhjes dështoi, objektiv: %1; emër lidhjeje: %2 - + Cannot set timezone, S’caktohet dot zonë kohore, - + Cannot open /etc/timezone for writing S’hapet dot /etc/timezone për shkrim @@ -2857,22 +3095,22 @@ Përfundim: TrackingInstallJob - + Installation feedback Përshtypje mbi instalimin - + Sending installation feedback. Po dërgohen përshtypjet mbi instalimin - + Internal error in install-tracking. Gabim i brendshëm në shquarjen e instalimit. - + HTTP request timed out. Kërkesës HTTP i mbaroi koha. @@ -2880,28 +3118,28 @@ Përfundim: TrackingMachineNeonJob - + 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. @@ -2934,17 +3172,17 @@ Përfundim: Instalimi i gjurmimit e ndihmon %1 të shohë se sa përdorues ka, në çfarë hardware-i e instalojnë %1 dhe (përmes dy mundësive të fundit më poshtë), të marrë të dhëna të vazhdueshme rre aplikacioneve të parapëlqyera. Që të shihni se ç’dërgohet, ju lutemi, klikoni ikonën e ndihmës në krah të çdo fushe. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Duke përzgjedhur këtë, do të dërgoni të dhëna mbi instalimin dhe hardware-in tuaj. Këto të dhëna do të <b>dërgohen vetëm një herë</b>, pasi të përfundojë instalimi. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Duke përzgjedhur këtë, do të dërgoni <b>periodikisht</b> te %1 të dhëna mbi instalimin, hardware-in dhe aplikacionet tuaja. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Duke përzgjedhur këtë, do të dërgoni <b>rregullisht</b> te %1 të dhëna mbi instalimin, hardware-in, aplikacionet dhe rregullsitë tuaja në përdorim. @@ -2952,7 +3190,7 @@ Përfundim: TrackingViewStep - + Feedback Përshtypje @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Emri juaj i përdoruesit përmban shenja të pavlefshme. Lejohen vetëm shkronja të vogla dhe shifra. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Lejohen vetëm shkronja, 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ë. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Strehëemri juaj përmban shenja të pavlefshme. Lejohen vetëm shkronja të vogla dhe shifra. - - - - + Your passwords do not match! Fjalëkalimet tuaj s’përputhen! @@ -3004,11 +3246,24 @@ Përfundim: UsersViewStep - + Users Përdorues + + VariantModel + + + Key + Kyç + + + + Value + Vlerë + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Përfundim: Formular - + + + Select application and system language + Përzgjidhni gjuhë aplikacioni dhe sistemi + + + + Open donations website + Hap sajtin e dhurimeve + + + + &Donate + &Dhuroni + + + + Open help and support website + Hap sajtin e ndihmës dhe asistencës + + + + Open issues and bug-tracking website + Hap sajtin ndjekjes së problemeve dhe të metave + + + + Open release notes website + Hapni sajtin e shënimeve mbi hedhjet në qarkullim + + + &Release notes Shënime &versioni - + &Known issues &Probleme të njohura - - - Select language - Përzgjidhni gjuhë - - - + &Support &Asistencë @@ -3096,42 +3376,42 @@ Përfundim: &Mbi - + <h1>Welcome to the %1 installer.</h1> <h1>Mirë se vini te instaluesi i %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Mirë se vini te instaluesi Calamares për %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>Mirë se vini te programi i rregullimit Calamares për %1.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>Mirë se vini te rregullimi i %1.</h1> - + About %1 setup Mbi rregullimin e %1 - + About %1 installer Rreth instaluesit %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-2019 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/>për %3</strong><br/><br/>Të drejta Kopjimi 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Të drejta Kopjimi 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Falënderime për <a href="https://calamares.io/team/">ekipin e Calamares</a> dhe <a href="https://www.transifex.com/calamares/calamares/">ekipin e përkthyesve të Calamares</a>.<br/><br/>Zhvillimi i <a href="https://calamares.io/">Calamares</a> sponsorizohet nga <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Asistencë %1 @@ -3139,7 +3419,7 @@ Përfundim: WelcomeViewStep - + Welcome Mirë se vini diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index a63b56a94..a54ea6c72 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition Подизна партиција - + System Partition Системска партиција - + Do not install a boot loader Не инсталирај подизни учитавач - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Форма - + GlobalStorage - + JobQueue - + Modules Модули - + Type: Тип: - - + + none ништа - + Interface: Сучеље: - + Tools Алатке - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Инсталирај @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Завршено @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Покрени команду %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Извршавам команду %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Извршавам %1 операцију. - + Bad working directory path Лоша путања радног директоријума - + Working directory %1 for python job %2 is not readable. Радни директоријум %1 за питонов посао %2 није читљив. - + Bad main script file Лош фајл главне скрипте - + Main script file %1 for python job %2 is not readable. Фајл главне скрипте %1 за питонов посао %2 није читљив. - + Boost.Python error in job "%1". Boost.Python грешка у послу „%1“. @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Назад - - + + &Next &Следеће - - + + &Cancel &Откажи - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. Да ли стварно желите да прекинете текући процес инсталације? Инсталер ће бити затворен и све промене ће бити изгубљене. - + + &Yes - + + &No - + &Close - + Continue with setup? Наставити са подешавањем? - + 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> - + &Install now &Инсталирај сада - + Go &back Иди &назад - + &Done - + The installation is complete. Close the installer. - + Error Грешка - + Installation Failed Инсталација није успела @@ -371,40 +402,49 @@ 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 - + %1 Setup Program - + %1 Installer %1 инсталер - + Show debug information @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Ручно партиционисање</strong><br/>Сами можете креирати или мењати партције. - + Boot loader location: Подизни учитавач на: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Тренутно: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. 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. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. Није могуће писати у "Судоерс" директоријуму. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Није могуће променити мод (chmod) над "судоерс" фајлом - + Cannot open groups file for reading. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Скрипта @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License Лиценца @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. Системски језик биће постављен на %1 - + The numbers and dates locale will be set to %1. - + Region: Регион: - + Zone: Зона: - - + + &Change... &Измени... - + Set timezone to %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + Грешка поставе + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Назив - + Description Опис - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. Како се зовете? - + What name do you want to use to log in? - + 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> - + What is the name of this computer? Како ћете звати ваш рачунар? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ The installer will quit and all changes will be lost. 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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. - + For best results, please ensure that this computer: За најбоље резултате обезбедите да овај рачунар: - + System requirements Системски захтеви @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error Интерна грешка - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Име вашег "домаћина" - hostname је прекратко. - + Your hostname is too long. Ваше име домаћина је предуго - hostname - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Ваше име "домаћина" - hostname садржи недозвољене карактере. Могуће је користити само слова, бројеве и цртице. - - - - + Your passwords do not match! Лозинке се не поклапају! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users Корисници + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: Форма - - &Release notes - - - - - &Known issues - &Познати проблеми - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + &Познати проблеми + + + &Support По&дршка @@ -3092,42 +3371,42 @@ Output: &О програму - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support %1 подршка @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Добродошли diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index 0d2e2bf6f..a610f2266 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record na %1 - + Boot Partition Particija za pokretanje sistema - + System Partition Sistemska particija - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: Vrsta: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Instaliraj @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Gotovo @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Neispravna putanja do radne datoteke - + Working directory %1 for python job %2 is not readable. Nemoguće pročitati radnu datoteku %1 za funkciju %2 u Python-u. - + Bad main script file Neispravan glavna datoteka za skriptu - + Main script file %1 for python job %2 is not readable. Glavna datoteka za skriptu %1 za Python funkciju %2 se ne može pročitati. - + Boost.Python error in job "%1". Boost.Python greška u funkciji %1 @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Nazad - - + + &Next &Dalje - - + + &Cancel &Prekini - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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? Instaler će se zatvoriti i sve promjene će biti izgubljene. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error Greška - + Installation Failed Neuspješna instalacija @@ -371,40 +402,49 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CalamaresPython::Helper - + Unknown exception type Nepoznat tip izuzetka - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 Instaler - + Show debug information @@ -435,7 +475,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Boot loader location: @@ -447,8 +487,8 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - - + + Current: @@ -463,96 +503,96 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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. @@ -620,7 +660,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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 @@ -957,7 +997,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + <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. @@ -1188,66 +1228,74 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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 je priključen na izvor struje - + The system is not plugged in to a power source. - + is connected to the Internet ima vezu sa internetom - + The system is not connected to the Internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. InteractiveTerminalViewStep - + Script @@ -1324,22 +1388,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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 &Prekini - + &OK @@ -1352,27 +1416,27 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LicenseViewStep - + License @@ -1388,64 +1452,64 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: Regija: - + Zone: Zona: - - + + &Change... - + Set timezone to %1/%2.<br/> Postavi vremensku zonu na %1/%2.<br/> @@ -1487,38 +1551,92 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocaleViewStep - - Loading location data... - Očitavam podatke o lokaciji... - - - + Location Lokacija + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Naziv - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + 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 + + Page_Keyboard @@ -1833,47 +1997,86 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Kako se zovete? - + What name do you want to use to log in? Koje ime želite koristiti da se prijavite? - + Choose a password to keep your account safe. Odaberite lozinku da biste zaštitili Vaš korisnički nalog. - + + <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>Upišite istu lozinku dvaput, da ne bi došlo do greške kod kucanja. Dobra lozinka se sastoji od mešavine slova, brojeva i interpunkcijskih znakova; trebala bi biti duga bar osam znakova, i trebalo bi da ju menjate redovno</small> - + What is the name of this computer? Kako želite nazvati ovaj računar? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Ovo ime će biti vidljivo drugim računarima na mreži</small> - + + Computer Name + + + + + + 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>Unesite istu lozinku dvaput, da ne bi došlp do greške kod kucanja</small> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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. Pogrešni parametri kod poziva funkcije u procesu. - + 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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. - + For best results, please ensure that this computer: Za najbolje rezultate, uvjetite se da li ovaj računar: - + System requirements @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 Postavi ime računara %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2754,22 +2991,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2792,22 +3029,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! Vaše lozinke se ne poklapaju @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users Korisnici + + VariantModel + + + Key + + + + + Value + Vrednost + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3092,42 +3371,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Dobrodošli diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index 76f8b360c..a40c8849c 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -4,43 +4,43 @@ 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. - Systemets <strong>uppstartsmiljö</strong>.<br><br>Äldre x86-system stödjer endast <strong>BIOS</strong>.<br>Moderna system stödjer vanligen <strong>EFI</strong>, men kan också vara i kompabilitetsläge för BIOS. + Systemets <strong>startmiljö</strong>.<br><br>Äldre x86-system stöder endast <strong>BIOS</strong>.<br>Moderna system stöder vanligen <strong>EFI</strong>, men kan också vara i kompatibilitetsläge för 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. - Detta system startades med en <strong>EFI-miljö</strong>.<br><br>För att ställa in uppstart från en EFI-miljö måste en uppstartsladdare användas, t.ex. <strong>GRUB</strong> eller <strong>systemd-boot</strong> eller en <strong>EFI-systempartition</strong>. Detta sker automatiskt, såvida du inte väljer att partitionera manuellt. Då måste du själv installera en uppstartsladdare. + Detta system startades med en <strong>EFI-miljö</strong>.<br><br>För att ställa in start från en EFI-miljö måste en starthanterare användas, t.ex. <strong>GRUB</strong> eller <strong>systemd-boot</strong> på en <strong>EFI-systempartition</strong>. Detta sker automatiskt, såvida du inte väljer att partitionera manuellt. Då måste du själv installera en starthanterare. 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. - Detta system startades med en <strong>BIOS-miljö</strong>. <br><br>För att ställa in uppstart från en BIOS-miljö måste en uppstartsladdare som t.ex. <strong>GRUB</strong> installeras, antingen i början av en partition eller på <strong>huvudstartsektorn (MBR)</strong> i början av partitionstabellen. Detta sker automatiskt, såvida du inte väljer manuell partitionering. Då måste du själv installera en uppstartsladdare. + Detta system startades med en <strong>BIOS-miljö</strong>. <br><br>För att ställa in start från en BIOS-miljö måste en starthanterare som t.ex. <strong>GRUB</strong> installeras, antingen i början av en partition eller på <strong>huvudstartsektorn (MBR)</strong> i början av partitionstabellen. Detta sker automatiskt, såvida du inte väljer manuell partitionering. Då måste du själv installera en starthanterare. BootLoaderModel - + Master Boot Record of %1 Master Boot Record på %1 - + Boot Partition - Uppstartspartition + Startpartition - + System Partition Systempartition - + Do not install a boot loader - Installera inte en uppstartsladdare + Installera inte någon starthanterare - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Form - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Moduler - + Type: Typ: - - + + none ingen - + Interface: Gränssnitt: - + Tools Verktyg - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Avlusningsinformation @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install Installera @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Klar @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - Kör kommando %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Kör kommando %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. Kör %1-operation - + Bad working directory path Arbetskatalogens sökväg är ogiltig - + Working directory %1 for python job %2 is not readable. Arbetskatalog %1 för pythonuppgift %2 är inte läsbar. - + Bad main script file Ogiltig huvudskriptfil - + Main script file %1 for python job %2 is not readable. Huvudskriptfil %1 för pythonuppgift %2 är inte läsbar. - + Boost.Python error in job "%1". Boost.Python-fel i uppgift "%'1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + Väntar på %n modul(er).Väntar på %n modul(er). - + (%n second(s)) - + (%n sekund(er))(%n sekund(er)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &Bakåt - - + + &Next &Nästa - - + + &Cancel Avbryt - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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. + <br/>The following modules could not be loaded: + <br/>Följande moduler kunde inte hämtas: + + + + 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + Cancel setup? - + 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. - + 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? Alla ändringar kommer att gå förlorade. - + + &Yes - + + &No - + &Close - + Continue with setup? Fortsätt med installation? - + 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> + %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> - + &Install now &Installera nu - + Go &back Gå &bakåt - + &Done - + The installation is complete. Close the installer. - + Error Fel - + Installation Failed Installationen misslyckades @@ -371,40 +402,49 @@ Alla ändringar kommer att gå förlorade. CalamaresPython::Helper - + Unknown exception type Okänd undantagstyp - + unparseable Python error Otolkbart Pythonfel - + unparseable Python traceback Otolkbar Python-traceback - + Unfetchable Python error. Ohämtbart Pythonfel + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1-installationsprogram - + Show debug information Visa avlusningsinformation @@ -435,9 +475,9 @@ Alla ändringar kommer att gå förlorade. <strong>Manuell partitionering</strong><br/>Du kan själv skapa och ändra storlek på partitionerna. - + Boot loader location: - Sökväg till uppstartshanterare: + Sökväg till starthanterare: @@ -447,8 +487,8 @@ Alla ändringar kommer att gå förlorade. - - + + Current: Nuvarande: @@ -463,96 +503,96 @@ Alla ändringar kommer att gå förlorade. <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. - + <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 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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ Alla ändringar kommer att gå förlorade. 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. @@ -620,7 +660,7 @@ Alla ändringar kommer att gå förlorade. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ Alla ändringar kommer att gå förlorade. 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. @@ -951,13 +991,13 @@ Alla ändringar kommer att gå förlorade. Failed to open %1 - + Kunde inte öppna %1 DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ Alla ändringar kommer att gå förlorade. - + <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. @@ -1188,66 +1228,74 @@ Alla ändringar kommer att gå förlorade. 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 är ansluten till en strömkälla - + The system is not plugged in to a power source. Systemet är inte anslutet till någon strömkälla. - + is connected to the Internet är ansluten till internet - + The system is not connected to the Internet. Systemet är inte anslutet till internet. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Installationsprogammet körs inte med administratörsrättigheter. - + The screen is too small to display the setup program. - + The screen is too small to display the installer. Skärmen är för liten för att visa installationshanteraren. + + HostInfoJob + + + Collecting information about your machine. + + + IDJob @@ -1274,6 +1322,22 @@ Alla ändringar kommer att gå förlorade. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ Alla ändringar kommer att gå förlorade. InteractiveTerminalViewStep - + Script Skript @@ -1324,22 +1388,22 @@ Alla ändringar kommer att gå förlorade. LCLocaleDialog - + System locale setting Systemspråksinställning - + 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>. Systemspråket påverkar vilket språk och teckenuppsättning somliga kommandoradsprogram använder.<br/>Det nuvarande språket är <strong>%1</strong>. - + &Cancel &Avsluta - + &OK &Okej @@ -1352,27 +1416,27 @@ Alla ändringar kommer att gå förlorade. Formulär - + I accept the terms and conditions above. Jag accepterar villkoren och avtalet ovan. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Licensavtal</h1>Denna installationsprocedur kommer att installera proprietär mjukvara som omfattas av licensvillkor. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Läs igenom End User Agreements (EULA:s) ovan.<br/>Om du inte accepterar villkoren kan inte installationsproceduren fortsätta. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Licensavtal</h1>Denna installationsprocedur kan installera proprietär mjukvara som omfattas av licensvillkor för att tillhandahålla ytterligare funktioner och förbättra användarupplevelsen. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ Alla ändringar kommer att gå förlorade. LicenseViewStep - + License Licens @@ -1388,64 +1452,64 @@ Alla ändringar kommer att gå förlorade. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1-drivrutin</strong><br/>från %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 grafikdrivrutin</strong><br/><font color="Grey">från %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 insticksprogram</strong><br/><font color="Grey">från %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 codec</strong><br/><font color="Grey">från %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1-paket</strong><br/><font color="Grey">från %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">från %2</font> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ Alla ändringar kommer att gå förlorade. LocalePage - + The system language will be set to %1. Systemspråket kommer ändras till %1. - + The numbers and dates locale will be set to %1. - + Region: Region: - + Zone: Zon: - - + + &Change... Ändra... - + Set timezone to %1/%2.<br/> Sätt tidszon till %1/%2.<br/> @@ -1487,38 +1551,92 @@ Alla ändringar kommer att gå förlorade. LocaleViewStep - - Loading location data... - Laddar platsdata... - - - + Location Plats + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Namn - + Description Beskrivning - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Nätverksinstallation. (Inaktiverad: Kan inte hämta paketlistor, kontrollera nätverksanslutningen) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ Alla ändringar kommer att gå förlorade. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ Alla ändringar kommer att gå förlorade. 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 @@ -1682,125 +1800,171 @@ Alla ändringar kommer att gå förlorade. - + 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 + Form + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + Page_Keyboard @@ -1833,47 +1997,86 @@ Alla ändringar kommer att gå förlorade. Vad heter du? - + What name do you want to use to log in? Vilket namn vill du använda för att logga in? - + Choose a password to keep your account safe. Välj ett lösenord för att hålla ditt konto säkert. - + + <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>Ange samma lösenord två gånger, så att det kan kontrolleras för stavfel. Ett bra lösenord innehåller en blandning av bokstäver, nummer och interpunktion, bör vara minst åtta tecken långt, och bör ändras regelbundet.</small> - + What is the name of this computer? Vad är namnet på datorn? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Detta namn används om du gör datorn synlig för andra i ett nätverk.</small> - + + Computer Name + + + + + + 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. Logga in automatiskt utan att fråga efter lösenord. - + Use the same password for the administrator account. Använd samma lösenord för administratörskontot. - + Choose a password for the administrator account. Välj ett lösenord för administratörskontot. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Ange samma lösenord två gånger, så att det kan kontrolleras för stavfel.</small> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ Alla ändringar kommer att gå förlorade. 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. Ogiltiga parametrar för processens uppgiftsanrop. - + 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2497,12 +2734,12 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. - + Ändra <strong>%2MiB</strong>-partitionen <strong>%1</strong> till <strong>%3MB</strong>. Resizing %2MiB partition %1 to %3MiB. - + Ändrar storlek på partitionen %1 från %2MB till %3MB. @@ -2540,37 +2777,37 @@ Output: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> - + Datorn uppfyller inte minimikraven för inställning av %1.<br/>Inga inställningar kan inte göras. <a href="#details">Detaljer...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Denna dator uppfyller inte minimikraven för att installera %1.<br/>Installationen kan inte fortsätta. <a href="#details">Detaljer...</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. - + Några av kraven för inställning av %1 uppfylls inte av datorn.<br/>Inställningarna kan ändå göras men vissa funktioner kommer kanske inte att kunna användas. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. 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. - + This program will ask you some questions and set up %2 on your computer. Detta program kommer att ställa dig några frågor och installera %2 på din dator. - + For best results, please ensure that this computer: För bästa resultat, vänligen se till att datorn: - + System requirements Systemkrav @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 Ange värdnamn %1 - + Set hostname <strong>%1</strong>. Ange värdnamn <strong>%1</strong>. - + Setting hostname %1. Anger värdnamn %1. - - + + Internal Error Internt fel - - + + Cannot write hostname to target system Kan inte skriva värdnamn till målsystem @@ -2645,7 +2882,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Misslyckades med att skriva tangentbordskonfiguration till den existerande mappen /etc/default. @@ -2754,22 +2991,22 @@ Output: rootMonteringspunkt är %1 - + Cannot disable root account. - + passwd terminated with error code %1. - + passwd stoppades med felkod %1. - + Cannot set password for user %1. Kan inte ställa in lösenord för användare %1. - + usermod terminated with error code %1. usermod avslutade med felkod %1. @@ -2792,22 +3029,22 @@ Output: Ogiltig sökväg: %1 - + Cannot set timezone. Kan inte ställa in tidszon. - + Link creation failed, target: %1; link name: %2 Skapande av länk misslyckades, mål: %1; länknamn: %2 - + Cannot set timezone, Kan inte ställa in tidszon, - + Cannot open /etc/timezone for writing Kunde inte öppna /etc/timezone för skrivning @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2912,7 +3149,7 @@ Output: Placeholder - + Platshållare @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,55 +3193,72 @@ Output: 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Ditt användarnamn innehåller otillåtna tecken! Endast små bokstäver och siffror tillåts. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Ditt värdnamn innehåller otillåtna tecken! Endast bokstäver, siffror och bindestreck tillåts. - - - - + Your passwords do not match! - Dina lösenord matchar inte! + Lösenorden överensstämmer inte! UsersViewStep - + Users Användare + + VariantModel + + + Key + Nyckel + + + + Value + Värde + + VolumeGroupBaseDialog @@ -3066,68 +3320,93 @@ Output: Formulär - - &Release notes - Versionsinfomation - - - - &Known issues - &Kända problem - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + Besök webbplatsen för hjälp och support + + + + Open issues and bug-tracking website + Besök webbplatsen för problem och felsökning + + + + Open release notes website + Besök webbplatsen för versionsinformation + + + + &Release notes + Versionsinformation, &R + + + + &Known issues + &Kända problem + + + &Support - %Support + &Support &About - Om + Om, &A - + <h1>Welcome to the %1 installer.</h1> - <h1>V&auml;lkommen till %1-installeraren.</h1> + <h1>Välkommen till %1-installeraren.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Välkommen till installationsprogrammet Calamares för %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + Om inställningarna för %1 - + About %1 installer Om %1-installationsprogrammet - + <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-2019 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. - + %1 support %1-support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome Välkommen diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index dffcb5622..0c24d7669 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Master Boot Record ของ %1 - + Boot Partition พาร์ทิชัน Boot - + System Partition พาร์ทิชันระบบ - + Do not install a boot loader ไม่ต้องติดตั้งบูตโหลดเดอร์ - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form ฟอร์ม - + GlobalStorage GlobalStorage - + JobQueue JobQueue - + Modules Modules - + Type: ประเภท: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information ข้อมูลดีบั๊ก @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install ติดตั้ง @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done เสร็จสิ้น @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - ทำคำสั่ง %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 กำลังเรียกใช้คำสั่ง %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,159 +226,175 @@ Calamares::ViewManager - + + &Back &B ย้อนกลับ - - + + &Next &N ถัดไป - - + + &Cancel &C ยกเลิก - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. คุณต้องการยกเลิกกระบวนการติดตั้งที่กำลังดำเนินการอยู่หรือไม่? ตัวติดตั้งจะสิ้นสุดการทำงานและไม่บันทึกการเปลี่ยนแปลงที่ได้ดำเนินการก่อนหน้านี้ - + + &Yes - + + &No - + &Close - + Continue with setup? ดำเนินการติดตั้งต่อหรือไม่? - + 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> - + &Install now &ติดตั้งตอนนี้ - + Go &back กลั&บไป - + &Done - + The installation is complete. Close the installer. - + Error ข้อผิดพลาด - + Installation Failed การติดตั้งล้มเหลว @@ -371,40 +402,49 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type ข้อผิดพลาดไม่ทราบประเภท - + unparseable Python error ข้อผิดพลาด unparseable Python - + unparseable Python traceback ประวัติย้อนหลัง unparseable Python - + Unfetchable Python error. ข้อผิดพลาด Unfetchable Python + + CalamaresUtils + + + Install log posted to: +%1 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer ตัวติดตั้ง %1 - + Show debug information แสดงข้อมูลการดีบั๊ก @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. 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. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. ไม่สามารถเขียนไดเรคทอรี Sudoers ได้ - + Cannot create sudoers file for writing. ไม่สามารถสร้างไฟล์ sudoers เพื่อเขียนได้ - + Cannot chmod sudoers file. ไม่สามารถ chmod ไฟล์ sudoers - + Cannot open groups file for reading. ไม่สามารถเปิดไฟล์ groups เพื่ออ่านได้ @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting การตั้งค่า locale ระบบ - + 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 &C ยกเลิก - + &OK @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. แบบฟอร์ม - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: ภูมิภาค: - + Zone: โซน: - - + + &Change... &C เปลี่ยนแปลง... - + Set timezone to %1/%2.<br/> ตั้งโซนเวลาเป็น %1/%2<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - กำลังโหลดข้อมูลตำแหน่ง... - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name ชื่อ - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,117 +1680,117 @@ 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 @@ -1682,125 +1800,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1833,47 +1997,86 @@ The installer will quit and all changes will be lost. ชื่อของคุณคือ? - + What name do you want to use to log in? ชื่อที่คุณต้องการใช้ในการล็อกอิน? - + 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>ใส่รหัสผ่านเดียวกันซ้ำ 2 ครั้ง เพื่อเป็นการตรวจสอบข้อผิดพลาดจากการพิมพ์ รหัสผ่านที่ดีจะต้องมีการผสมกันระหว่าง ตัวอักษรภาษาอังกฤษ ตัวเลข และสัญลักษณ์ ควรมีความยาวอย่างน้อย 8 ตัวอักขระ และควรมีการเปลี่ยนรหัสผ่านเป็นประจำ</small> - + What is the name of this computer? คอมพิวเตอร์เครื่องนี้ชื่อ? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>ชื่อนี้จะถูกใช้ถ้าคุณตั้งค่าให้เครื่องอื่นๆ มองเห็นคอมพิวเตอร์ของคุณบนเครือข่าย</small> - + + Computer Name + + + + + + 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>ใส่รหัสผ่านเดิมซ้ำ 2 ครั้ง เพื่อเป็นการตรวจสอบข้อผิดพลาดที่เกิดจากการพิมพ์</small> @@ -2038,107 +2241,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2204,65 +2407,65 @@ The installer will quit and all changes will be lost. 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. @@ -2311,16 +2514,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2540,37 +2777,37 @@ Output: 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> ขณะที่กำลังติดตั้ง ตัวติดตั้งฟ้องว่า คอมพิวเตอร์นี้มีความต้องการไม่เพียงพอที่จะติดตั้ง %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. - + 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 ไว้ในคอมพิวเตอร์ของคุณ - + For best results, please ensure that this computer: สำหรับผลลัพธ์ที่ดีขึ้น โปรดตรวจสอบให้แน่ใจว่าคอมพิวเตอร์เครื่องนี้: - + System requirements ความต้องการของระบบ @@ -2591,29 +2828,29 @@ Output: SetHostNameJob - + Set hostname %1 ตั้งค่าชื่อโฮสต์ %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error ข้อผิดพลาดภายใน - - + + Cannot write hostname to target system ไม่สามารถเขียนชื่อโฮสต์ไปที่ระบบเป้าหมาย @@ -2754,22 +2991,22 @@ Output: rootMountPoint คือ %1 - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. ไม่สามารถตั้งค่ารหัสผ่านสำหรับผู้ใช้ %1 - + usermod terminated with error code %1. usermod จบด้วยโค้ดข้อผิดพลาด %1 @@ -2792,22 +3029,22 @@ Output: path ไม่ถูกต้อง: %1 - + Cannot set timezone. ไม่สามารถตั้งค่าโซนเวลาได้ - + Link creation failed, target: %1; link name: %2 การสร้างการเชื่อมโยงล้มเหลว เป้าหมาย: %1 ชื่อการเชื่อมโยง: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2853,22 +3090,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2876,28 +3113,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2930,17 +3167,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2948,7 +3185,7 @@ Output: TrackingViewStep - + Feedback @@ -2956,43 +3193,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - ชื่อผู้ใช้ของคุณมีตัวอักษรที่ไม่ถูกต้อง ใช้ได้เฉพาะตัวอักษรภาษาอังกฤษตัวเล็กและตัวเลขเท่านั้น + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. ชื่อโฮสต์ของคุณสั้นเกินไป - + Your hostname is too long. ชื่อโฮสต์ของคุณยาวเกินไป - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - ชื่อโฮสต์ของคุณมีตัวอักษรที่ไม่ถูกต้อง ใช้ได้เฉพาะตัวอักษรภาษาอังกฤษ ตัวเลข และขีดกลาง "-" เท่านั้น - - - - + Your passwords do not match! รหัสผ่านของคุณไม่ตรงกัน! @@ -3000,11 +3241,24 @@ Output: UsersViewStep - + Users ผู้ใช้ + + VariantModel + + + Key + + + + + Value + ค่า + + VolumeGroupBaseDialog @@ -3066,23 +3320,48 @@ Output: แบบฟอร์ม - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3092,42 +3371,42 @@ Output: &A เกี่ยวกับ - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support @@ -3135,7 +3414,7 @@ Output: WelcomeViewStep - + Welcome ยินดีต้อนรับ diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 469a247a3..0fc3c054f 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 %1 Üzerine Önyükleyici Kur - + Boot Partition Önyükleyici Disk Bölümü - + System Partition Sistem Disk Bölümü - + Do not install a boot loader Bir önyükleyici kurmayın - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page Boş Sayfa @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form Biçim - + GlobalStorage KüreselDepo - + JobQueue İşKuyruğu - + Modules Eklentiler - + Type: Tipi: - - + + none hiçbiri - + Interface: Arayüz: - + Tools Araçlar - + + Reload Stylesheet + Stil Sayfasını Yeniden Yükle + + + + Widget Tree + Gereç Ağacı + + + Debug information Hata ayıklama bilgisi @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up Kur - + Install Sistem Kuruluyor @@ -123,7 +133,7 @@ İş hatası (%1) - + Programmed job failure was explicitly requested. Programlanmış iş arızası açıkça istendi. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done Sistem kurulumu tamamlandı, kurulum aracından çıkabilirsiniz. @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - %1 Komutu çalışıyor %2 + Run command '%1' in target system. + Hedef sistemde '%1' komutunu çalıştırın. - + + Run command '%1'. + '%1' komutunu çalıştırın. + + + Running command %1 %2 %1 Komutu çalışıyor %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. %1 işlemleri yapılıyor. - + Bad working directory path Dizin yolu kötü çalışıyor - + Working directory %1 for python job %2 is not readable. %2 python işleri için %1 dizinleme çalışırken okunamadı. - + Bad main script file Sorunlu betik dosyası - + Main script file %1 for python job %2 is not readable. %2 python işleri için %1 sorunlu betik okunamadı. - + Boost.Python error in job "%1". Boost.Python iş hatası "%1". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). %n modülü bekleniyor.%n modül(leri) bekleniyor. - + (%n second(s)) (%n saniye(ler))(%n saniye) - + System-requirements checking is complete. Sistem gereksinimleri kontrolü tamamlandı. @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back &Geri - - + + &Next &Sonraki - - + + &Cancel &Vazgeç - - + 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. - + Setup Failed Kurulum Başarısız - + + Would you like to paste the install log to the web? + Yükleme günlüğünü web'e yapıştırmak ister misiniz? + + + + 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 installation? Kuruluma devam edilsin 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> - + &Set up now &Şimdi kur - + &Set up &Kur - + &Install &Yükle - + Setup is complete. Close the setup program. Kurulum tamamlandı. Kurulum programını kapatın. - + 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? Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - + + &Yes &Evet - + + &No &Hayır - + &Close &Kapat - + Continue with setup? Kuruluma devam et? - + 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> - + &Install now &Şimdi yükle - + Go &back Geri &git - + &Done &Tamam - + The installation is complete. Close the installer. Yükleme işi tamamlandı. Sistem yükleyiciyi kapatın. - + Error Hata - + Installation Failed Kurulum Başarısız @@ -372,40 +403,50 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CalamaresPython::Helper - + Unknown exception type Bilinmeyen Özel Durum Tipi - + unparseable Python error Python hata ayıklaması - + unparseable Python traceback Python geri çekme ayıklaması - + Unfetchable Python error. Okunamayan Python hatası. + + CalamaresUtils + + + Install log posted to: +%1 + Gönderilen log yüklemesi: +%1 + + CalamaresWindow - + %1 Setup Program %1 Kurulum Uygulaması - + %1 Installer %1 Yükleniyor - + Show debug information Hata ayıklama bilgisini göster @@ -436,7 +477,7 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. <strong>Elle bölümleme</strong><br/>Bölümler oluşturabilir ve boyutlandırabilirsiniz. - + Boot loader location: Önyükleyici konumu: @@ -448,8 +489,8 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - - + + Current: Geçerli: @@ -465,96 +506,96 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. <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. - + <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> - + 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. - + 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ı - - - - + + + + <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 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. @@ -603,18 +644,18 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CommandList - - + + Could not run command. Komut çalıştırılamadı. - + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. Komut, ana bilgisayar ortamında çalışır ve kök yolunu bilmesi gerekir, ancak kökMontajNoktası tanımlanmamıştır. - + The command needs to know the user's name, but no username is defined. Komutun kullanıcının adını bilmesi gerekir, ancak kullanıcı adı tanımlanmamıştır. @@ -622,7 +663,7 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. ContextualProcessJob - + Contextual Processes Job Bağlamsal Süreç İşleri @@ -802,17 +843,17 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. 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ı. @@ -959,7 +1000,7 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. DummyCppJob - + Dummy C++ Job Dummy C++ Job @@ -1126,12 +1167,12 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. <html><head/><body><p>Bu kutucuk işaretlenerek <span style="font-style:italic;">Tamam</span> butonu tıklandığında ya da sistem yükleyici kapatıldığında bilgisayarınız yeniden başlatılacaktır.</p></body></html> - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. <h1>Kurulum Başarısız</h1><br/>%1 bilgisayarınıza kurulamadı.<br/>Hata mesajı: %2. - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. <h1>Yükleme Başarısız</h1><br/>%1 bilgisayarınıza yüklenemedi.<br/>Hata mesajı çıktısı: %2. @@ -1190,67 +1231,75 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. GeneralRequirements - + has at least %1 GiB available drive space En az %1 GB disk sürücü alanı var - + There is not enough drive space. At least %1 GiB is required. Yeterli disk sürücü alanı mevcut değil. En az %1 GB disk alanı gereklidir. - + has at least %1 GiB working memory En az %1 GB bellek var - + The system does not have enough working memory. At least %1 GiB is required. Yeterli ram bellek gereksinimi karşılanamıyor. En az %1 GB ram bellek gereklidir. - + is plugged in to a power source Bir güç kaynağına takılı olduğundan... - + The system is not plugged in to a power source. Sistem güç kaynağına bağlı değil. - + is connected to the Internet İnternete bağlı olduğundan... - + The system is not connected to the Internet. Sistem internete bağlı değil. - + The setup program is not running with administrator rights. Kurulum uygulaması yönetici haklarıyla çalışmıyor. - + The installer is not running with administrator rights. Sistem yükleyici yönetici haklarına sahip olmadan çalışmıyor. - + The screen is too small to display the setup program. Kurulum uygulamasını görüntülemek için ekran çok küçük. - + The screen is too small to display the installer. Ekran, sistem yükleyiciyi görüntülemek için çok küçük. + + HostInfoJob + + + Collecting information about your machine. + Makineniz hakkında bilgi toplama. + + IDJob @@ -1277,6 +1326,22 @@ Sistem güç kaynağına bağlı değil. <code>%1</code> dosyasına yazılamadı. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + Mkinitcpio ile initramfs oluşturuluyor. + + + + InitramfsJob + + + Creating initramfs. + Initramfs oluşturuluyor. + + InteractiveTerminalPage @@ -1298,7 +1363,7 @@ Sistem güç kaynağına bağlı değil. InteractiveTerminalViewStep - + Script Betik @@ -1327,22 +1392,22 @@ Sistem güç kaynağına bağlı değil. LCLocaleDialog - + System locale setting Sistem yerel ayarları - + 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>. Sistem yerel ayarı, bazı uçbirim, kullanıcı ayarlamaları ve başkaca dil seçeneklerini belirler ve etkiler. <br/>Varsayılan geçerli ayarlar <strong>%1</strong>. - + &Cancel &Vazgeç - + &OK &TAMAM @@ -1355,27 +1420,27 @@ Sistem güç kaynağına bağlı değil. Form - + I accept the terms and conditions above. Yukarıdaki şartları ve koşulları kabul ediyorum. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Lisans Anlaşması</h1> Sistem yükleyici uygulaması belli lisans şartlarına bağlıdır ve şimdi sisteminizi kuracaktır. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Yukarıdaki son kullanıcı lisans sözleşmesini (EULA) gözden geçiriniz.<br/>Şartları kabul etmiyorsanız kurulum devam etmeyecektir. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Lisans Sözleşmesi</h1>Bu kurulum işlemi kullanıcı deneyimini ölçümlemek, ek özellikler sağlamak ve geliştirmek amacıyla lisansa tabi özel yazılım yükleyebilir. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Yukarıdaki Son Kullanıcı Lisans Sözleşmelerini (EULA) gözden geçirin.<br/>Eğer şartları kabul etmiyorsanız kapalı kaynak yazılımların yerine açık kaynak alternatifleri yüklenecektir. @@ -1383,7 +1448,7 @@ Sistem güç kaynağına bağlı değil. LicenseViewStep - + License Lisans @@ -1391,64 +1456,64 @@ Sistem güç kaynağına bağlı değil. LicenseWidget - + <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver <strong>%1 sürücü</strong><br/>by %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 grafik sürücü</strong><br/><font color="Grey">by %2</font> - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> <strong>%1 tarayıcı eklentisi</strong><br/><font color="Grey">by %2</font> - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> <strong>%1 kodek</strong><br/><font color="Grey">by %2</font> - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> <strong>%1 paketi</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">by %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + Shows the complete license text Tüm lisans metnini göster - + Hide license text Lisans metnini gizle - + Show license agreement Lisans sözleşmesini göster - + Hide license agreement Lisans sözleşmesini gizle - + Opens the license agreement in a browser window. Lisans sözleşmesini bir tarayıcı penceresinde aç. - + <a href="%1">View license agreement</a> <a href="%1">Lisans sözleşmesini görüntüle</a> @@ -1456,33 +1521,33 @@ Sistem güç kaynağına bağlı değil. LocalePage - + 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. - + Region: Bölge: - + Zone: Şehir: - - + + &Change... &Değiştir... - + Set timezone to %1/%2.<br/> Bölge ve zaman dilimi %1/%2 olarak ayarlandı.<br/> @@ -1490,38 +1555,92 @@ Sistem güç kaynağına bağlı değil. LocaleViewStep - - Loading location data... - Yerel verileri yükleniyor... - - - + Location Sistem Yereli + + LuksBootKeyFileJob + + + Configuring LUKS key file. + LUKS anahtar dosyası yapılandırılıyor. + + + + + No partitions are defined. + Hiçbir disk bölümü tanımlanmadı. + + + + + + Encrypted rootfs setup error + Şifrelenmiş rootfs kurulum hatası + + + + Root partition %1 is LUKS but no passphrase has been set. + %1 kök disk bölümü LUKS olacak fakat bunun için parola belirlenmedi. + + + + Could not create LUKS key file for root partition %1. + %1 kök disk bölümü için LUKS anahtar dosyası oluşturulamadı. + + + + Could configure LUKS key file on partition %1. + %1 disk bölümü LUKS anahtar dosyası yapılandırılabilir. + + + + MachineIdJob + + + Generate machine-id. + Makine kimliği oluştur. + + + + Configuration Error + Yapılandırma Hatası + + + + No root mount point is set for MachineId. + MachineId için kök bağlama noktası ayarlanmadı. + + NetInstallPage - + Name İsim - + Description Açıklama - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Ağ Üzerinden Kurulum. (Devre Dışı: Paket listeleri alınamıyor, ağ bağlantısını kontrol ediniz) - + Network Installation. (Disabled: Received invalid groups data) Ağ Kurulum. (Devre dışı: Geçersiz grup verileri alındı) + + + Network Installation. (Disabled: Incorrect configuration) + Ağ Kurulumu. (Devre dışı: Yanlış yapılandırma) + NetInstallViewStep @@ -1552,12 +1671,12 @@ Sistem güç kaynağına bağlı değil. OEMViewStep - + OEM Configuration OEM Yapılandırma - + Set the OEM Batch Identifier to <code>%1</code>. OEM Toplu Tanımlayıcıyı <code>%1</code>'e Ayarlayın. @@ -1565,117 +1684,117 @@ 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ı @@ -1685,125 +1804,171 @@ Sistem güç kaynağına bağlı değil. 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ı tipi değil - + Setting is not of integer type Ayar tamsayı tipi değil - + Setting %1 is not of string type Ayar %1, dize tipi değil - + Setting is not of string type Ayar, dize 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ş + + + + PackageChooserPage + + + Form + Biçim + + + + Product Name + Ürün adı + + + + TextLabel + MetinEtiketi + + + + Long Product Description + Uzun ürün açıklaması + + + + Package Selection + Paket seçimi + + + + Please pick a product from the list. The selected product will be installed. + Lütfen listeden bir ürün seçin. Seçilen ürün yüklenecek. + + + + PackageChooserViewStep + + + Packages + Paketler + Page_Keyboard @@ -1836,47 +2001,86 @@ Sistem güç kaynağına bağlı değil. Adınız nedir? - + What name do you want to use to log in? Giriş için hangi adı kullanmak istersiniz? - + Choose a password to keep your account safe. Hesabınızın güvenliğini sağlamak için bir parola belirleyiniz. - + + <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>Yazım hatası ihtimaline karşı parolanızı iki kere yazınız. Güçlü bir parola en az sekiz karakter olmalı ve rakamları, harfleri, karakterleri içermelidir, düzenli aralıklarla değiştirilmelidir.</small> - + What is the name of this computer? Bu bilgisayarın adı nedir? - + + Your Full Name + Tam Adınız + + + + login + oturum aç + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Bilgisayarınız herhangi bir ağ üzerinde görünür ise bu adı kullanacak.</small> - + + Computer Name + Bilgisayar Adı + + + + + Password + Şifre + + + + + Repeat Password + Şifreyi Tekrarla + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + Bu kutu işaretlendiğinde parola gücü kontrolü yapılır ve zayıf bir parola kullanamazsınız. + + + + Require strong passwords. + Güçlü şifre gerekir. + + + Log in automatically without asking for the password. Şifre sormadan otomatik olarak giriş yap. - + Use the same password for the administrator account. Yönetici ile kullanıcı aynı şifreyi kullansın. - + Choose a password for the administrator account. Yönetici-Root hesabı için bir parola belirle. - + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> <small>Yazım hatası ihtimaline karşı aynı şifreyi tekrar giriniz.</small> @@ -2041,108 +2245,108 @@ 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>esp</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 bölümü gereklidir.<br/><br/>EFI sistem bölümünü yapılandırmak için geri dönün ve seçim yapın veya FAT32 dosya sistemi ile <strong>esp</strong> etiketiyle <strong>%2</strong> noktasına bağlayın.<br/><br/>Bir EFI sistem bölümü kurmadan devam edebilirsiniz fakat işletim sistemi başlatılamayabilir. - + EFI system partition flag not set EFI sistem bölümü bayrağı ayarlanmadı - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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 bölümü gereklidir.<br/><br/>Bir bağlama noktası <strong>%2</strong> olarak yapılandırıldı fakat <strong>esp</strong>bayrağı ayarlanmadı.<br/>Bayrağı ayarlamak için, geri dönün ve bölümü düzenleyin.<br/><br/>Sen bayrağı ayarlamadan devam edebilirsin fakat işletim sistemi başlatılamayabilir. - + 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 partitons to install on. Yüklenecek disk bölümü yok. @@ -2208,14 +2412,14 @@ Sistem güç kaynağına bağlı değil. ProcessResult - + There was no output from the command. Komut çıktısı yok. - + Output: @@ -2224,52 +2428,52 @@ Output: - + External command crashed. Harici komut çöktü. - + Command <i>%1</i> crashed. Komut <i>%1</i> çöktü. - + External command failed to start. Harici komut başlatılamadı. - + Command <i>%1</i> failed to start. Komut <i>%1</i> başlatılamadı. - + Internal error when starting command. Komut başlatılırken dahili hata. - + Bad parameters for process job call. Çalışma adımları başarısız oldu. - + External command failed to finish. Harici komut başarısız oldu. - + Command <i>%1</i> failed to finish in %2 seconds. Komut <i>%1</i> %2 saniyede başarısız oldu. - + External command finished with errors. Harici komut hatalarla bitti. - + Command <i>%1</i> finished with exit code %2. Komut <i>%1</i> %2 çıkış kodu ile tamamlandı @@ -2318,16 +2522,50 @@ Output: (bağlama noktası yok) - + Requirements checking for module <i>%1</i> is complete. <i>%1</i> modülü için gerekenler tamamlandı. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + Ürün yok + + + + No description provided. + Açıklama bulunamadı. + + + + + + + + File not found + Dosya bulunamadı + + + + Path <pre>%1</pre> must be an absolute path. + <pre>%1</pre> yolu mutlak bir yol olmalı. + + + + Could not create new random file <pre>%1</pre>. + <pre>%1</pre>yeni rasgele dosya oluşturulamadı. + + + + Could not read random file <pre>%1</pre>. + <pre>%1</pre>rasgele dosya okunamadı. + RemoveVolumeGroupJob @@ -2547,39 +2785,39 @@ Output: ResultsListWidget - + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> Bu bilgisayar %1 kurulumu için minimum gereksinimleri karşılamıyor.<br/>Kurulum devam etmeyecek. <a href="#details">Detaylar...</a> - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Bu bilgisayara %1 yüklemek için minimum gereksinimler karşılanamadı. Kurulum devam edemiyor. <a href="#detaylar">Detaylar...</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. Bu bilgisayar %1 kurulumu için önerilen gereksinimlerin bazılarına uymuyor. Kurulum devam edebilirsiniz ancak bazı özellikler devre dışı bırakılabilir. - + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. Bu bilgisayara %1 yüklemek için önerilen gereksinimlerin bazıları karşılanamadı.<br/> Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. - + This program will ask you some questions and set up %2 on your computer. Bu program size bazı sorular soracak ve bilgisayarınıza %2 kuracak. - + For best results, please ensure that this computer: En iyi sonucu elde etmek için bilgisayarınızın aşağıdaki gereksinimleri karşıladığından emin olunuz: - + System requirements Sistem gereksinimleri @@ -2600,29 +2838,29 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. SetHostNameJob - + Set hostname %1 %1 sunucu-adı ayarla - + Set hostname <strong>%1</strong>. <strong>%1</strong> sunucu-adı ayarla. - + Setting hostname %1. %1 sunucu-adı ayarlanıyor. - - + + Internal Error Dahili Hata - - + + Cannot write hostname to target system Hedef sisteme sunucu-adı yazılamadı @@ -2763,22 +3001,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.rootBağlamaNoktası %1 - + Cannot disable root account. root hesap devre dışı bırakılamaz. - + passwd terminated with error code %1. passwd %1 hata kodu ile sonlandı. - + Cannot set password for user %1. %1 Kullanıcısı için parola ayarlanamadı. - + usermod terminated with error code %1. usermod %1 hata koduyla çöktü. @@ -2801,22 +3039,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Hatalı yol: %1 - + Cannot set timezone. Zaman dilimi ayarlanamadı. - + Link creation failed, target: %1; link name: %2 Link oluşturulamadı, hedef: %1; link adı: %2 - + Cannot set timezone, Bölge ve zaman dilimi ayarlanmadı, - + Cannot open /etc/timezone for writing /etc/timezone açılamadığından düzenlenemedi @@ -2862,22 +3100,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. TrackingInstallJob - + Installation feedback Kurulum geribildirimi - + Sending installation feedback. Kurulum geribildirimi gönderiliyor. - + Internal error in install-tracking. Kurulum izlemede dahili hata. - + HTTP request timed out. HTTP isteği zaman aşımına uğradı. @@ -2885,28 +3123,28 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. TrackingMachineNeonJob - + Machine feedback Makine geri bildirimi - + Configuring machine feedback. Makine geribildirimini yapılandırma. - - + + Error in machine feedback configuration. Makine geri bildirim yapılandırmasında hata 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. @@ -2939,17 +3177,17 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Yükleme takibi, sahip oldukları kaç kullanıcının, hangi donanımın %1'e kurulduğunu ve (son iki seçenekle birlikte) tercih edilen uygulamalar hakkında sürekli bilgi sahibi olmasını sağlamak için %1'e yardımcı olur. Ne gönderileceğini görmek için, lütfen her alanın yanındaki yardım simgesini tıklayın. - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. Bunu seçerseniz kurulum ve donanımınız hakkında bilgi gönderirsiniz. Bu bilgi, <b>kurulum tamamlandıktan sonra</b> yalnızca bir kez gönderilecektir. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. Bunu seçerek <b>kurulum, donanım ve uygulamalarınızla ilgili bilgileri</b> düzenli olarak %1'e gönderirsiniz. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. Bunu seçerek <b>kurulum, donanım ve uygulamalarınızla ilgili bilgileri </b> düzenli olarak %1 adresine gönderirsiniz. @@ -2957,7 +3195,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. TrackingViewStep - + Feedback Geribildirim @@ -2965,43 +3203,47 @@ 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, yükleme bittikten sonra birden fazla kullanıcı hesabı oluşturabilirsiniz.</small> - + Your username is too long. Kullanıcı adınız çok uzun. - - Your username contains invalid characters. Only lowercase letters and numbers are allowed. - Kullanıcı adınız geçersiz karakterler içeriyor. Sadece küçük harfleri ve sayıları kullanabilirsiniz. + + 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. + + + + Only letters, numbers, underscore and hyphen are allowed. + Sadece harfler, rakamlar, alt çizgi ve kısa çizgi 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. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Makine adınız geçersiz karakterler içeriyor. Sadece küçük harfleri ve sayıları ve tire işaretini kullanabilirsiniz. - - - - + Your passwords do not match! Parolanız eşleşmiyor! @@ -3009,11 +3251,24 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. UsersViewStep - + Users Kullanıcı Tercihleri + + VariantModel + + + Key + Anahtar + + + + Value + Değer + + VolumeGroupBaseDialog @@ -3075,23 +3330,48 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Biçim - + + + Select application and system language + Uygulama ve sistem dilini seçin + + + + Open donations website + Bağış web sitesini aç + + + + &Donate + &Bağış + + + + Open help and support website + Yardım ve destek web sitesini açın + + + + Open issues and bug-tracking website + Geri bildirim ve hata izleme web sitesi + + + + Open release notes website + Sürüm Notları web sitesini aç + + + &Release notes &Sürüm notları - + &Known issues &Bilinen hatalar - - - Select language - Dil seçin - - - + &Support &Destek @@ -3101,42 +3381,42 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.&Hakkında - + <h1>Welcome to the %1 installer.</h1> <h1>%1 Sistem Yükleyiciye Hoşgeldiniz.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>%1 Calamares Sistem Yükleyici .</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>%1 için Calamares sistem kurulum uygulamasına hoş geldiniz.</h1> - + <h1>Welcome to %1 setup.</h1> <h1>%1 Kurulumuna Hoşgeldiniz.</h1> - + About %1 setup %1 kurulum hakkında - + About %1 installer %1 sistem yükleyici hakkında - + <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-2019 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/>için %3</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkürler <a href="https://calamares.io/team/">Calamares takımı</a> ve <a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri takımı</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> gelişim destekçisi <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. - + %1 support %1 destek @@ -3144,7 +3424,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. WelcomeViewStep - + Welcome Hoşgeldiniz diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index 58ca795fc..50221dd87 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 Головний Завантажувальний Запис (Master Boot Record) %1 - + Boot Partition Розділ Boot - + System Partition Системний розділ - + Do not install a boot loader Не встановлювати завантажувач - + %1 (%2) %1 (%2) @@ -48,56 +48,66 @@ Calamares::BlankViewStep - + Blank Page - + Пуста сторінка Calamares::DebugWindow - + Form Форма - + GlobalStorage Глобальне сховище - + JobQueue Черга завдань - + Modules Модулі - + Type: Тип: - - + + none немає - + Interface: Інтерфейс: - + Tools Інструменти - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information Відлагоджувальна інформація @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Налаштувати - + Install Встановити @@ -120,18 +130,18 @@ Job failed (%1) - + Невдало виконане завдання (%1) - + Programmed job failure was explicitly requested. - + Невдача в запрограмованому завданні була чітко задана. Calamares::JobThread - + Done Зроблено @@ -141,18 +151,23 @@ Example job (%1) - + Приклад завдання (%1) Calamares::ProcessJob - Run command %1 %2 - Запустити команду %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 Запуск команди %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,177 +208,193 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + Очікування %n модулю.Очікування %n модулів.Очікування %n модулів.Очікування %n модулів. - + (%n second(s)) - + (%n секунда)(%n секунди)(%n секунд(и))(%n секунд(и)) - + System-requirements checking is complete. - + Перевірка системних вимог завершена. Calamares::ViewManager - + + &Back &Назад - - + + &Next &Вперед - - + + &Cancel &Скасувати - - + Cancel setup without changing the system. - + Скасувати налаштування без зміни системи. - - + Cancel installation without changing the system. - Скасувати встановлення без змінення системи. + Скасувати встановлення без зміни системи. - + Setup Failed + Помилка встановлення + + + + Would you like to paste the install log to the web? - - Calamares Initialization Failed + + Install Log Paste URL - - %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 installation? + + The upload was unsuccessful. No web-paste was done. - 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> - + 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 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> + + + &Set up now - + &Налаштувати зараз - + &Set up - + &Налаштувати - + &Install - + &Встановити - + Setup is complete. Close the setup program. - + Встановлення виконано. Закрити програму встановлення. - + 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. Чи ви насправді бажаєте скасувати процес встановлення? Установник закриється і всі зміни буде втрачено. - + + &Yes &Так - + + &No &Ні - + &Close &Закрити - + Continue with setup? Продовжити встановлення? - + 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> - + &Install now &Встановити зараз - + Go &back Перейти &назад - + &Done &Закінчити - + The installation is complete. Close the installer. Встановлення виконано. Закрити установник. - + Error Помилка - + Installation Failed Втановлення завершилося невдачею @@ -371,40 +402,49 @@ 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 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer Установник %1 - + Show debug information Показати відлагоджувальну інформацію @@ -435,7 +475,7 @@ The installer will quit and all changes will be lost. <strong>Розподілення вручну</strong><br/>Ви можете створити або змінити розмір розділів власноруч. - + Boot loader location: Місцезнаходження завантажувача: @@ -447,8 +487,8 @@ The installer will quit and all changes will be lost. - - + + Current: Зараз: @@ -463,96 +503,96 @@ The installer will quit and all changes will be lost. <strong>Оберіть розділ для зменьшення, потім тягніть повзунок, щоб змінити розмір</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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> всі данні, присутні на обраному пристрої зберігання. - + 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/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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/>У вас буде можливість переглянути та підтвердити все, що ви обрали перед тим, як будуть зроблені будь-які зміни на пристрої зберігання. @@ -601,18 +641,18 @@ The installer will quit and all changes will be lost. 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. @@ -620,7 +660,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -800,17 +840,17 @@ The installer will quit and all changes will be lost. Неможливо запиcати у директорію sudoers. - + Cannot create sudoers file for writing. Неможливо створити файл sudoers для запису. - + Cannot chmod sudoers file. Неможливо встановити права на файл sudoers. - + Cannot open groups file for reading. Неможливо відкрити файл груп для читання. @@ -957,7 +997,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job Завдання-макет C++ @@ -1124,12 +1164,12 @@ The installer will quit and all changes will be lost. - + <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. <h1>Встановлення зазнало невдачі</h1><br/>%1 не було встановлено на Ваш комп'ютер.<br/>Повідомлення про помилку: %2. @@ -1188,66 +1228,74 @@ The installer will quit and all changes will be lost. 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. Система не з'єднана з мережею Інтернет. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. Установник запущено без прав адміністратора. - + 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 @@ -1274,6 +1322,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1295,7 +1359,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script Скрипт @@ -1324,22 +1388,22 @@ The installer will quit and all changes will be lost. 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 &OK @@ -1352,27 +1416,27 @@ The installer will quit and all changes will be lost. Форма - + I accept the terms and conditions above. Я приймаю положення та умови, що наведені вище. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>Ліцензійна угода</h1>Процедура встановить пропрієтарне програмне забезпечення, яке підлягає умовам ліцензування. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. Будь-ласка, перегляньте Ліцензійні Угоди Кінцевого Користувача (EULAs), що наведені вище.<br/>Якщо ви не згодні з умовами, процедуру встановлення не можна продовжити. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>Ліцензійна угода</h1>Для надання додаткових можливостей та з метою покращення користувацького досвіду, процедура може встановити пропрієтарне програмне забезпечення, яке підлягає умовам ліцензування. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. Будь-ласка, перегляньте Ліцензійні Угоди Кінцевого Користувача (EULAs), що наведені вище.<br/>Якщо ви не згодні з умовами, пропрієтарне програмне забезпечення не буде встановлено, та замість нього буде використано альтернативи з відкритим сирцевим кодом. @@ -1380,7 +1444,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License Ліцензія @@ -1388,64 +1452,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1453,33 +1517,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. Мову %1 буде встановлено як системну. - + The numbers and dates locale will be set to %1. %1 буде встановлено як локаль чисел та дат. - + Region: Регіон: - + Zone: Зона: - - + + &Change... &Змінити... - + Set timezone to %1/%2.<br/> Встановити зону %1/%2.<br/> @@ -1487,38 +1551,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - Завантаження данних про місцезнаходження... - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name Ім'я - + Description Опис - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) Встановлення через мережу. (Вимкнено: Неможливо отримати список пакетів, перевірте ваше підключення до мережі) - + Network Installation. (Disabled: Received invalid groups data) Встановлення через мережу. (Вимкнено: Отримано неправильні дані про групи) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1549,12 +1667,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1562,118 +1680,118 @@ 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 Цей пароль містить менше ніж %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 - + The password is too short Цей пароль занадто короткий - + The password is just rotated old one @@ -1683,125 +1801,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1834,47 +1998,86 @@ The installer will quit and all changes will be lost. Ваше ім'я? - + What name do you want to use to log in? Яке ім'я ви бажаєте використовувати для входу? - + 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> - + What is the name of this computer? Ім'я цього комп'ютера? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>Це ім'я буде використовуватись, якщо ви зробите комп'ютер видимим іншим у мережі.</small> - + + Computer Name + + + + + + 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> @@ -2039,107 +2242,107 @@ 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>esp</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>esp</strong> та точкою підключення <strong>%2</strong>.<br/><br/>Ви можете продовжити не налаштовуючи системний розділ EFI, але ваша система може не запускатись. - + EFI system partition flag not set Опцію системного розділу 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>esp</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>esp</strong> не встановлено.<br/>Щоб встановити опцію, поверніться та відредагуйте розділ.<br/><br/>Ви можете продовжити не налаштовуючи цю опцію, але ваша система може не запускатись. - + 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 partitons to install on. @@ -2205,65 +2408,65 @@ The installer will quit and all changes will be lost. 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. @@ -2312,16 +2515,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2541,37 +2778,37 @@ Output: 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> Цей комп'ютер не задовільняє мінімальним вимогам для встановлення %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. - + 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 на ваш комп'ютер. - + For best results, please ensure that this computer: Щоб отримати найкращий результат, будь-ласка переконайтеся, що цей комп'ютер: - + System requirements Системні вимоги @@ -2592,29 +2829,29 @@ Output: 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 Не можу записати ім'я машини до системи @@ -2755,22 +2992,22 @@ Output: Коренева точка підключення %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. @@ -2793,22 +3030,22 @@ Output: Поганий шлях: %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 для запису @@ -2854,22 +3091,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2877,28 +3114,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2931,17 +3168,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2949,7 +3186,7 @@ Output: TrackingViewStep - + Feedback @@ -2957,43 +3194,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - Ваше ім'я містить неприпустимі символи. Дозволені тільки малі літери та цифри. + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. Ім'я машини занадто коротке. - + Your hostname is too long. Ім'я машини задовге. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Ім'я машини містить неприпустимі символи. Дозволені тільки літери, цифри та дефіс. - - - - + Your passwords do not match! Паролі не збігаються! @@ -3001,11 +3242,24 @@ Output: UsersViewStep - + Users Користувачі + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3067,23 +3321,48 @@ Output: Форма - - &Release notes - При&мітки до випуску - - - - &Known issues - &Відомі проблеми - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + При&мітки до випуску + + + + &Known issues + &Відомі проблеми + + + &Support Під&тримка @@ -3093,42 +3372,42 @@ Output: &Про - + <h1>Welcome to the %1 installer.</h1> <h1>Ласкаво просимо до установника %1.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>Ласкаво просимо до установника для %1 Calamares.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support Підтримка %1 @@ -3136,7 +3415,7 @@ Output: WelcomeViewStep - + Welcome Вітаємо diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index ce6ab4deb..52414fc36 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts index 8911bc80c..a93944322 100644 --- a/lang/calamares_uz.ts +++ b/lang/calamares_uz.ts @@ -20,27 +20,27 @@ BootLoaderModel - + Master Boot Record of %1 - + Boot Partition - + System Partition - + Do not install a boot loader - + %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form - + GlobalStorage - + JobQueue - + Modules - + Type: - - + + none - + Interface: - + Tools - + + Reload Stylesheet + + + + + Widget Tree + + + + Debug information @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up - + Install @@ -123,7 +133,7 @@ - + Programmed job failure was explicitly requested. @@ -131,7 +141,7 @@ Calamares::JobThread - + Done @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 + Run command '%1' in target system. - + + Run command '%1'. + + + + Running command %1 %2 @@ -160,32 +175,32 @@ 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". @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -211,158 +226,174 @@ Calamares::ViewManager - + + &Back - - + + &Next - - + + &Cancel - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. - + Setup Failed - - Calamares Initialization Failed + + Would you like to paste the install log to the web? - - %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. + + Install Log Paste URL - - <br/>The following modules could not be loaded: - - - - - Continue with installation? + + The upload was unsuccessful. No web-paste was done. - 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> + 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 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> + + + + &Set up now - + &Set up - + &Install - + Setup is complete. Close the setup program. - + 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. - + + &Yes - + + &No - + &Close - + Continue with setup? - + 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> - + &Install now - + Go &back - + &Done - + The installation is complete. Close the installer. - + Error - + Installation Failed @@ -370,40 +401,49 @@ 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 - + %1 Setup Program - + %1 Installer - + Show debug information @@ -434,7 +474,7 @@ The installer will quit and all changes will be lost. - + Boot loader location: @@ -446,8 +486,8 @@ The installer will quit and all changes will be lost. - - + + Current: @@ -462,96 +502,96 @@ The installer will quit and all changes will be lost. - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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. - + 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. - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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. @@ -600,18 +640,18 @@ The installer will quit and all changes will be lost. 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. @@ -619,7 +659,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job @@ -799,17 +839,17 @@ The installer will quit and all changes will be lost. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. @@ -956,7 +996,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job @@ -1123,12 +1163,12 @@ The installer will quit and all changes will be lost. - + <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. @@ -1187,66 +1227,74 @@ The installer will quit and all changes will be lost. 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. - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. - + 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 @@ -1273,6 +1321,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1294,7 +1358,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script @@ -1323,22 +1387,22 @@ The installer will quit and all changes will be lost. 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 @@ -1351,27 +1415,27 @@ The installer will quit and all changes will be lost. - + I accept the terms and conditions above. - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @@ -1379,7 +1443,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License @@ -1387,64 +1451,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1452,33 +1516,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - + The numbers and dates locale will be set to %1. - + Region: - + Zone: - - + + &Change... - + Set timezone to %1/%2.<br/> @@ -1486,38 +1550,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. - - Location + + + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. NetInstallPage - + Name - + Description - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Network Installation. (Disabled: Received invalid groups data) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1548,12 +1666,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1561,117 +1679,117 @@ 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 @@ -1681,125 +1799,171 @@ The installer will quit and all changes will be lost. - + 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 + + Page_Keyboard @@ -1832,47 +1996,86 @@ The installer will quit and all changes will be lost. - + What name do you want to use to log in? - + 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> - + What is the name of this computer? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> - + + Computer Name + + + + + + 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> @@ -2037,107 +2240,107 @@ 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>esp</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 system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</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. - + 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 partitons to install on. @@ -2203,65 +2406,65 @@ The installer will quit and all changes will be lost. 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. @@ -2310,16 +2513,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2539,37 +2776,37 @@ Output: 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. - + For best results, please ensure that this computer: - + System requirements @@ -2590,29 +2827,29 @@ Output: SetHostNameJob - + Set hostname %1 - + Set hostname <strong>%1</strong>. - + Setting hostname %1. - - + + Internal Error - - + + Cannot write hostname to target system @@ -2753,22 +2990,22 @@ Output: - + Cannot disable root account. - + passwd terminated with error code %1. - + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -2791,22 +3028,22 @@ Output: - + Cannot set timezone. - + Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -2852,22 +3089,22 @@ Output: TrackingInstallJob - + Installation feedback - + Sending installation feedback. - + Internal error in install-tracking. - + HTTP request timed out. @@ -2875,28 +3112,28 @@ Output: TrackingMachineNeonJob - + 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. @@ -2929,17 +3166,17 @@ Output: - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. @@ -2947,7 +3184,7 @@ Output: TrackingViewStep - + Feedback @@ -2955,43 +3192,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. + + Your username must start with a lowercase letter or underscore. - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. - + Your hostname is too long. - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - - - - + Your passwords do not match! @@ -2999,11 +3240,24 @@ Output: UsersViewStep - + Users + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3065,23 +3319,48 @@ Output: - - &Release notes - - - - - &Known issues - - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + + + + + &Known issues + + + + &Support @@ -3091,42 +3370,42 @@ Output: - + <h1>Welcome to the %1 installer.</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + 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-2019 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. - + %1 support @@ -3134,7 +3413,7 @@ Output: WelcomeViewStep - + Welcome diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index 20f4af48e..b6d05aaab 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -21,27 +21,27 @@ BootLoaderModel - + Master Boot Record of %1 主引导记录 %1 - + Boot Partition 引导分区 - + System Partition 系统分区 - + Do not install a boot loader 不要安装引导程序 - + %1 (%2) %1 (%2) @@ -49,7 +49,7 @@ Calamares::BlankViewStep - + Blank Page 空白页 @@ -57,48 +57,58 @@ Calamares::DebugWindow - + Form 表单 - + GlobalStorage 全局存储 - + JobQueue 任务队列 - + Modules 模块 - + Type: 类型: - - + + none - + Interface: 接口: - + Tools 工具 - + + Reload Stylesheet + 重载样式表 + + + + Widget Tree + 树形控件 + + + Debug information 调试信息 @@ -106,12 +116,12 @@ Calamares::ExecutionViewStep - + Set up - + 建立 - + Install 安装 @@ -121,10 +131,10 @@ Job failed (%1) - + 任务失败(%1) - + Programmed job failure was explicitly requested. @@ -132,7 +142,7 @@ Calamares::JobThread - + Done 完成 @@ -149,11 +159,16 @@ Calamares::ProcessJob - Run command %1 %2 - 运行命令 %1 %2 + Run command '%1' in target system. + - + + Run command '%1'. + + + + Running command %1 %2 正在运行命令 %1 %2 @@ -161,32 +176,32 @@ Calamares::PythonJob - + Running %1 operation. 正在运行 %1 个操作。 - + Bad working directory path 错误的工作目录路径 - + Working directory %1 for python job %2 is not readable. 用于 python 任务 %2 的工作目录 %1 不可读。 - + Bad main script file 错误的主脚本文件 - + Main script file %1 for python job %2 is not readable. 用于 python 任务 %2 的主脚本文件 %1 不可读。 - + Boost.Python error in job "%1". 任务“%1”出现 Boost.Python 错误。 @@ -194,17 +209,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). - + (%n second(s)) - + System-requirements checking is complete. @@ -212,159 +227,175 @@ Calamares::ViewManager - + + &Back 后退(&B) - - + + &Next 下一步(&N) - - + + &Cancel 取消(&C) - - + Cancel setup without changing the system. - - + Cancel installation without changing the system. 取消安装,并不做任何更改。 - + Setup Failed - - Calamares Initialization Failed - Calamares安装失败 + + Would you like to paste the install log to the web? + - - %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的方式的问题。 + + Install Log Paste URL + - - <br/>The following modules could not be loaded: - <br/>无法加载以下模块: - - - - Continue with installation? + + 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 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> - + &Set up now - + &Set up - + &Install 安装(&I) - + Setup is complete. Close the setup program. - + 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. 确定要取消当前的安装吗? 安装程序将退出,所有修改都会丢失。 - + + &Yes &是 - + + &No &否 - + &Close &关闭 - + Continue with setup? 要继续安装吗? - + 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> - + &Install now 现在安装 (&I) - + Go &back 返回 (&B) - + &Done &完成 - + The installation is complete. Close the installer. 安装已完成。请关闭安装程序。 - + Error 错误 - + Installation Failed 安装失败 @@ -372,40 +403,49 @@ 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 + + + CalamaresWindow - + %1 Setup Program - + %1 Installer %1 安装程序 - + Show debug information 显示调试信息 @@ -436,7 +476,7 @@ The installer will quit and all changes will be lost. <strong>手动分区</strong><br/>您可以自行创建或重新调整分区大小。 - + Boot loader location: 引导程序位置: @@ -448,8 +488,8 @@ The installer will quit and all changes will be lost. - - + + Current: 当前: @@ -464,96 +504,96 @@ The installer will quit and all changes will be lost. <strong>选择要缩小的分区,然后拖动底栏改变大小</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - + <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>目前选定的存储器上所有的数据。 - + 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/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - + No Swap - + Reuse Swap - + Swap (no Hibernate) - + Swap (with Hibernate) - + Swap to file - - - - + + + + <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 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/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 @@ -602,18 +642,18 @@ The installer will quit and all changes will be lost. 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挂载点。 - + The command needs to know the user's name, but no username is defined. 命令行需要知道用户的名字,但用户名没有被设置 @@ -621,7 +661,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job 后台任务 @@ -801,17 +841,17 @@ The installer will quit and all changes will be lost. Sudoers 目录不可写。 - + Cannot create sudoers file for writing. 无法创建要写入的 sudoers 文件。 - + Cannot chmod sudoers file. 无法修改 sudoers 文件权限。 - + Cannot open groups file for reading. 无法打开要读取的 groups 文件。 @@ -959,7 +999,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job 虚设 C++ 任务 @@ -1126,12 +1166,12 @@ The installer will quit and all changes will be lost. - + <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. <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 @@ -1190,66 +1230,74 @@ The installer will quit and all changes will be lost. 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. 系统未连接到互联网。 - + The setup program is not running with administrator rights. - + The installer is not running with administrator rights. 安装器未以管理员权限运行 - + 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 @@ -1276,6 +1324,22 @@ The installer will quit and all changes will be lost. + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + InteractiveTerminalPage @@ -1297,7 +1361,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script 脚本 @@ -1326,22 +1390,22 @@ The installer will quit and all changes will be lost. 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 取消(&C) - + &OK &确定 @@ -1354,27 +1418,27 @@ The installer will quit and all changes will be lost. 表单 - + I accept the terms and conditions above. 我同意如上条款。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>许可协定</h1>此安装程序将会安装受授权条款所限制的专有软件。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 请仔细上方的最终用户许可协定 (EULA)。<br/>若您不同意上述条款,安装程序将不会继续。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>许可协定</h1>此安装程序可以安装受授权条款限制的专有软件,以提供额外的功能并增强用户体验。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 请仔细上方的最终用户许可协定 (EULA)。<br/>若您不同意上述条款,将不会安装专有软件,而会使用其开源替代品。 @@ -1382,7 +1446,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License 许可证 @@ -1390,64 +1454,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text - + Hide license text - + Show license agreement - + Hide license agreement - + Opens the license agreement in a browser window. - + <a href="%1">View license agreement</a> @@ -1455,33 +1519,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. 系统语言将设置为 %1。 - + The numbers and dates locale will be set to %1. 数字和日期地域将设置为 %1。 - + Region: 地区: - + Zone: 区域: - - + + &Change... 更改 (&C) ... - + Set timezone to %1/%2.<br/> 设置时区为 %1/%2。<br/> @@ -1489,38 +1553,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - 加载位置数据... - - - + 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 configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + 生成 machine-id。 + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + NetInstallPage - + Name 名称 - + Description 描述 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) 网络安装。(已禁用:无法获取软件包列表,请检查网络连接) - + Network Installation. (Disabled: Received invalid groups data) 联网安装。(已禁用:收到无效组数据) + + + Network Installation. (Disabled: Incorrect configuration) + + NetInstallViewStep @@ -1551,12 +1669,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration - + Set the OEM Batch Identifier to <code>%1</code>. @@ -1564,117 +1682,117 @@ 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 新密码仅对老密码作了字序调整 @@ -1684,125 +1802,171 @@ The installer will quit and all changes will be lost. 新密码包含少于 %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 + + Page_Keyboard @@ -1835,47 +1999,86 @@ The installer will quit and all changes will be lost. 您的姓名? - + What name do you want to use to log in? 您想要使用的登录用户名是? - + 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>输入相同密码两次,以检查输入错误。好的密码包含字母,数字,标点的组合,应当至少为 8 个字符长,并且应按一定周期更换。</small> - + What is the name of this computer? 计算机名称为? - + + Your Full Name + + + + + login + + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>将计算机设置为对其他网络上计算机可见时将使用此名称。</small> - + + Computer Name + + + + + + 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> @@ -2040,107 +2243,107 @@ 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>esp</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>esp</strong> 标记及挂载点 <strong>%2</strong>。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + EFI system partition flag not set 未设置 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>esp</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>esp</strong> 标记。<br/>要设置此标记,后退并编辑分区。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + 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 partitons to install on. @@ -2206,14 +2409,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. 命令没有输出。 - + Output: @@ -2222,52 +2425,52 @@ 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 完成。 @@ -2316,16 +2519,50 @@ Output: - + Requirements checking for module <i>%1</i> is complete. - + %1 (%2) language[name] (country[name]) %1(%2) + + + No product + + + + + No description provided. + + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + Could not read random file <pre>%1</pre>. + + RemoveVolumeGroupJob @@ -2545,37 +2782,37 @@ Output: 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> 此电脑未满足安装 %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. - + 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 。 - + For best results, please ensure that this computer: 为了更好的体验,请确保这台电脑: - + System requirements 系统需求 @@ -2596,29 +2833,29 @@ Output: 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 无法向目标系统写入主机名 @@ -2759,22 +2996,22 @@ Output: 根挂载点为 %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 中止。 @@ -2797,22 +3034,22 @@ Output: 非法路径:%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 @@ -2858,22 +3095,22 @@ Output: TrackingInstallJob - + Installation feedback 安装反馈 - + Sending installation feedback. 发送安装反馈。 - + Internal error in install-tracking. 在 install-tracking 步骤发生内部错误。 - + HTTP request timed out. HTTP 请求超时。 @@ -2881,28 +3118,28 @@ Output: TrackingMachineNeonJob - + 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。 @@ -2935,17 +3172,17 @@ Output: 安装跟踪可帮助 %1 获取关于用户数量,安装 %1 的硬件(选中下方最后两项)及长期以来受欢迎应用程序的信息。请点按每项旁的帮助图标以查看即将被发送的信息。 - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. 选中此项时,安装器将发送关于安装过程和硬件的信息。该信息只会在安装结束后 <b>发送一次</b>。 - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. 选中此项时,安装器将给 %1 <b>定时</b> 发送关于安装进程,硬件及应用程序的信息。 - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. 选中此项时,安装器和系统将给 %1 <b>定时</b> 发送关于安装进程,硬件,应用程序及使用规律的信息。 @@ -2953,7 +3190,7 @@ Output: TrackingViewStep - + Feedback 反馈 @@ -2961,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - 您的用户名含有无效的字符。只能使用小写字母和数字。 + + Your username must start with a lowercase letter or underscore. + - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + Your hostname is too short. 主机名太短。 - + Your hostname is too long. 主机名太长。 - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - 您的主机名称含有无效的字符。只能使用字母、数字和短横。 - - - - + Your passwords do not match! 密码不匹配! @@ -3005,11 +3246,24 @@ Output: UsersViewStep - + Users 用户 + + VariantModel + + + Key + + + + + Value + + + VolumeGroupBaseDialog @@ -3071,23 +3325,48 @@ Output: 表单 - - &Release notes - 发行注记(&R) - - - - &Known issues - 已知问题(&K) - - - - - Select language + + + Select application and system language + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + Open issues and bug-tracking website + + + + + Open release notes website + + + + + &Release notes + 发行注记(&R) + + + + &Known issues + 已知问题(&K) + + + &Support 支持信息(&S) @@ -3097,42 +3376,42 @@ Output: 关于(&A) - + <h1>Welcome to the %1 installer.</h1> <h1>欢迎使用 %1 安装程序。</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>欢迎使用 Calamares 安装程序 - %1。</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> - + <h1>Welcome to %1 setup.</h1> - + About %1 setup - + 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-2019 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. - + %1 support %1 的支持信息 @@ -3140,7 +3419,7 @@ Output: WelcomeViewStep - + Welcome 欢迎 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 804df05fb..89c88dfb7 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -4,43 +4,43 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現代的系統則通常使用 <strong>EFI</strong>,但若開機環境是以相容模式執行,其也可能顯示為 BIOS。 + 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 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>上。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行選取或建立它。 + 這個系統以 <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>(推薦)。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行設定它。 + 這個系統以 <strong>BIOS</strong> 開機。<br><br>要從 BIOS 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong>。而且通常安裝在分割區的開首,又或最好安裝在靠近分割表開首的 <strong>主要開機記錄 (MBR)</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行設定它。 BootLoaderModel - + Master Boot Record of %1 %1 的主要開機紀錄 (MBR) - + Boot Partition 開機磁區 - + System Partition 系統磁區 - + Do not install a boot loader 無法安裝開機載入器 - + %1 (%2) %1 (%2) @@ -48,7 +48,7 @@ Calamares::BlankViewStep - + Blank Page 空白頁 @@ -56,48 +56,58 @@ Calamares::DebugWindow - + Form 型式 - + GlobalStorage 全域儲存 - + JobQueue 工作佇列 - + Modules 模組 - + Type: 類型: - - + + none - + Interface: 介面: - + Tools 工具 - + + Reload Stylesheet + 重新載入樣式表 + + + + Widget Tree + 小工具樹 + + + Debug information 除錯資訊 @@ -105,12 +115,12 @@ Calamares::ExecutionViewStep - + Set up 設定 - + Install 安裝 @@ -123,7 +133,7 @@ 排程失敗 (%1) - + Programmed job failure was explicitly requested. 明確要求程式化排程失敗。 @@ -131,7 +141,7 @@ Calamares::JobThread - + Done 完成 @@ -148,11 +158,16 @@ Calamares::ProcessJob - Run command %1 %2 - 執行命令 %1 %2 + Run command '%1' in target system. + 在目標系統中執行指令「%1」。 - + + Run command '%1'. + 執行指令「%1」。 + + + Running command %1 %2 正在執行命令 %1 %2 @@ -160,32 +175,32 @@ Calamares::PythonJob - + Running %1 operation. 正在執行 %1 操作。 - + Bad working directory path 不良的工作目錄路徑 - + Working directory %1 for python job %2 is not readable. Python 行程 %2 作用中的目錄 %1 不具讀取權限。 - + Bad main script file 錯誤的主要腳本檔 - + Main script file %1 for python job %2 is not readable. Python 行程 %2 的主要腳本檔 %1 無法讀取。 - + Boost.Python error in job "%1". 行程 %1 中 Boost.Python 錯誤。 @@ -193,17 +208,17 @@ Calamares::RequirementsChecker - + Waiting for %n module(s). 正在等待 %n 個模組。 - + (%n second(s)) (%n 秒) - + System-requirements checking is complete. 系統需求檢查完成。 @@ -211,160 +226,176 @@ Calamares::ViewManager - + + &Back 返回 (&B) - - + + &Next 下一步 (&N) - - + + &Cancel 取消(&C) - - + Cancel setup without changing the system. 取消安裝,不更改系統。 - - + Cancel installation without changing the system. 不變更系統並取消安裝。 - + Setup Failed 設定失敗 - + + Would you like to paste the install log to the web? + 想要將安裝紀錄檔貼到網路上嗎? + + + + 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 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> - + &Set up now - 現在進行設定 (&S) + 馬上進行設定 (&S) - + &Set up 設定 (&S) - + &Install 安裝(&I) - + Setup is complete. Close the setup program. 設定完成。關閉設定程式。 - + 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. 您真的想要取消目前的安裝程序嗎? 安裝程式將會退出且所有變動將會遺失。 - + + &Yes 是(&Y) - + + &No 否(&N) - + &Close 關閉(&C) - + Continue with setup? 繼續安裝? - + 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> - + &Install now 現在安裝 (&I) - + Go &back 上一步 (&B) - + &Done 完成(&D) - + The installation is complete. Close the installer. 安裝完成。關閉安裝程式。 - + Error 錯誤 - + Installation Failed 安裝失敗 @@ -372,40 +403,50 @@ 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 - + %1 Setup Program %1 設定程式 - + %1 Installer %1 安裝程式 - + Show debug information 顯示除錯資訊 @@ -433,10 +474,10 @@ The installer will quit and all changes will be lost. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>手動分割</strong><br/>您可以自行建立或重新調整分割區大小。 + <strong>手動分割</strong><br/>可以自行建立或重新調整分割區大小。 - + Boot loader location: 開機載入器位置: @@ -448,8 +489,8 @@ The installer will quit and all changes will be lost. - - + + Current: 目前: @@ -464,96 +505,96 @@ The installer will quit and all changes will be lost. <strong>選取要縮減的分割區,然後拖曳底部條狀物來調整大小</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. %1 將會縮減到 %2MiB 且新的 %3MiB 分割區將會被建立為 %4。 - + <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>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置所有的資料。 - + 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/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - + No Swap 沒有 Swap - + Reuse Swap 重用 Swap - + Swap (no Hibernate) Swap(沒有冬眠) - + Swap (with Hibernate) Swap(有冬眠) - + Swap to file Swap 到檔案 - - - - + + + + <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 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/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 @@ -602,18 +643,18 @@ The installer will quit and all changes will be lost. 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. 指令需要知道使用者名稱,但是使用者名稱未定義。 @@ -621,7 +662,7 @@ The installer will quit and all changes will be lost. ContextualProcessJob - + Contextual Processes Job 情境處理程序工作 @@ -801,17 +842,17 @@ The installer will quit and all changes will be lost. Sudoers 目錄不可寫入。 - + Cannot create sudoers file for writing. 無法建立要寫入的 sudoers 檔案。 - + Cannot chmod sudoers file. 無法修改 sudoers 檔案權限。 - + Cannot open groups file for reading. 無法開啟要讀取的 groups 檔案。 @@ -894,12 +935,12 @@ 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>除非您特別選擇,否則本安裝程式將會保留目前的分割表。<br>若不確定,在現代的系統上,建議使用 GPT。 + 選定的儲存裝置的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法,就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置所有的資料。<br>除非特別選擇,否則本安裝程式會保留目前的分割表。<br>若不確定,現時的系統建議使用 GPT。 This device has a <strong>%1</strong> partition table. - 此裝置已有一個 <strong>%1</strong> 分割表了。 + 此裝置已有 <strong>%1</strong> 分割表。 @@ -919,7 +960,7 @@ The installer will quit and all changes will be lost. <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><strong>警告:</strong>MBR 分割表是一個被棄用的 MS-DOS 時代的標準。<br>只能有 4 個<em>主要</em>分割區被建立,其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。 + <br><br>建議這個分割表類型只在以 <strong>BIOS</strong> 開機的舊系統使用。其他大多數情況建議使用 GPT。<br><strong>警告:</strong>MBR 分割表是已過時、源自 MS-DOS 時代的標準。<br>最多只能建立 4 個<em>主要</em>分割區;其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。 @@ -958,7 +999,7 @@ The installer will quit and all changes will be lost. DummyCppJob - + Dummy C++ Job 虛設 C++ 排程 @@ -978,7 +1019,7 @@ The installer will quit and all changes will be lost. &Keep - 保持(&K) + 保留(&K) @@ -1125,12 +1166,12 @@ The installer will quit and all changes will be lost. <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。 @@ -1189,66 +1230,74 @@ The installer will quit and all changes will be lost. GeneralRequirements - + has at least %1 GiB available drive space 有至少 %1 GiB 的可用磁碟空間 - + There is not enough drive space. At least %1 GiB is required. 沒有足夠的磁碟空間。至少需要 %1 GiB。 - + has at least %1 GiB working memory 有至少 %1 GiB 的可用記憶體 - + The system does not have enough working memory. At least %1 GiB is required. 系統沒有足夠的記憶體。至少需要 %1 GiB。 - + 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. 系統未連上網際網路 - + The setup program is not running with administrator rights. 設定程式並未以管理員權限執行。 - + The installer is not running with administrator rights. 安裝程式並未以管理員權限執行。 - + 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 @@ -1275,6 +1324,22 @@ The installer will quit and all changes will be lost. 無法寫入至檔案 <code>%1</code>。 + + InitcpioJob + + + Creating initramfs with mkinitcpio. + 正在使用 mkinitcpio 建立 initramfs。 + + + + InitramfsJob + + + Creating initramfs. + 正在建立 initramfs。 + + InteractiveTerminalPage @@ -1296,7 +1361,7 @@ The installer will quit and all changes will be lost. InteractiveTerminalViewStep - + Script 指令稿 @@ -1325,22 +1390,22 @@ The installer will quit and all changes will be lost. 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 取消(&C) - + &OK 確定(&O) @@ -1353,27 +1418,27 @@ The installer will quit and all changes will be lost. 表單 - + I accept the terms and conditions above. 我接受上述的條款與條件。 - + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. <h1>授權協定</h1>此安裝程式將會安裝受授權條款所限制的專有軟體。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. 請仔細上方的最終用戶授權協定 (EULA)。<br/>若您不同意上述條款,安裝程式將不會繼續。 - + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. <h1>授權協定</h1>此安裝程式可以安裝受授權條款限制的專有軟體,以提供額外的功農與增強使用者體驗。 - + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. 請仔細上方的最終用戶授權協定 (EULA)。<br/>若您不同意上述條款,將不會安裝專有軟體,而會使用其開放原始螞碼版本作為替代。 @@ -1381,7 +1446,7 @@ The installer will quit and all changes will be lost. LicenseViewStep - + License 授權條款 @@ -1389,64 +1454,64 @@ The installer will quit and all changes will be lost. LicenseWidget - + <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> - + Shows the complete license text 顯示完整的授權條款文字 - + Hide license text 隱藏授權條款文字 - + Show license agreement 顯示授權條款協議 - + Hide license agreement 隱藏授權條款協議 - + Opens the license agreement in a browser window. 在瀏覽器視窗開啟授權條款協議。 - + <a href="%1">View license agreement</a> <a href="%1">檢視授權協議</a> @@ -1454,33 +1519,33 @@ The installer will quit and all changes will be lost. LocalePage - + The system language will be set to %1. - 系統語言將會設定為 %1。 + 系統語言會設定為%1。 - + The numbers and dates locale will be set to %1. - 數字與日期語系將會被設定為 %1。 + 數字與日期語系會設定為%1。 - + Region: 地區 - + Zone: 時區 - - + + &Change... 變更...(&C) - + Set timezone to %1/%2.<br/> 設定時區為 %1/%2 。<br/> @@ -1488,38 +1553,92 @@ The installer will quit and all changes will be lost. LocaleViewStep - - Loading location data... - 讀取位置資料 ... - - - + 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. + 根分割區 %1 為 LUKS 但沒有設定密碼。 + + + + Could not create LUKS key file for root partition %1. + 無法為根分割區 %1 建立 LUKS 金鑰檔。 + + + + Could configure LUKS key file on partition %1. + 無法在分割區 %1 設定 LUKS 金鑰檔。 + + + + MachineIdJob + + + Generate machine-id. + 生成 machine-id。 + + + + Configuration Error + 設定錯誤 + + + + No root mount point is set for MachineId. + 未為 MachineId 設定根掛載點。 + + NetInstallPage - + Name 名稱 - + Description 描述 - + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) 網路安裝。(已停用:無法擷取軟體包清單,請檢查您的網路連線) - + Network Installation. (Disabled: Received invalid groups data) 網路安裝。(已停用:收到無效的群組資料) + + + Network Installation. (Disabled: Incorrect configuration) + 網路安裝。(已停用:設定不正確) + NetInstallViewStep @@ -1550,12 +1669,12 @@ The installer will quit and all changes will be lost. OEMViewStep - + OEM Configuration OEM 設定 - + Set the OEM Batch Identifier to <code>%1</code>. 設定 OEM 批次識別符號為 <code>%1</code>。 @@ -1563,117 +1682,117 @@ 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 密碼只是輪換過的舊密碼 @@ -1683,125 +1802,171 @@ The installer will quit and all changes will be lost. 密碼包含了少於 %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 + 軟體包 + Page_Keyboard @@ -1834,47 +1999,86 @@ The installer will quit and all changes will be lost. 該如何稱呼您? - + What name do you want to use to log in? 您想使用何種登入名稱? - + 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> - + What is the name of this computer? 這部電腦的名字是? - + + Your Full Name + 您的全名 + + + + login + 登入 + + + <small>This name will be used if you make the computer visible to others on a network.</small> <small>若您將此電腦設定為讓網路上的其他電腦可見時將會使用此名稱。</small> - + + Computer Name + 電腦名稱 + + + + + 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> @@ -2039,107 +2243,107 @@ 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>esp</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>esp</strong> 旗標以及掛載點 <strong>%2</strong> 的 FAT32 檔案系統。<br/><br/>您也可以不設定 EFI 系統分割區並繼續,但是您的系統可能會啟動失敗。 - + EFI system partition flag not set 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>esp</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>esp</strong> 旗標的分割區。<br/>要設定此旗標,回到上一步並編輯分割區。<br/><br/>您也可以不設定旗標而繼續,但您的系統可能會啟動失敗。 - + 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 partitons to install on. 沒有要安裝的分割區。 @@ -2205,14 +2409,14 @@ The installer will quit and all changes will be lost. ProcessResult - + There was no output from the command. 指令沒有輸出。 - + Output: @@ -2221,52 +2425,52 @@ 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。 @@ -2312,19 +2516,53 @@ Output: (no mount point) - (沒有掛載點) + (沒有掛載點) - + Requirements checking for module <i>%1</i> is complete. 模組 <i>%1</i> 需求檢查完成。 - + %1 (%2) language[name] (country[name]) %1 (%2) + + + No product + 沒有產品 + + + + No description provided. + 未提供描述。 + + + + + + + + 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>。 + + + + Could not read random file <pre>%1</pre>. + 無法讀取檔案 <pre>%1</pre>。 + RemoveVolumeGroupJob @@ -2544,37 +2782,37 @@ Output: 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 。 + 本程式會問您一些問題,然後在您的電腦安裝及設定 %2。 - + For best results, please ensure that this computer: 為了得到最佳的結果,請確保此電腦: - + System requirements 系統需求 @@ -2595,29 +2833,29 @@ Output: 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 無法寫入主機名稱到目標系統 @@ -2758,22 +2996,22 @@ Output: 根掛載點為 %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 終止。 @@ -2796,22 +3034,22 @@ Output: 非法路徑:%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 @@ -2838,7 +3076,7 @@ Output: This is an overview of what will happen once you start the setup procedure. - 這是您開始安裝後所會發生的事的概覽。 + 這是開始安裝後所會發生的事的概覽。 @@ -2857,22 +3095,22 @@ Output: TrackingInstallJob - + Installation feedback 安裝回饋 - + Sending installation feedback. 傳送安裝回饋 - + Internal error in install-tracking. 在安裝追蹤裡的內部錯誤。 - + HTTP request timed out. HTTP 請求逾時。 @@ -2880,28 +3118,28 @@ Output: TrackingMachineNeonJob - + 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。 @@ -2934,17 +3172,17 @@ Output: 安裝追蹤協助 %1 看見他們有多少使用者,用什麼硬體安裝 %1 ,以及(下面的最後兩個選項)取得持續性的資訊,如偏好的應用程式等。要檢視傳送了哪些東西,請點選在每個區域旁邊的說明按鈕。 - + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. 選取這個後,您將會傳送關於您的安裝與硬體的資訊。這個資訊將<b>只會傳送一次</b>,且在安裝完成後。 - + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. 選取這個後,您將會<b>週期性地</b>傳送關於您的安裝、硬體與應用程式的資訊給 %1。 - + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. 選取這個後,您將會<b>經常</b>傳送關於您的安裝、硬體、應用程式與使用模式的資訊給 %1。 @@ -2952,7 +3190,7 @@ Output: TrackingViewStep - + Feedback 回饋 @@ -2960,43 +3198,47 @@ 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 contains invalid characters. Only lowercase letters and numbers are allowed. - 您的使用者名稱含有無效的字元。只能使用小寫字母及數字。 + + Your username must start with a lowercase letter or underscore. + 您的使用者名稱必須以小寫字母或底線開頭。 - + + Only lowercase letters, numbers, underscore and hyphen are allowed. + 僅允許小寫字母、數字、底線與連接號。 + + + + Only letters, numbers, underscore and hyphen are allowed. + 僅允許字母、數字、底線與連接號。 + + + Your hostname is too short. 您的主機名稱太短了。 - + Your hostname is too long. 您的主機名稱太長了。 - - Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - 您的主機名稱含有無效的字元。只能使用字母、數字及破折號。 - - - - + Your passwords do not match! 密碼不符! @@ -3004,11 +3246,24 @@ Output: UsersViewStep - + Users 使用者 + + VariantModel + + + Key + 金鑰 + + + + Value + + + VolumeGroupBaseDialog @@ -3070,23 +3325,48 @@ Output: 表單 - + + + Select application and system language + 選取應用程式與系統語言 + + + + Open donations website + 開啟捐款網頁 + + + + &Donate + 捐款(&D) + + + + Open help and support website + 開啟說明與支援網頁 + + + + Open issues and bug-tracking website + 開啟問題與錯誤追蹤網頁 + + + + Open release notes website + 開啟發行手記網站 + + + &Release notes 發行註記(&R) - + &Known issues 已知問題(&K) - - - Select language - 選取語言 - - - + &Support 支援(&S) @@ -3096,42 +3376,42 @@ Output: 關於(&A) - + <h1>Welcome to the %1 installer.</h1> <h1>歡迎使用 %1 安裝程式。</h1> - + <h1>Welcome to the Calamares installer for %1.</h1> <h1>歡迎使用 %1 的 Calamares 安裝程式。</h1> - + <h1>Welcome to the Calamares setup program for %1.</h1> <h1>歡迎使用 %1 的 Calamares 安裝程式。</h1> - + <h1>Welcome to %1 setup.</h1> <h1>歡迎使用 %1 安裝程式。</h1> - + 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-2019 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/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 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/">Calamares 翻譯團隊</a>。<br/><br/><a href="https://calamares.io/">Calamares</a> 開發由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助。 - + %1 support %1 支援 @@ -3139,7 +3419,7 @@ Output: WelcomeViewStep - + Welcome 歡迎 diff --git a/lang/python.pot b/lang/python.pot index 45c97bca8..ebd00315a 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -26,23 +26,22 @@ msgstr "Configure GRUB." msgid "Mounting partitions." msgstr "Mounting partitions." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Configuration Error" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "No partitions are defined for
{!s}
to use." @@ -94,15 +93,15 @@ msgstr "Unmount file systems." msgid "Filling up filesystems." msgstr "Filling up filesystems." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync failed with error code {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Failed to unpack image \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -110,84 +109,84 @@ msgstr "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "No mount point for root partition" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Bad mount point for root partition" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint is \"{}\", which does not exist, doing nothing" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Bad unsquash configuration" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "The filesystem for \"{}\" ({}) is not supported" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "The source filesystem \"{}\" does not exist" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "The destination \"{}\" in the target system is not a directory" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Cannot write KDM configuration file" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM config file {!s} does not exist" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Cannot write LXDM configuration file" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM config file {!s} does not exist" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Cannot write LightDM configuration file" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM config file {!s} does not exist" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Cannot configure LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "No LightDM greeter installed." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Cannot write SLIM configuration file" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM config file {!s} does not exist" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "No display managers selected for the displaymanager module." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -195,7 +194,7 @@ msgstr "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Display manager configuration was incomplete" @@ -206,27 +205,11 @@ msgstr "Configuring mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "No root mount point is given for
{!s}
to use." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Creating initramfs with mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Process Failed" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Configuring encrypted swap." @@ -324,18 +307,6 @@ msgstr "Install bootloader." msgid "Remove live user from target system" msgstr "Remove live user from target system" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Creating initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Failed to run update-initramfs on the target" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "The exit code was {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Setting hardware clock." @@ -348,6 +319,10 @@ msgstr "Creating initramfs with dracut." msgid "Failed to run dracut on the target" msgstr "Failed to run dracut on the target" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "The exit code was {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Configuring initramfs." @@ -356,18 +331,6 @@ msgstr "Configuring initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Configuring OpenRC dmcrypt service." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Configuring LUKS key file." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Encrypted rootfs setup error" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs partition {!s} is LUKS but no passphrase found." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Writing fstab." diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index f7ec2b95c..75d05ea24 100644 Binary files a/lang/python/ar/LC_MESSAGES/python.mo and b/lang/python/ar/LC_MESSAGES/python.mo differ diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po index a4313c68d..043d609ef 100644 --- a/lang/python/ar/LC_MESSAGES/python.po +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -5,15 +5,16 @@ # # Translators: # Abubakaragoub Y , 2018 +# aboodilankaboot, 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Abubakaragoub Y , 2018\n" +"Last-Translator: aboodilankaboot, 2019\n" "Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,36 +28,35 @@ msgstr "" #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "جاري تركيب الأقسام" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "خطأ في الضبط" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "تعديل خدمات systemd" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "" +msgstr "لا يمكن تعديل الخدمة" #: src/modules/services-systemd/main.py:69 msgid "" @@ -92,108 +92,108 @@ msgstr "الغاء تحميل ملف النظام" #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "جاري ملئ أنظمة الملفات" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." -msgstr "" +msgstr "فشل rsync مع رمز الخطأ {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "فشلت كتابة ملف ضبط KDM." -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "ملف ضبط KDM {!s} غير موجود" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "فشلت كتابة ملف ضبط LXDM." -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "ملف ضبط LXDM {!s} غير موجود" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "فشلت كتابة ملف ضبط LightDM." -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "ملف ضبط LightDM {!s} غير موجود" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "فشل ضبط LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "لم يتم تصيب LightDM" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "فشلت كتابة ملف ضبط SLIM." -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "ملف ضبط SLIM {!s} غير موجود" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "إعداد مدير العرض لم يكتمل" #: src/modules/initcpiocfg/main.py:36 msgid "Configuring mkinitcpio." @@ -202,25 +202,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -254,7 +240,7 @@ msgstr "" #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "الـ runlevel الهدف غير موجود" #: src/modules/services-openrc/main.py:111 msgid "" @@ -264,7 +250,7 @@ msgstr "" #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "الخدمة الهدف غير موجودة" #: src/modules/services-openrc/main.py:120 msgid "" @@ -313,27 +299,15 @@ msgstr[5] "" #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "تثبيت محمل الإقلاع" #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" -msgstr "" - -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" +msgstr "إزالة المستخدم المباشر من النظام الهدف" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "جاري إعداد ساعة الهاردوير" #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." @@ -343,6 +317,10 @@ msgstr "" 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 "" @@ -351,18 +329,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" @@ -381,4 +347,4 @@ msgstr "" #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "جاري حفظ الإعدادات" diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo index c3c75acd6..d54bc30fa 100644 Binary files a/lang/python/ast/LC_MESSAGES/python.mo and b/lang/python/ast/LC_MESSAGES/python.mo differ diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po index 9fe45fc13..11cab6997 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: enolp , 2019\n" "Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -92,17 +91,17 @@ msgstr "Desmontaxe de sistemes de ficheros." #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "Rellenando los sistemes de ficheros." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync falló col códigu de fallu {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Fallu al desempaquetar la imaxe «{}»" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -110,85 +109,85 @@ msgstr "" "Fallu al alcontrar unsquashfs, asegúrate que tienes instaláu'l paquete " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nun hai un puntu de montaxe pa la partición del raigañu" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" "globalstorage nun contién una clave «rootMountPoint». Nun va facese nada" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "El puntu de montaxe ye incorreutu pa la partición del raigañu" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint ye «{}» que nun esiste. Nun va facese nada" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "La configuración d'espardimientu ye incorreuta" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "El sistema de ficheros pa «{}» ({}) nun ta sofitáu" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "El sistema de ficheros d'orixe «{}» nun esiste" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "El destín «{}» nel sistema de destín nun ye un direutoriu" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Nun pue escribise'l ficheru de configuración de KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Nun esiste'l ficheru de configuración de KDM {!s}" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Nun pue escribise'l ficheru de configuración de LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Nun esiste'l ficheru de configuración de LXDM {!s}" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Nun pue escribise'l ficheru de configuración de LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Nun esiste'l ficheru de configuración de LightDM {!s}" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Nun pue configurase LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Nun s'instaló dengún saludador de LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Nun pue escribise'l ficheru de configuración de SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Nun esiste'l ficheru de configuración de SLIM {!s}" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Nun s'esbillaron xestores de pantalles pal módulu displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -196,7 +195,7 @@ msgstr "" "La llista displaymanagers ta balera o nun se definió en bothglobalstorage y " "displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "La configuración del xestor de pantalles nun se completó" @@ -207,25 +206,11 @@ msgstr "Configurando mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Configurando l'intercambéu cifráu." @@ -311,24 +296,12 @@ msgstr[1] "Desaniciando %(num)d paquetes." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Instalando'l xestor d'arrinque." #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "El códigu de salida foi {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Configurando'l reló de hardware." @@ -339,7 +312,11 @@ msgstr "" #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "Fallu al executar dracut nel destín" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "El códigu de salida foi {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." @@ -349,18 +326,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "Configurando'l serviciu dmcrypt d'OpenRC." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/be/LC_MESSAGES/python.mo b/lang/python/be/LC_MESSAGES/python.mo index f068d4290..19d5f5f7a 100644 Binary files a/lang/python/be/LC_MESSAGES/python.mo and b/lang/python/be/LC_MESSAGES/python.mo differ diff --git a/lang/python/be/LC_MESSAGES/python.po b/lang/python/be/LC_MESSAGES/python.po index 49944ac60..4e7bd0b47 100644 --- a/lang/python/be/LC_MESSAGES/python.po +++ b/lang/python/be/LC_MESSAGES/python.po @@ -3,13 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +# Translators: +# Zmicer Turok , 2019 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Last-Translator: Zmicer Turok , 2019\n" "Language-Team: Belarusian (https://www.transifex.com/calamares/teams/20061/be/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,358 +23,332 @@ msgstr "" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "" +msgstr "Наладзіць GRUB." #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "Мантаванне раздзелаў." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Памылка канфігурацыі" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "Раздзелы для
{!s}
не вызначаныя." #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "Наладзіць службы systemd" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "" +msgstr "Немагчыма наладзіць службу" #: src/modules/services-systemd/main.py:69 msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." -msgstr "" +msgstr "systemctl {arg!s} у chroot вярнуў код памылкі {num!s}." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." -msgstr "" +msgstr "Немагчыма ўключыць службу systemd {name!s}." #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." -msgstr "" +msgstr "Немагчыма ўключыць мэту systemd {name!s}." #: src/modules/services-systemd/main.py:78 msgid "Cannot disable systemd target {name!s}." -msgstr "" +msgstr "Немагчыма выключыць мэту systemd {name!s}." #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "Немагчыма замаскаваць адзінку systemd {name!s}. " #: src/modules/services-systemd/main.py:82 msgid "" "Unknown systemd commands {command!s} and " "{suffix!s} for unit {name!s}." msgstr "" +"Невядомыя systemd загады {command!s} і {suffix!s} " +"для адзінкі {name!s}." #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Адмантаваць файлавыя сістэмы." #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "Запаўненне файлавых сістэм." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." -msgstr "" +msgstr "памылка rsync з кодам {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" -msgstr "" +msgstr "Не атрымалася распакаваць вобраз \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" +"Не атрымалася знайсці unsquashfs, праверце ці ўсталяваны ў вас пакунак " +"squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" -msgstr "" +msgstr "Для каранёвага раздзела няма пункта мантавання" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -msgstr "" +msgstr "globalstorage не змяшчае ключа \"rootMountPoint\", нічога не выконваецца" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" -msgstr "" +msgstr "Хібны пункт мантавання для каранёвага раздзела" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "" +msgstr "rootMountPoint \"{}\" не існуе, нічога не выконваецца" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" -msgstr "" +msgstr "Хібная канфігурацыя unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" -msgstr "" +msgstr "Файлавая сістэма для \"{}\" ({}) не падтрымліваецца" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" -msgstr "" +msgstr "Зыходная файлавая сістэма \"{}\" не існуе" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "" +msgstr "Пункт прызначэння \"{}\" у мэтавай сістэме не з’яўляецца каталогам" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" -msgstr "" +msgstr "Немагчыма запісаць файл канфігурацыі KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" -msgstr "" +msgstr "Файл канфігурацыі KDM {!s} не існуе" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" -msgstr "" +msgstr "Немагчыма запісаць файл канфігурацыі LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" -msgstr "" +msgstr "Файл канфігурацыі LXDM {!s} не існуе" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" -msgstr "" +msgstr "Немагчыма запісаць файл канфігурацыі LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" -msgstr "" +msgstr "Файл канфігурацыі LightDM {!s} не існуе" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" -msgstr "" +msgstr "Немагчыма наладзіць LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." -msgstr "" +msgstr "LightDM greeter не ўсталяваны." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" -msgstr "" +msgstr "Немагчыма запісаць файл канфігурацыі SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" -msgstr "" +msgstr "Файл канфігурацыі SLIM {!s} не існуе" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." -msgstr "" +msgstr "У модулі дысплейных кіраўнікоў нічога не абрана." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" +"Спіс дысплейных кіраўнікоў пусты альбо не вызначаны ў bothglobalstorage і " +"displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "Наладка дысплейнага кіраўніка не завершаная." #: src/modules/initcpiocfg/main.py:36 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "Наладка mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" +msgstr "Каранёвы пункт мантавання для
{!s}
не пададзены." #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "Наладка зашыфраванага swap." #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Усталёўка даных." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "" +msgstr "Наладзіць службы OpenRC" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "" +msgstr "Не атрымалася дадаць службу {name!s} на ўзровень запуску {level!s}." #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "" +msgstr "Не атрымалася выдаліць службу {name!s} з узроўня запуску {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} на ўзроўні " +"запуску {level!s}." #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" +"rc-update {arg!s} пад chroot вярнуўся з кодам памылкі {num!s}." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "Мэтавы ўзровень запуску не існуе" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." -msgstr "" +msgstr "Шлях {path!s} да ўзроўня запуску {level!s} не існуе." #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "Мэтавая служба не існуе" #: src/modules/services-openrc/main.py:120 msgid "" "The path for service {name!s} is {path!s}, which does not " "exist." -msgstr "" +msgstr "Шлях {path!s} да службы {level!s} не існуе." #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "" +msgstr "Наладзіць тэму Plymouth" #: src/modules/machineid/main.py:36 msgid "Generate machine-id." -msgstr "" +msgstr "Стварыць machine-id." #: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Апрацоўка пакункаў (%(count)d / %(total)d)" #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." -msgstr "" +msgstr "Усталяваць пакункі." #: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Усталёўка аднаго пакунка." +msgstr[1] "Усталёўка %(num)d пакункаў." +msgstr[2] "Усталёўка %(num)d пакункаў." +msgstr[3] "Усталёўка%(num)d пакункаў." #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Выдаленне аднаго пакунка." +msgstr[1] "Выдаленне %(num)d пакункаў." +msgstr[2] "Выдаленне %(num)d пакункаў." +msgstr[3] "Выдаленне %(num)d пакункаў." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Усталяваць загрузчык." #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" -msgstr "" - -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" +msgstr "Выдаліць часовага карыстальніка з мэтавай сістэмы" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "Наладка апаратнага гадзінніка." #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "Стварэнне initramfs з dracut." #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "Не атрымалася запусціць dracut у пункце прызначэння" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Код выхаду {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "Наладка initramfs." #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" +msgstr "Наладка OpenRC dmcrypt." #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "Запіс fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Задача Dummy python." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Крок Dummy python {}" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "Наладка лакаляў." #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "Захаванне сеткавай канфігурацыі." diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index 728dac817..6d486db2f 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Демонтирай файловите системи." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 52cfde3ed..d235d0590 100644 Binary files a/lang/python/ca/LC_MESSAGES/python.mo and b/lang/python/ca/LC_MESSAGES/python.mo differ diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po index ce6cdf405..6017b5d1a 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Davidmp , 2019\n" "Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" @@ -29,23 +29,22 @@ msgstr "Configura el GRUB." msgid "Mounting partitions." msgstr "Es munten les particions." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Error de configuració" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "No s'han definit particions perquè les usi
{!s}
." @@ -98,15 +97,15 @@ msgstr "Desmunta els sistemes de fitxers." msgid "Filling up filesystems." msgstr "S'omplen els sistemes de fitxers." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "Ha fallat rsync amb el codi d'error {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Ha fallat desempaquetar la imatge \"{}\"." -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,85 +113,85 @@ msgstr "" "Ha fallat trobar unsquashfs, assegureu-vos que tingueu el paquet squashfs-" "tools instal·lat." -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "No hi ha punt de muntatge per a la partició d'arrel." -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage no conté cap clau \"rootMountPoint\". No es fa res." -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Punt de muntatge incorrecte per a la partició d'arrel" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "El punt de muntatge d'arrel és \"{}\", que no existeix. No es fa res." -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Configuració incorrecta d'unsquash." -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "El sistema de fitxers per a \"{}\" ({}) no s'admet." -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "El sistema de fitxers font \"{}\" no existeix." -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "La destinació \"{}\" al sistema de destinació no és un directori." -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "No es pot escriure el fitxer de configuració del KDM." -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "El fitxer de configuració del KDM {!s} no existeix." -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "No es pot escriure el fitxer de configuració de l'LXDM." -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "El fitxer de configuració de l'LXDM {!s} no existeix." -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "No es pot escriure el fitxer de configuració del LightDM." -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "El fitxer de configuració del LightDM {!s} no existeix." -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "No es pot configurar el LightDM." -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "No hi ha benvinguda instal·lada per al LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "No es pot escriure el fitxer de configuració de l'SLIM." -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "El fitxer de configuració de l'SLIM {!s} no existeix." -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "No hi ha cap gestor de pantalla seleccionat per al mòdul displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -200,7 +199,7 @@ msgstr "" "La llista de gestors de pantalla és buida o no definida a bothglobalstorage " "i displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "La configuració del gestor de pantalla no era completa." @@ -211,28 +210,12 @@ msgstr "Es configura mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "No s'ha proporcionat el punt de muntatge perquè l'usi
{!s}
." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Es creen initramfs amb mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Ha fallat el procés." - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"El procés
mkinitcpio
ha fallat amb el codi d'error {!s}. L'ordre " -"era
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Es configura l'intercanvi encriptat." @@ -331,18 +314,6 @@ msgstr "S'instal·la el carregador d'arrencada." msgid "Remove live user from target system" msgstr "Suprimeix l'usuari de la sessió autònoma del sistema de destinació" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Es creen initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Ha fallat executar update-initramfs a la destinació." - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "El codi de sortida ha estat {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "S'estableix el rellotge del maquinari." @@ -355,6 +326,10 @@ msgstr "Es creen initramfs amb dracut." msgid "Failed to run dracut on the target" msgstr "Ha fallat executar dracut a la destinació." +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "El codi de sortida ha estat {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Es configuren initramfs." @@ -363,19 +338,6 @@ msgstr "Es configuren initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Es configura el sevei OpenRC dmcrypt." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Es configura el fitxer de clau LUKS." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Error de configuració de rootfs encriptat." - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" -"La partició de rootfs {!s} és LUKS però no se n'ha trobat cap contrasenya." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "S'escriu fstab." diff --git a/lang/python/ca@valencia/LC_MESSAGES/python.po b/lang/python/ca@valencia/LC_MESSAGES/python.po index 8e6674400..1b632c8f8 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index 508870063..0ec2c6aef 100644 Binary files a/lang/python/cs_CZ/LC_MESSAGES/python.mo and b/lang/python/cs_CZ/LC_MESSAGES/python.mo differ diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po index be17fd6d8..3687be0a0 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Pavel Borecki , 2019\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" @@ -30,23 +30,22 @@ msgstr "Nastavování zavaděče GRUB." msgid "Mounting partitions." msgstr "Připojování oddílů." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Chyba nastavení" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Pro
{!s}
nejsou zadány žádné oddíly." @@ -98,15 +97,15 @@ msgstr "Odpojit souborové systémy." msgid "Filling up filesystems." msgstr "Naplňování souborových systémů." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync se nezdařilo s chybových kódem {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Nepodařilo se rozbalit obraz „{}“" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,84 +113,84 @@ msgstr "" "Nepodařilo se nalézt unsquashfs – ověřte, že máte nainstalovaný balíček " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Žádný přípojný bot pro kořenový oddíl" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage neobsahuje klíč „rootMountPoint“ – nic se nebude dělat" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Chybný přípojný bod pro kořenový oddíl" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "kořenovýPřípojnýBod je „{}“, který neexistuje – nic se nebude dělat" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Chybná nastavení unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Souborový systém „{}“ ({}) není podporován" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Zdrojový souborový systém „{}“ neexistuje" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Cíl „{}“ v cílovém systému není složka" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Nedaří se zapsat soubor s nastaveními pro KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Soubor s nastaveními pro KDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Nedaří se zapsat soubor s nastaveními pro LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Soubor s nastaveními pro LXDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Nedaří se zapsat soubor s nastaveními pro LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Soubor s nastaveními pro LightDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Nedaří se nastavit LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Není nainstalovaný žádný LightDM přivítač" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Nedaří se zapsat soubor s nastaveními pro SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Soubor s nastaveními pro SLIM {!s} neexistuje" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Pro modul správce sezení nejsou vybrány žádní správci sezení." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -199,7 +198,7 @@ msgstr "" "Seznam správců displejů je prázdný nebo není definován v bothglobalstorage a" " displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Nastavení správce displeje nebylo úplné" @@ -210,27 +209,11 @@ msgstr "Nastavování mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "Pro
{!s}
není zadán žádný přípojný bod." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Vytváření initramfs pomocí mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Proces zhavaroval" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Proces
mkinitcpio
zhavaroval kódem chyby {!s}. Příkaz byl " -"
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Nastavování šifrovaného prostoru pro odkládání stránek paměti." @@ -334,18 +317,6 @@ msgstr "Instalace zavaděče systému." msgid "Remove live user from target system" msgstr "Odebrat uživatele živé relace z cílového systému" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Vytváření initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Na cíli se nepodařilo spustit update-initramfs" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Návratový kód byl {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Nastavování hardwarových hodin." @@ -358,6 +329,10 @@ msgstr "Vytváření initramfs s dracut." msgid "Failed to run dracut on the target" msgstr "Na cíli se nepodařilo spustit dracut" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Návratový kód byl {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Nastavování initramfs." @@ -366,18 +341,6 @@ msgstr "Nastavování initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Nastavování služby OpenRC dmcrypt." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Nastavování souboru s klíčem pro LUKS šifrování." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Chyba nastavení šifrovaného kořenového oddílu" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Kořenový oddíl {!s} je LUKS ale nebyla nalezena žádná heslová fráze." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Zapisování fstab." diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index 60e2bdda8..81024c8f7 100644 Binary files a/lang/python/da/LC_MESSAGES/python.mo and b/lang/python/da/LC_MESSAGES/python.mo differ diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po index 271154843..b5552a8ff 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: scootergrisen, 2019\n" "Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" @@ -30,23 +30,22 @@ msgstr "Konfigurer GRUB." msgid "Mounting partitions." msgstr "Monterer partitioner." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Fejl ved konfiguration" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Der er ikke angivet nogle partitioner som
{!s}
skal bruge." @@ -98,15 +97,15 @@ msgstr "Afmonter filsystemer." msgid "Filling up filesystems." msgstr "Udfylder filsystemer." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync mislykkedes med fejlkoden {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Kunne ikke udpakke aftrykket \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,85 +113,85 @@ msgstr "" "Kunne ikke finde unsquashfs, sørg for at squashfs-tools-pakken er " "installeret" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Intet monteringspunkt til rodpartition" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage indeholder ikke en \"rootMountPoint\"-nøgle, gør intet" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Dårligt monteringspunkt til rodpartition" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint er \"{}\", hvilket ikke findes, gør intet" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Dårlig unsquash-konfiguration" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Filsystemet til \"{}\" ({}) understøttes ikke" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Kildefilsystemet \"{}\" findes ikke" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Destinationen \"{}\" i målsystemet er ikke en mappe" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Kan ikke skrive KDM-konfigurationsfil" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM-konfigurationsfil {!s} findes ikke" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Kan ikke skrive LXDM-konfigurationsfil" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM-konfigurationsfil {!s} findes ikke" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Kan ikke skrive LightDM-konfigurationsfil" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM-konfigurationsfil {!s} findes ikke" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Kan ikke konfigurerer LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Der er ikke installeret nogen LightDM greeter." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Kan ikke skrive SLIM-konfigurationsfil" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM-konfigurationsfil {!s} findes ikke" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Der er ikke valgt nogen displayhåndteringer til displayhåndtering-modulet." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -200,7 +199,7 @@ msgstr "" "Listen over displayhåndteringer er tom eller udefineret i bothglobalstorage " "og displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Displayhåndtering-konfiguration er ikke komplet" @@ -211,28 +210,12 @@ msgstr "Konfigurerer mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Der er ikke angivet noget rodmonteringspunkt som
{!s}
skal bruge." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Opretter initramfs med mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Processen mislykkedes" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Processen
mkinitcpio
mislykkedes med fejlkoden {!s}. Kommandoen " -"blev
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Konfigurerer krypteret swap." @@ -329,18 +312,6 @@ msgstr "Installér bootloader." msgid "Remove live user from target system" msgstr "Fjern livebruger fra målsystemet" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Opretter initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Kunne ikke køre update-initramfs på målet" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Afslutningskoden var {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Indstiller hardwareur." @@ -353,6 +324,10 @@ msgstr "Opretter initramfs med dracut." msgid "Failed to run dracut on the target" msgstr "Kunne ikke køre dracut på målet" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Afslutningskoden var {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Konfigurerer initramfs." @@ -361,19 +336,6 @@ msgstr "Konfigurerer initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Konfigurerer OpenRC dmcrypt-tjeneste." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Konfigurerer LUKS-nøglefil." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Fejl ved opsætning af krypteret rootfs" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" -"Rootfs-partitionen {!s} er LUKS men der blev ikke fundet nogen adgangskode." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Skriver fstab." diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index d0f2e4e58..7196846bc 100644 Binary files a/lang/python/de/LC_MESSAGES/python.mo and b/lang/python/de/LC_MESSAGES/python.mo differ diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po index dd59b4958..f90c4ccb5 100644 --- a/lang/python/de/LC_MESSAGES/python.po +++ b/lang/python/de/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Andreas Eitel , 2019\n" "Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" @@ -31,23 +31,22 @@ msgstr "GRUB konfigurieren." msgid "Mounting partitions." msgstr "Partitionen mounten." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Konfigurationsfehler" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" "Es sind keine Partitionen für
{!s}
zur Verwendung definiert." @@ -101,15 +100,15 @@ msgstr "Dateisysteme aushängen." msgid "Filling up filesystems." msgstr "Auffüllen von Dateisystemen." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync fehlgeschlagen mit Fehlercode {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Entpacken des Image \"{}\" fehlgeschlagen" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -117,84 +116,84 @@ msgstr "" "Konnte kein unsquashfs finden, stellen Sie sicher, dass Sie das squashfs-" "tools Paket installiert haben" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Kein Mount-Punkt für die Root-Partition" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage enthält keinen \"rootMountPoint\"-Schlüssel, tue nichts" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Schlechter Mount-Punkt für die Root-Partition" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint ist \"{}\", welcher nicht existiert, tue nichts" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Schlechte unsquash Konfiguration" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Das Dateisystem für \"{}\" ({}) wird nicht unterstützt" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Das Quelldateisystem \"{}\" existiert nicht" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Das Ziel \"{}\" im Zielsystem ist kein Verzeichnis" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Schreiben der KDM Konfigurationsdatei nicht möglich" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM Konfigurationsdatei {!s} existiert nicht" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Schreiben der LXDM Konfigurationsdatei nicht möglich" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM Konfigurationsdatei {!s} existiert nicht" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Schreiben der LightDM Konfigurationsdatei nicht möglich" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM Konfigurationsdatei {!s} existiert nicht" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Konfiguration von LightDM ist nicht möglich" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Kein LightDM Begrüßer installiert." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Schreiben der SLIM Konfigurationsdatei nicht möglich" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM Konfigurationsdatei {!s} existiert nicht" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Keine Displaymanager für das Displaymanagermodul ausgewählt." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -202,7 +201,7 @@ msgstr "" "Die Displaymanagerliste ist leer oder nicht in bothglobalstorage und " "displaymanager.conf definiert." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Displaymanagerkonfiguration war unvollständig." @@ -213,28 +212,12 @@ msgstr "mkinitcpio konfigurieren." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Es ist kein Root-Mount-Punkt für
{!s}
zur Verwendung angegeben." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Erstelle initramfs mit mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Prozess fehlgeschlagen" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Der Prozess
mkinitcpio
ist mit dem Fehlercode {!s} " -"fehlgeschlagen. Der Befehl war
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Konfiguriere verschlüsseltes swap." @@ -331,18 +314,6 @@ msgstr "Installiere Bootloader." msgid "Remove live user from target system" msgstr "Entferne Live-Benutzer aus dem Zielsystem" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Erstelle initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Ausführen von update-initramfs auf dem Ziel schlug fehl" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Der Exit-Code war {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Einstellen der Hardware-Uhr." @@ -355,6 +326,10 @@ msgstr "Erstelle initramfs mit dracut." msgid "Failed to run dracut on the target" msgstr "Ausführen von dracut auf dem Ziel schlug fehl" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Der Exit-Code war {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "initramfs konfigurieren." @@ -363,18 +338,6 @@ msgstr "initramfs konfigurieren." msgid "Configuring OpenRC dmcrypt service." msgstr "Konfiguration des OpenRC dmcrypt-Dienstes." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "LUKS-Schlüsseldatei konfigurieren." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Verschlüsselter Rootfs-Setup-Fehler" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs-Partition {!s} ist LUKS, aber keine Passphrase gefunden." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Schreibe fstab." diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po index 9dab7d28b..71f3e2800 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po index ae119927c..0882788c1 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Unmount file systems." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po index 17f5f6917..81fbde1b3 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Demeti dosieraj sistemoj." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index 5f74bc29c..5dac1ae94 100644 Binary files a/lang/python/es/LC_MESSAGES/python.mo and b/lang/python/es/LC_MESSAGES/python.mo differ diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index e844affae..1aa22db98 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -7,16 +7,16 @@ # strel, 2018 # Francisco Sánchez López de Lerma , 2018 # Guido Grasso , 2018 -# Fito JB, 2019 +# Adolfo Jayme-Barrientos, 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Fito JB, 2019\n" +"Last-Translator: Adolfo Jayme-Barrientos, 2019\n" "Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,23 +32,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -97,15 +96,15 @@ msgstr "Desmontar sistemas de archivos." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "No se pudo desempaquetar la imagen «{}»" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -113,92 +112,92 @@ msgstr "" "No se encontró unsquashfs; cerciórese de que tenga instalado el paquete " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "No se puede escribir el archivo de configuración KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "El archivo de configuración {!s} de KDM no existe" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "No se puede escribir el archivo de configuración LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "El archivo de configuracion {!s} de LXDM no existe" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "No se puede escribir el archivo de configuración de LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "El archivo de configuración {!s} de LightDM no existe" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "No se puede configurar LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "No se puede escribir el archivo de configuración de SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "El archivo de configuración {!s} de SLIM no existe" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "No se ha seleccionado ningún gestor de pantalla para el modulo " "displaymanager" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "La configuración del gestor de pantalla estaba incompleta" @@ -209,25 +208,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -318,18 +303,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -342,6 +315,10 @@ msgstr "" 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 "" @@ -350,18 +327,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index e8a93134a..8340b7aee 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -30,23 +30,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -95,104 +94,104 @@ msgstr "Desmontar sistemas de archivo." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "No se puede escribir el archivo de configuración de KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "El archivo de configuración de KDM {!s} no existe" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "No se puede escribir el archivo de configuración de LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "El archivo de configuración de LXDM {!s} no existe" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "No se puede escribir el archivo de configuración de LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "El archivo de configuración de LightDM {!s} no existe" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "No se puede configurar LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "No se puede escribir el archivo de configuración de SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -203,25 +202,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -312,18 +297,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -336,6 +309,10 @@ msgstr "" 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 "" @@ -344,18 +321,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po index c10458354..ef52c83d7 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index ba6dcdd14..8f796c2df 100644 Binary files a/lang/python/et/LC_MESSAGES/python.mo and b/lang/python/et/LC_MESSAGES/python.mo differ diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index 249dd1d08..f2cabea7f 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Madis, 2019 +# Madis Otenurm, 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Madis, 2019\n" +"Last-Translator: Madis Otenurm, 2019\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Haagi failisüsteemid lahti." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDM-konfiguratsioonifaili ei saa kirjutada" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM-konfiguratsioonifail {!s} puudub" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LXDM-konfiguratsioonifaili ei saa kirjutada" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM-konfiguratsioonifail {!s} puudub" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDM-konfiguratsioonifaili ei saa kirjutada" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM-konfiguratsioonifail {!s} puudub" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "LightDM seadistamine ebaõnnestus" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIM-konfiguratsioonifaili ei saa kirjutada" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM-konfiguratsioonifail {!s} puudub" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po index 70b4167a3..91c43dd37 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,99 +93,99 @@ msgstr "Fitxategi sistemak desmuntatu." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Ezin da KDM konfigurazio fitxategia idatzi" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM konfigurazio fitxategia {!s} ez da existitzen" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Ezin da LXDM konfigurazio fitxategia idatzi" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM konfigurazio fitxategia {!s} ez da existitzen" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Ezin da LightDM konfigurazio fitxategia idatzi" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM konfigurazio fitxategia {!s} ez da existitzen" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Ezin da LightDM konfiguratu" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Ez dago LightDM harrera instalatua." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Ezin da SLIM konfigurazio fitxategia idatzi" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM konfigurazio fitxategia {!s} ez da existitzen" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Ez da pantaila kudeatzailerik aukeratu pantaila-kudeatzaile modulurako." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -194,7 +193,7 @@ msgstr "" "Pantaila-kudeatzaile-zerrenda hutsik dago edo definitzeke bothglobalstorage " "eta displaymanager.conf" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Pantaila kudeatzaile konfigurazioa osotu gabe" @@ -205,25 +204,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -314,18 +299,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -338,6 +311,10 @@ msgstr "" 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 "" @@ -346,18 +323,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po index 094b31bb2..953f05494 100644 --- a/lang/python/fa/LC_MESSAGES/python.po +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" "MIME-Version: 1.0\n" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index b46237dde..2b3a62198 100644 Binary files a/lang/python/fi_FI/LC_MESSAGES/python.mo and b/lang/python/fi_FI/LC_MESSAGES/python.mo differ diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po index 88edb80d4..caa90ad3e 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Kimmo Kujansuu , 2019\n" "Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" @@ -29,23 +29,22 @@ msgstr "Määritä GRUB." msgid "Mounting partitions." msgstr "Yhdistä osiot." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Määritysvirhe" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Ei ole määritetty käyttämään osioita
{!s}
." @@ -96,15 +95,15 @@ msgstr "Irrota tiedostojärjestelmät käytöstä." msgid "Filling up filesystems." msgstr "Paikannetaan tiedostojärjestelmiä." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync epäonnistui virhekoodilla {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Kuvan purkaminen epäonnistui \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -112,84 +111,84 @@ msgstr "" "Ei löytynyt unsquashfs, varmista, että sinulla on squashfs-tools paketti " "asennettuna" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Ei liitoskohtaa juuri root-osiolle" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage ei sisällä \"rootMountPoint\" avainta, eikä tee mitään" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Huono kiinnityspiste root-osioon" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint on \"{}\", jota ei ole, eikä tee mitään" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Huono epäpuhdas kokoonpano" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Tiedostojärjestelmää \"{}\" ({}) ei tueta" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Lähde tiedostojärjestelmää \"{}\" ei ole olemassa" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Kohdejärjestelmän \"{}\" kohde ei ole hakemisto" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDM-määritystiedostoa ei voi kirjoittaa" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM-määritystiedostoa {!s} ei ole olemassa" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LXDM-määritystiedostoa ei voi kirjoittaa" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM-määritystiedostoa {!s} ei ole olemassa" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDM-määritystiedostoa ei voi kirjoittaa" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM-määritystiedostoa {!s} ei ole olemassa" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "LightDM määritysvirhe" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "LightDM ei ole asennettu." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIM-määritystiedostoa ei voi kirjoittaa" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM-määritystiedostoa {!s} ei ole olemassa" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Displaymanager-moduulia varten ei ole valittu näyttönhallintaa." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -197,7 +196,7 @@ msgstr "" "Displaymanager-luettelo on tyhjä tai määrittelemätön, sekä globalstorage, " "että displaymanager.conf tiedostossa." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Näytönhallinnan kokoonpano oli puutteellinen" @@ -208,28 +207,12 @@ msgstr "Määritetään mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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-juuri kiinnityspistettä
{!s}
ei ole annettu käytettäväksi." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Initramfs luominen mkinitcpion avulla." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Prosessi epäonnistui" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Prosessi
mkinitcpio
epäonnistui virhekoodilla {!s}. Komento oli " -"
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Salatun swapin määrittäminen." @@ -306,15 +289,15 @@ msgstr "Asenna paketteja." #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Asentaa " +msgstr[1] "Asentaa %(num)d paketteja." #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Removing one package." +msgstr[1] "Poistaa %(num)d paketteja." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." @@ -324,18 +307,6 @@ msgstr "Asenna bootloader." msgid "Remove live user from target system" msgstr "Poista Live-käyttäjä kohdejärjestelmästä" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Luodaan initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Kohteen update-initramfs suorittaminen epäonnistui" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Poistumiskoodi oli {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Laitteiston kellon asettaminen." @@ -348,6 +319,10 @@ msgstr "Initramfs luominen dracut:lla." msgid "Failed to run dracut on the target" msgstr "Dracut-ohjelman suorittaminen ei onnistunut" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Poistumiskoodi oli {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Määritetään initramfs." @@ -356,18 +331,6 @@ msgstr "Määritetään initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "OpenRC dmcrypt-palvelun määrittäminen." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "LUKS-avaintiedoston määrittäminen." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Salattu rootfs asennusvirhe" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs-osio {!s} on LUKS, mutta salasanaa ei löydy." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Fstab kirjoittaminen." diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 9919ffc53..9595cd801 100644 Binary files a/lang/python/fr/LC_MESSAGES/python.mo and b/lang/python/fr/LC_MESSAGES/python.mo differ diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po index 20aa77057..35811e6d7 100644 --- a/lang/python/fr/LC_MESSAGES/python.po +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -9,7 +9,7 @@ # Aestan , 2018 # Jeremy Gourmel , 2018 # Aurnytoraink , 2018 -# Doryan R, 2019 +# a270031086f2a0d3514bc0cb507b48f6, 2019 # Seboss666 , 2019 # Florian B , 2019 # Arnaud Ferraris , 2019 @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -37,23 +37,22 @@ msgstr "Configuration du GRUB." msgid "Mounting partitions." msgstr "Montage des partitions." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Erreur de configuration" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" "Aucune partition n'est définie pour être utilisée par
{!s}
." @@ -107,15 +106,15 @@ msgstr "Démonter les systèmes de fichiers" msgid "Filling up filesystems." msgstr "Remplir les systèmes de fichiers." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync a échoué avec le code d'erreur {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Impossible de décompresser l'image \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -123,86 +122,86 @@ msgstr "" "Échec de la recherche de unsquashfs, assurez-vous que le paquetage squashfs-" "tools est installé." -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Pas de point de montage pour la partition racine" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage ne contient pas de clé \"rootMountPoint\", ne fait rien" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Mauvais point de montage pour la partition racine" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint est \"{}\", ce qui n'existe pas, ne fait rien" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Mauvaise configuration unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Le système de fichiers pour \"{}\" ({}) n'est pas supporté" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Le système de fichiers source \"{}\" n'existe pas" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "La destination \"{}\" dans le système cible n'est pas un répertoire" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Impossible d'écrire le fichier de configuration KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Le fichier de configuration KDM n'existe pas" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Impossible d'écrire le fichier de configuration LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Le fichier de configuration LXDM n'existe pas" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Impossible d'écrire le fichier de configuration LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Le fichier de configuration LightDM {!S} n'existe pas" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Impossible de configurer LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Aucun hôte LightDM est installé" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Impossible d'écrire le fichier de configuration SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Le fichier de configuration SLIM {!S} n'existe pas" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Aucun gestionnaire d'affichage n'a été sélectionné pour le module de " "gestionnaire d'affichage" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -210,7 +209,7 @@ msgstr "" "La liste des gestionnaires d'affichage est vide ou indéfinie dans " "bothglobalstorage et displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "La configuration du gestionnaire d'affichage était incomplète" @@ -221,29 +220,13 @@ msgstr "Configuration de mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Aucun point de montage racine n'a été donné pour être utilisé par " "
{!s}
." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Création de l'initramfs avec mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Échec du processus" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Le processus
mkinitcpio
a échoué avec le code d'erreur {!s}. La " -"commande était
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Configuration du swap chiffrée." @@ -342,18 +325,6 @@ msgstr "Installation du bootloader." msgid "Remove live user from target system" msgstr "Supprimer l'utilisateur live du système cible" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "création du initramfs" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Erreur d'exécution de update-initramfs sur la cible." - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Le code de sortie était {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Configuration de l'horloge matériel." @@ -366,6 +337,10 @@ msgstr "Configuration du initramfs avec dracut." msgid "Failed to run dracut on the target" msgstr "Erreur d'exécution de dracut sur la cible." +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Le code de sortie était {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Configuration du initramfs." @@ -374,20 +349,6 @@ msgstr "Configuration du initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Configuration du service OpenRC dmcrypt." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Configuration de la clé de fichier LUKS." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Erreur du chiffrement du setup rootfs" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" -"La partition racine {!s} est de type LUKS mais aucune phrase de passe n'a " -"été trouvée." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Écriture du fstab." diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po index 0a11411ce..ad1e6e10c 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po index ec16f9216..4ed2b9414 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,99 +93,99 @@ msgstr "Desmontar sistemas de ficheiros." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Non é posíbel escribir o ficheiro de configuración de KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "O ficheiro de configuración de KDM {!s} non existe" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Non é posíbel escribir o ficheiro de configuración de LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "O ficheiro de configuración de LXDM {!s} non existe" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Non é posíbel escribir o ficheiro de configuración de LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "O ficheiro de configuración de LightDM {!s} non existe" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Non é posíbel configurar LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Non se instalou o saudador de LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Non é posíbel escribir o ficheiro de configuración de SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "O ficheiro de configuración de SLIM {!s} non existe" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Non hai xestores de pantalla seleccionados para o módulo displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -194,7 +193,7 @@ msgstr "" "A lista de xestores de pantalla está baleira ou sen definir en " "bothglobalstorage e displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "A configuración do xestor de pantalla foi incompleta" @@ -205,25 +204,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -314,18 +299,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -338,6 +311,10 @@ msgstr "" 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 "" @@ -346,18 +323,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po index 440bb35bf..b5da5797c 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 6028c7920..423f053a9 100644 Binary files a/lang/python/he/LC_MESSAGES/python.mo and b/lang/python/he/LC_MESSAGES/python.mo differ diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 8f50e96a1..c0d0ba96c 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Yaron Shahrabani , 2019\n" "Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" @@ -30,23 +30,22 @@ msgstr "הגדרת GRUB." msgid "Mounting partitions." msgstr "מחיצות מעוגנות." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "לא הוגדרו מחיצות לשימוש של
{!s}
." @@ -98,98 +97,98 @@ msgstr "ניתוק עיגון מערכות קבצים." msgid "Filling up filesystems." msgstr "מערכות הקבצים מתמלאות." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync נכשל עם קוד השגיאה {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "פריסת התמונה „{}” נכשלה" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "איתור unsquashfs לא צלח, נא לוודא שהחבילה squashfs-tools מותקנת" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "אין נקודת עגינה למחיצת העל" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "ב־globalstorage אין את המפתח „rootMountPoint”, לא תתבצע אף פעולה" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "נקודת העגינה של מחיצת השורה שגויה" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint מוגדרת בתור „{}”, שאינו קיים, לא תתבצע אף פעולה" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "תצורת unsquash שגויה" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "מערכת הקבצים עבור „{}” ‏({}) אינה נתמכת" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "מערכת הקבצים במקור „{}” אינה קיימת" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "היעד „{}” במערכת הקבצים המיועדת אינו תיקייה" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "לא ניתן לכתוב את קובץ התצורה של KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "קובץ התצורה של KDM ‏{!s} אינו קיים" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "לא ניתן לכתוב את קובץ התצורה של LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "קובץ התצורה של LXDM ‏{!s} אינו קיים" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "לא ניתן לכתוב את קובץ התצורה של LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "קובץ התצורה של LightDM ‏{!s} אינו קיים" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "לא ניתן להגדיר את LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "לא מותקן מקבל פנים מסוג LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "לא ניתן לכתוב קובץ תצורה של SLIM." -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "קובץ התצורה {!s} של SLIM אינו קיים" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "לא נבחרו מנהלי תצוגה למודול displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -197,7 +196,7 @@ msgstr "" "הרשימה של מנהלי התצוגה ריקה או שאינה מוגדרת תחת bothglobalstorage " "ו־displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "תצורת מנהל התצוגה אינה שלמה" @@ -208,27 +207,11 @@ msgstr "mkinitcpio מותקן." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "לא סופקה נקודת עגינת שורש לשימוש של
{!s}
." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "נוצר initramfs עם mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "התהליך נכשל" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"התהליך
mkinitcpio
נכשל עם קוד השגיאה {!s}. הפקודה הייתה " -"
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "מוגדר שטח החלפה מוצפן." @@ -328,18 +311,6 @@ msgstr "התקנת מנהל אתחול." msgid "Remove live user from target system" msgstr "הסרת משתמש חי ממערכת היעד" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "נוצר initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "הרצת update-initramfs על היעד נכשלה" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "קוד היציאה היה {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "שעון החומרה מוגדר." @@ -352,6 +323,10 @@ msgstr "נוצר initramfs עם dracut." 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 מוגדר." @@ -360,18 +335,6 @@ msgstr "initramfs מוגדר." msgid "Configuring OpenRC dmcrypt service." msgstr "שירות dmcrypt ל־OpenRC מוגדר." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "קובץ מפתח ה־LUKS מוגדר." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "שגיאת התקנת מחיצת שורש מוצפנת" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "מחיצת השורש {!s} היא מסוג LUKS אך לא נמצאה מילת צופן." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "fstab נכתב." diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index 91f4c0932..3d3912fe5 100644 Binary files a/lang/python/hi/LC_MESSAGES/python.mo and b/lang/python/hi/LC_MESSAGES/python.mo differ diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po index def5861be..c2cf6a48a 100644 --- a/lang/python/hi/LC_MESSAGES/python.po +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Panwar108 , 2018 +# Panwar108 , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Panwar108 , 2018\n" +"Last-Translator: Panwar108 , 2019\n" "Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,262 +23,256 @@ msgstr "" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "" +msgstr "GRUB विन्यस्त करना।" #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "विभाजन माउंट करना।" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "विन्यास त्रुटि" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "
{!s}
के उपयोग हेतु कोई विभाजन परिभाषित नहीं हैं।" #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" -msgstr "" +msgstr "systemd सेवाएँ विन्यस्त करना" #: src/modules/services-systemd/main.py:68 #: src/modules/services-openrc/main.py:102 msgid "Cannot modify service" -msgstr "" +msgstr "सेवा को संशोधित नहीं किया जा सकता" #: src/modules/services-systemd/main.py:69 msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." -msgstr "" +msgstr "chroot में systemctl {arg!s} कॉल त्रुटि कोड {num!s}।" #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 msgid "Cannot enable systemd service {name!s}." -msgstr "" +msgstr "systemd सेवा {name!s} को सक्रिय नहीं किया जा सकता।" #: src/modules/services-systemd/main.py:74 msgid "Cannot enable systemd target {name!s}." -msgstr "" +msgstr "systemd टारगेट {name!s} को सक्रिय नहीं किया जा सकता।" #: src/modules/services-systemd/main.py:78 msgid "Cannot disable systemd target {name!s}." -msgstr "" +msgstr "systemd टारगेट {name!s} को निष्क्रिय नहीं किया जा सकता।" #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "systemd यूनिट {name!s} को मास्क नहीं किया जा सकता।" #: src/modules/services-systemd/main.py:82 msgid "" "Unknown systemd commands {command!s} and " "{suffix!s} for unit {name!s}." msgstr "" +"यूनिट {name!s} हेतु अज्ञात systemd कमांड {command!s} व " +"{suffix!s}।" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "फ़ाइल सिस्टम माउंट से हटाएँ।" +msgstr "फ़ाइल सिस्टम माउंट से हटाना।" #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "फाइल सिस्टम भरना।" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." -msgstr "" +msgstr "rsync त्रुटि कोड {} के साथ विफल।" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" -msgstr "" +msgstr "इमेज फ़ाइल \"{}\" को खोलने में विफल" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" +"unsqaushfs खोजने में विफल, सुनिश्चित करें कि squashfs-tools पैकेज इंस्टॉल है" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" -msgstr "" +msgstr "रुट विभाजन हेतु कोई माउंट पॉइंट नहीं है" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -msgstr "" +msgstr "globalstorage में \"rootMountPoint\" कुंजी नहीं है, कुछ नहीं किया जाएगा" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" -msgstr "" +msgstr "रुट विभाजन हेतु ख़राब माउंट पॉइंट" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "" +msgstr "रुट माउंट पॉइंट \"{}\" है, जो कि मौजूद नहीं है, कुछ नहीं किया जाएगा" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" -msgstr "" +msgstr "ख़राब unsquash विन्यास सेटिंग्स" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" -msgstr "" +msgstr "\"{}\" ({}) हेतु फ़ाइल सिस्टम समर्थित नहीं है" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" -msgstr "" +msgstr "\"{}\" स्रोत फ़ाइल सिस्टम मौजूद नहीं है" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "" +msgstr "लक्षित सिस्टम में \"{}\" स्थान कोई डायरेक्टरी नहीं है" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" -msgstr "" +msgstr "KDM विन्यास फ़ाइल राइट नहीं की जा सकती" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" -msgstr "" +msgstr "KDM विन्यास फ़ाइल {!s} मौजूद नहीं है" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" -msgstr "" +msgstr "LXDM विन्यास फ़ाइल राइट नहीं की जा सकती" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" -msgstr "" +msgstr "LXDM विन्यास फ़ाइल {!s} मौजूद नहीं है" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" -msgstr "" +msgstr "LightDM विन्यास फ़ाइल राइट नहीं की जा सकती" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" -msgstr "" +msgstr "LightDM विन्यास फ़ाइल {!s} मौजूद नहीं है" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" -msgstr "" +msgstr "LightDM को विन्यस्त नहीं किया जा सकता" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." -msgstr "" +msgstr "कोई LightDM लॉगिन स्क्रीन इंस्टॉल नहीं है।" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" -msgstr "" +msgstr "SLIM विन्यास फ़ाइल राइट नहीं की जा सकती" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" -msgstr "" +msgstr "SLIM विन्यास फ़ाइल {!s} मौजूद नहीं है" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." -msgstr "" +msgstr "चयनित डिस्प्ले प्रबंधक मॉड्यूल हेतु कोई डिस्प्ले प्रबंधक नहीं मिला।" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" +"bothglobalstorage एवं displaymanager.conf में डिस्प्ले प्रबंधक सूची रिक्त या" +" अपरिभाषित है।" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "डिस्प्ले प्रबंधक विन्यास अधूरा था" #: src/modules/initcpiocfg/main.py:36 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "mkinitcpio को विन्यस्त करना।" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" +"
{!s}
के उपयोग हेतु कोई रुट माउंट पॉइंट प्रदान नहीं किया गया।" #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "एन्क्रिप्टेड स्वैप को विन्यस्त करना।" #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "डाटा इंस्टॉल करना।" #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" -msgstr "" +msgstr "OpenRC सेवाएँ विन्यस्त करना" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "" +msgstr "रन-लेवल {level!s} में सेवा {name!s} को जोड़ा नहीं जा सका।" #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "" +msgstr "रन-लेवल {level!s} में सेवा {name!s} को हटाया नहीं जा सका।" #: src/modules/services-openrc/main.py:70 msgid "" "Unknown service-action {arg!s} for service {name!s} in run-" "level {level!s}." msgstr "" +"रन-लेवल {level!s} में सेवा {name!s} हेतु अज्ञात सेवा-कार्य " +"{arg!s}।" #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." -msgstr "" +msgstr "chroot में rc-update {arg!s} कॉल त्रुटि कोड {num!s}।" #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "लक्षित रनलेवल मौजूद नहीं है" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." msgstr "" +"रनलेवल {level!s} हेतु पथ {path!s} है, जो कि मौजूद नहीं है।" #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "लक्षित सेवा मौजूद नहीं है" #: src/modules/services-openrc/main.py:120 msgid "" "The path for service {name!s} is {path!s}, which does not " "exist." -msgstr "" +msgstr "सेवा {name!s} हेतु पथ {path!s} है, जो कि मौजूद नहीं है।" #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" -msgstr "" +msgstr "Plymouth थीम विन्यस्त करना " #: src/modules/machineid/main.py:36 msgid "Generate machine-id." -msgstr "मशीन-आईडी उत्पन्न करें।" +msgstr "मशीन-आईडी उत्पन्न करना।" #: src/modules/packages/main.py:62 #, python-format @@ -287,7 +281,7 @@ msgstr "पैकेज (%(count)d / %(total)d) संसाधित किए #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." -msgstr "पैकेज इंस्टॉल करें।" +msgstr "पैकेज इंस्टॉल करना।" #: src/modules/packages/main.py:67 #, python-format @@ -305,59 +299,39 @@ msgstr[1] "%(num)d पैकेज हटाए जा रहे हैं।" #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "बूट लोडर इंस्टॉल करना।" #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" -msgstr "" - -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" +msgstr "लक्षित सिस्टम से लाइव उपयोक्ता को हटाना" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "हार्डवेयर घड़ी सेट करना।" #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "dracut के साथ initramfs बनाना।" #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "टारगेट पर dracut चलाने में विफल" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "त्रुटि कोड {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "initramfs को विन्यस्त करना। " #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" +msgstr "OpenRC dmcrypt सेवा को विन्यस्त करना।" #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "fstab पर राइट करना।" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -369,8 +343,8 @@ msgstr "डमी पाइथन प्रक्रिया की चरण #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "स्थानिकी को विन्यस्त करना।" #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "नेटवर्क विन्यास सेटिंग्स संचित करना।" diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index ad429694e..c455dea5d 100644 Binary files a/lang/python/hr/LC_MESSAGES/python.mo and b/lang/python/hr/LC_MESSAGES/python.mo differ diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po index 6dc371680..916cdab64 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Lovro Kudelić , 2019\n" "Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" @@ -29,23 +29,22 @@ msgstr "Konfigurirajte GRUB." msgid "Mounting partitions." msgstr "Montiranje particija." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Greška konfiguracije" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Nema definiranih particija za
{!s}
korištenje." @@ -98,15 +97,15 @@ msgstr "Odmontiraj datotečne sustave." msgid "Filling up filesystems." msgstr "Popunjavanje datotečnih sustava." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync nije uspio s kodom pogreške {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Otpakiravnje slike nije uspjelo \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,84 +113,84 @@ msgstr "" "Neuspješno pronalaženje unsquashfs, provjerite imate li instaliran paket " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nema točke montiranja za root particiju" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage ne sadrži ključ \"rootMountPoint\", ne radi ništa" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Neispravna točka montiranja za root particiju" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint je \"{}\", što ne postoji, ne radi ništa" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Neispravna unsquash konfiguracija" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Datotečni sustav za \"{}\" ({}) nije podržan" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Izvorni datotečni sustav \"{}\" ne postoji" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Odredište \"{}\" u ciljnom sustavu nije direktorij" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Ne mogu zapisati KDM konfiguracijsku datoteku" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM konfiguracijska datoteka {!s} ne postoji" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Ne mogu zapisati LXDM konfiguracijsku datoteku" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM konfiguracijska datoteka {!s} ne postoji" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Ne moku zapisati LightDM konfiguracijsku datoteku" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM konfiguracijska datoteka {!s} ne postoji" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Ne mogu konfigurirati LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Nije instaliran LightDM pozdravnik." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Ne mogu zapisati SLIM konfiguracijsku datoteku" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM konfiguracijska datoteka {!s} ne postoji" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Nisu odabrani upravitelji zaslona za modul displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -199,7 +198,7 @@ msgstr "" "Popis upravitelja zaslona je prazan ili nedefiniran u bothglobalstorage i " "displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Konfiguracija upravitelja zaslona nije bila potpuna" @@ -210,28 +209,12 @@ msgstr "Konfiguriranje mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Nijedna root točka montiranja nije definirana za
{!s}
korištenje." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Stvaranje initramfs s mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Proces nije uspio" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Proces
mkinitcpio
nije uspio s kodom pogreške {!s}. Naredba je " -"bila
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Konfiguriranje šifriranog swapa." @@ -325,24 +308,12 @@ msgstr[2] "Uklanjam %(num)d pakete." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "Instalirajte bootloader." +msgstr "Instaliram bootloader." #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" msgstr "Uklonite live korisnika iz ciljnog sustava" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Stvaranje initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Pokretanje ažuriranja-initramfs na ciljanom sustavu nije uspjelo" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Izlazni kod bio je {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Postavljanje hardverskog sata." @@ -355,6 +326,10 @@ msgstr "Stvaranje initramfs s dracut." msgid "Failed to run dracut on the target" msgstr "Nije uspjelo pokretanje dracuta na ciljanom sustavu" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Izlazni kod bio je {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Konfiguriranje initramfs." @@ -363,18 +338,6 @@ msgstr "Konfiguriranje initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Konfiguriranje servisa OpenRC dmcrypt." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Konfiguriranje LUKS ključne datoteke." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Pogreška postavljanja šifriranog rootfs-a" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs particija {!s} je LUKS, ali nije pronađena zaporka." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Zapisujem fstab." diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index c56dc4aec..a77df9a5a 100644 Binary files a/lang/python/hu/LC_MESSAGES/python.mo and b/lang/python/hu/LC_MESSAGES/python.mo differ diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 312b49a8b..e3508552a 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -32,23 +32,22 @@ msgstr "GRUB konfigurálása." msgid "Mounting partitions." msgstr "Partíciók csatolása." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Konfigurációs hiba" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Nincsenek partíciók meghatározva a
{!s}
használatához." @@ -101,15 +100,15 @@ msgstr "Fájlrendszerek leválasztása." msgid "Filling up filesystems." msgstr "Fájlrendszerek betöltése." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "az rsync elhalt a(z) {} hibakóddal" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "\"{}\" kép kicsomagolása nem sikerült" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -117,85 +116,85 @@ msgstr "" "unsquashfs nem található, győződj meg róla a squashfs-tools csomag telepítve" " van." -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nincs betöltési pont a root partíciónál" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" "globalstorage nem tartalmaz \"rootMountPoint\" kulcsot, semmi nem történik" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Rossz betöltési pont a root partíciónál" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint is \"{}\", ami nem létezik, semmi nem történik" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Rossz unsquash konfiguráció" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "A(z) ({}) fájlrendszer nem támogatott a következőhöz: \"{}\"" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "A forrás fájlrendszer \"{}\" nem létezik" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Az elérés \"{}\" nem létező könyvtár a cél rendszerben" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "A KDM konfigurációs fájl nem írható" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "A(z) {!s} KDM konfigurációs fájl nem létezik" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Az LXDM konfigurációs fájl nem írható" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "A(z) {!s} LXDM konfigurációs fájl nem létezik" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "A LightDM konfigurációs fájl nem írható" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "A(z) {!s} LightDM konfigurációs fájl nem létezik" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "A LightDM nem állítható be" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Nincs LightDM üdvözlő telepítve." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "A SLIM konfigurációs fájl nem írható" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "A(z) {!s} SLIM konfigurációs fájl nem létezik" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Nincs kijelzőkezelő kiválasztva a kijelzőkezelő modulhoz." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -203,7 +202,7 @@ msgstr "" "A kijelzőkezelők listája üres vagy nincs megadva a bothglobalstorage-ben és" " a displaymanager.conf fájlban." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "A kijelzőkezelő konfigurációja hiányos volt" @@ -214,27 +213,11 @@ msgstr "mkinitcpio konfigurálása." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "Nincs root csatolási pont megadva a
{!s}
használatához." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "initramfs létrehozása mkinitcpio utasítással." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Folyamat elhalt" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"
mkinitcpio
folyamat elhalt, hibakód {!s}. A parancs " -"
{!s}
volt." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Titkosított swap konfigurálása." @@ -331,18 +314,6 @@ msgstr "Rendszerbetöltő telepítése." msgid "Remove live user from target system" msgstr "Éles felhasználó eltávolítása a cél rendszerből" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "initramfs létrehozása." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Nem sikerült futtatni update-initramfs a célon." - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "A kilépési kód {} volt." - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Rendszeridő beállítása." @@ -355,6 +326,10 @@ msgstr "initramfs létrehozása ezzel: dracut." msgid "Failed to run dracut on the target" msgstr "dracut futtatása nem sikerült a célon." +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "A kilépési kód {} volt." + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "initramfs konfigurálása." @@ -363,18 +338,6 @@ msgstr "initramfs konfigurálása." msgid "Configuring OpenRC dmcrypt service." msgstr "OpenRC dmcrypt szolgáltatás konfigurálása." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "LUKS kulcs fájl konfigurálása." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Titkosított rootfs telepítési hiba" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "A rootfs partíció {!s} az LUKS de nem található a jelszó." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "fstab írása." diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po index df50b1c1f..866eac25f 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Wantoyo , 2018\n" "Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" @@ -31,23 +31,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -96,98 +95,98 @@ msgstr "Lepaskan sistem berkas." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Gak bisa menulis file konfigurasi KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "File {!s} config KDM belum ada" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Gak bisa menulis file konfigurasi LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "File {!s} config LXDM enggak ada" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Gak bisa menulis file konfigurasi LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "File {!s} config LightDM belum ada" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Gak bisa mengkonfigurasi LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Tiada LightDM greeter yang terinstal." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Gak bisa menulis file konfigurasi SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "File {!s} config SLIM belum ada" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Tiada display manager yang dipilih untuk modul displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -195,7 +194,7 @@ msgstr "" "Daftar displaymanager telah kosong atau takdidefinisikan dalam " "bothglobalstorage dan displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Konfigurasi display manager belum rampung" @@ -206,25 +205,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -313,18 +298,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -337,6 +310,10 @@ msgstr "" 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 "" @@ -345,18 +322,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 8951d0806..7246cefd4 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Aftengja skráarkerfi." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index dcfe22404..0f77ddd4a 100644 --- a/lang/python/it_IT/LC_MESSAGES/python.po +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -5,7 +5,7 @@ # # Translators: # Saverio , 2018 -# Pietro Francesco Fontana, 2018 +# Pietro F. Fontana, 2018 # Pierfrancesco Passerini , 2019 # #, fuzzy @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Pierfrancesco Passerini , 2019\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" @@ -31,23 +31,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -96,15 +95,15 @@ msgstr "Smonta i file system." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync fallita con codice d'errore {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Estrazione dell'immagine \"{}\" fallita" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -112,85 +111,85 @@ msgstr "" "Impossibile trovare unsquashfs, assicurati di aver installato il pacchetto " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nessun punto di montaggio per la partizione di root" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Punto di montaggio per la partizione di root errato" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Configurazione unsquash errata" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Il filesystem per \"{}\" ({}) non è supportato" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Il filesystem sorgente \"{}\" non esiste" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "La destinazione del sistema \"{}\" non è una directory" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Impossibile scrivere il file di configurazione di KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Il file di configurazione di KDM {!s} non esiste" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Impossibile scrivere il file di configurazione di LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Il file di configurazione di LXDM {!s} non esiste" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Impossibile scrivere il file di configurazione di LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Il file di configurazione di LightDM {!s} non esiste" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Impossibile configurare LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Non è stato installato nessun LightDM greeter" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Impossibile scrivere il file di configurazione di SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Il file di configurazione di SLIM {!s} non esiste" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Non è stato selezionato alcun display manager per il modulo displaymanager" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -198,7 +197,7 @@ msgstr "" "La lista displaymanagers è vuota o non definita sia in globalstorage che in " "displaymanager.conf" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "La configurazione del display manager è incompleta" @@ -209,25 +208,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -320,18 +305,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "Rimuovi l'utente live dal sistema di destinazione" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -344,6 +317,10 @@ msgstr "" 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 "" @@ -352,18 +329,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 8414e779d..4722644d8 100644 Binary files a/lang/python/ja/LC_MESSAGES/python.mo and b/lang/python/ja/LC_MESSAGES/python.mo differ diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po index e079227af..61ce7a838 100644 --- a/lang/python/ja/LC_MESSAGES/python.po +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -4,18 +4,18 @@ # FIRST AUTHOR , YEAR. # # Translators: -# UTUMI Hirosi , 2019 # ブラシックデービッド, 2019 # Takefumi Nagata, 2019 +# UTUMI Hirosi , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Takefumi Nagata, 2019\n" +"Last-Translator: UTUMI Hirosi , 2019\n" "Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,31 +25,30 @@ msgstr "" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "" +msgstr "GRUBを設定にします。" #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "パーティションのマウント。" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "コンフィグレーションエラー" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." -msgstr "" +msgstr "
{!s}
に使用するパーティションが定義されていません。" #: src/modules/services-systemd/main.py:35 msgid "Configure systemd services" @@ -64,6 +63,7 @@ msgstr "サービスが変更できません" msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" +"chroot で systemctl {arg!s} を呼び出すと、エラーコード {num!s} が返されました。" #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 @@ -80,152 +80,140 @@ msgstr "systemd でターゲット {name!s}が停止できません #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "systemd ユニット {name!s} をマスクできません。" #: src/modules/services-systemd/main.py:82 msgid "" "Unknown systemd commands {command!s} and " "{suffix!s} for unit {name!s}." msgstr "" +"ユニット {name!s} に対する未知の systemd コマンド {command!s} と " +"{suffix!s}。" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "ファイルシステムをアンマウントする。" +msgstr "ファイルシステムをアンマウント。" #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "ファイルシステムに書き込んでいます。" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "エラーコード {} によりrsyncを失敗。" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "イメージ \"{}\" の展開に失敗" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "unsquashfs が見つかりませんでした。 squashfs-toolsがインストールされているか、確認してください。" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "ルートパーティションのためのマウントポイントがありません" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage に \"rootMountPoint\" キーが含まれていません。何もしません。" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "ルートパーティションのためのマウントポイントが不正です" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "ルートマウントポイントは \"{}\" ですが、存在しません。何もできません。" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "unsquash の設定が不正です" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "ファイルシステム \"{}\" ({}) はサポートされていません" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "ソースファイルシステム \"{}\" は存在しません" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "ターゲットシステムの宛先 \"{}\" はディレクトリではありません" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDMの設定ファイルに書き込みができません" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM 設定ファイル {!s} が存在しません" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LXDMの設定ファイルに書き込みができません" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM 設定ファイル {!s} が存在しません" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDMの設定ファイルに書き込みができません" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM 設定ファイル {!s} が存在しません" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "LightDMの設定ができません" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "LightDM greeter がインストールされていません。" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIMの設定ファイルに書き込みができません" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM 設定ファイル {!s} が存在しません" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "ディスプレイマネージャが選択されていません。" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "ディスプレイマネージャのリストが bothglobalstorage 及び displaymanager.conf 内で空白か未定義です。" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "ディスプレイマネージャの設定が不完全です" #: src/modules/initcpiocfg/main.py:36 msgid "Configuring mkinitcpio." -msgstr "" +msgstr "mkinitcpioを設定しています。" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" +msgstr "
{!s}
を使用するのにルートマウントポイントが与えられていません。" #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "暗号化したswapを設定しています。" #: src/modules/rawfs/main.py:35 msgid "Installing data." @@ -248,11 +236,12 @@ msgid "" "Unknown service-action {arg!s} for service {name!s} in run-" "level {level!s}." msgstr "" +"ランレベル {level!s} 内のサービス {name!s} に対する未知のサービスアクション {arg!s}。" #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." -msgstr "" +msgstr "chrootで rc-update {arg!s} を呼び出すとエラーコード {num!s} が返されました。" #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" @@ -262,7 +251,7 @@ msgstr "ターゲットとするランレベルは存在しません" msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." -msgstr "" +msgstr "ランレベル {level!s} のパスが {path!s} です。これは存在しません。" #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" @@ -272,7 +261,7 @@ msgstr "ターゲットとするサービスは存在しません" msgid "" "The path for service {name!s} is {path!s}, which does not " "exist." -msgstr "" +msgstr "サービス {name!s} のパスが {path!s} です。これは存在しません。" #: src/modules/plymouthcfg/main.py:36 msgid "Configure Plymouth theme" @@ -285,7 +274,7 @@ msgstr "machine-id の生成" #: src/modules/packages/main.py:62 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "パッケージの処理中 (%(count)d / %(total)d)" +msgstr "パッケージを処理しています (%(count)d / %(total)d)" #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." @@ -295,69 +284,49 @@ msgstr "パッケージのインストール" #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] " %(num)d パッケージのインストール中。" +msgstr[0] " %(num)d パッケージをインストールしています。" #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] " %(num)d パッケージの削除中。" +msgstr[0] " %(num)d パッケージを削除しています。" #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "ブートローダーをインストール" #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" -msgstr "" - -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" +msgstr "ターゲットシステムからliveユーザーを消去" #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "ハードウェアクロックの設定" #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "dracutとinitramfsを作成しています。" #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "ターゲット上で dracut の実行に失敗" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "停止コードは {} でした" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." -msgstr "" +msgstr "initramfsを設定しています。" #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" +msgstr "OpenRC dmcryptサービスを設定しています。" #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "fstabを書き込んでいます。" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -369,8 +338,8 @@ msgstr "Dummy python step {}" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "ロケールを設定しています。" #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "ネットワーク設定を保存しています。" diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po index 39250d442..466e6b56c 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/kn/LC_MESSAGES/python.po b/lang/python/kn/LC_MESSAGES/python.po index 42610e704..e92b8153d 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo index 5a79cb0a1..fc0658fd0 100644 Binary files a/lang/python/ko/LC_MESSAGES/python.mo and b/lang/python/ko/LC_MESSAGES/python.mo differ diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po index b87f21667..dd4ab1807 100644 --- a/lang/python/ko/LC_MESSAGES/python.po +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: 이정희 , 2019\n" "Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" @@ -30,23 +30,22 @@ msgstr "GRUB 구성" msgid "Mounting partitions." msgstr "파티션 마운트 중." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "사용할
{!s}
에 대해 정의된 파티션이 없음." @@ -97,105 +96,105 @@ msgstr "파일 시스템 마운트를 해제합니다." msgid "Filling up filesystems." msgstr "파일 시스템을 채우는 중." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync가 {} 오류 코드로 실패했습니다." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "\"{}\" 이미지의 압축을 풀지 못했습니다." -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "unsquashfs를 찾지 못했습니다. squashfs-tools 패키지가 설치되어 있는지 확인하십시오." -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "루트 파티션에 대한 마운트 위치 없음" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage에는 \"rootMountPoint \" 키가 포함되어 있지 않으며 아무 작업도 수행하지 않습니다." -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "루트 파티션에 대한 잘못된 마운트 위치" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint는 \"{}\"이고, 존재하지 않으며, 아무 작업도 수행하지 않습니다." -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "잘못된 unsquash 구성" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "\"{}\" ({})의 파일시스템은 지원되지 않습니다." -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "\"{}\" 소스 파일시스템은 존재하지 않습니다." -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "대상 시스템의 \"{}\" 목적지가 디렉토리가 아닙니다." -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDM 구성 파일을 쓸 수 없습니다." -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM 구성 파일 {! s}가 없습니다" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LMLDM 구성 파일을 쓸 수 없습니다." -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM 구성 파일 {!s}이 없습니다." -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDM 구성 파일을 쓸 수 없습니다." -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM 구성 파일 {!s}가 없습니다." -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "LightDM을 구성할 수 없습니다." -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "LightDM greeter가 설치되지 않았습니다." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIM 구성 파일을 쓸 수 없음" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM 구성 파일 {!s}가 없음" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "displaymanager 모듈에 대해 선택된 디스플레이 관리자가 없습니다." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" "displaymanagers 목록은 globalstorage 및 displaymanager.conf에서 비어 있거나 정의되지 않습니다." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "디스플레이 관리자 구성이 완료되지 않았습니다." @@ -206,27 +205,11 @@ msgstr "mkinitcpio 구성 중." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "
{!s}
에서 사용할 루트 마운트 지점이 제공되지 않음." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "mkinitcpio를 사용하여 initramfs 만드는 중." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "프로세스 실패" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"오류 코드 {!s}이(가) 포함된 프로세스
mkinitcpio
가 실패했습니다. 명령은 " -"
{!s}
입니다" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "암호화된 스왑 구성 중." @@ -317,18 +300,6 @@ msgstr "부트로더 설치." msgid "Remove live user from target system" msgstr "대상 시스템에서 라이브 사용자 제거" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "initramfs를 만드는 중." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "대상에서 update-initramfs 실행 실패" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "종료 코드 {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "하드웨어 클럭 설정 중." @@ -341,6 +312,10 @@ msgstr "dracut을 사용하여 initramfs 만들기." 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 구성 중." @@ -349,18 +324,6 @@ msgstr "initramfs 구성 중." msgid "Configuring OpenRC dmcrypt service." msgstr "OpenRC dmcrypt 서비스 구성 중." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "LUKS 키 파일 구성 중." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "암호화된 rootfs 설정 오류" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs 파티션 {!s}은(는) LUKS이지만 암호구문을 찾을 수 없음." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "fstab 쓰기." diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po index 0f6f4b98f..a4619e2eb 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -305,18 +290,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -329,6 +302,10 @@ msgstr "" 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 "" @@ -337,18 +314,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index e2d60c86f..faee89ab3 100644 Binary files a/lang/python/lt/LC_MESSAGES/python.mo and b/lang/python/lt/LC_MESSAGES/python.mo differ diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po index 33b04a553..7a740715f 100644 --- a/lang/python/lt/LC_MESSAGES/python.po +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -5,15 +5,16 @@ # # Translators: # Moo, 2019 +# Mindaugas , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Moo, 2019\n" +"Last-Translator: Mindaugas , 2019\n" "Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,23 +30,22 @@ msgstr "Konfigūruoti GRUB." msgid "Mounting partitions." msgstr "Prijungiami skaidiniai." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Konfigūracijos klaida" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Nėra apibrėžta jokių skaidinių, skirtų
{!s}
naudojimui." @@ -98,15 +98,15 @@ msgstr "Atjungti failų sistemas." msgid "Filling up filesystems." msgstr "Užpildomos failų sistemos." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync patyrė nesėkmę su klaidos kodu {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" -msgstr "Nepavyko išpakuoti atvaizdį \"{}\"" +msgstr "Nepavyko išpakuoti atvaizdį „{}“" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,84 +114,84 @@ msgstr "" "Nepavyko rasti unsquashfs, įsitikinkite, kad esate įdiegę squashfs-tools " "paketą" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nėra prijungimo taško šaknies skaidiniui" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -msgstr "globalstorage viduje nėra \"rootMountPoint\" rakto, nieko nedaroma" +msgstr "globalstorage viduje nėra „rootMountPoint“ rakto, nieko nedaroma" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Blogas šaknies skaidinio prijungimo taškas" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "rootMountPoint yra \"{}\", kurio nėra, nieko nedaroma" +msgstr "rootMountPoint yra „{}“, kurio nėra, nieko nedaroma" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Bloga unsquash konfigūracija" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" -msgstr "\"{}\" ({}) failų sistema yra nepalaikoma" +msgstr "„{}“ ({}) failų sistema yra nepalaikoma" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" -msgstr "Šaltinio failų sistemos \"{}\" nėra" +msgstr "Šaltinio failų sistemos „{}“ nėra" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "Paskirties vieta \"{}\", esanti paskirties sistemoje, nėra katalogas" +msgstr "Paskirties vieta „{}“, esanti paskirties sistemoje, nėra katalogas" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Nepavyksta įrašyti KDM konfigūracijos failą" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM konfigūracijos failo {!s} nėra" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Nepavyksta įrašyti LXDM konfigūracijos failą" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM konfigūracijos failo {!s} nėra" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Nepavyksta įrašyti LightDM konfigūracijos failą" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM konfigūracijos failo {!s} nėra" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Nepavyksta konfigūruoti LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." -msgstr "Nėra įdiegtas joks LightDM sveikintojas." +msgstr "Neįdiegtas joks LightDM pasisveikinimas." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Nepavyksta įrašyti SLIM konfigūracijos failą" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM konfigūracijos failo {!s} nėra" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Displaymanagers moduliui nėra pasirinkta jokių ekranų tvarkytuvių." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -199,7 +199,7 @@ msgstr "" "Displaymanagers sąrašas yra tuščias arba neapibrėžtas tiek " "bothglobalstorage, tiek ir displaymanager.conf faile." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Ekranų tvarkytuvės konfigūracija yra nepilna" @@ -210,29 +210,13 @@ msgstr "Konfigūruojama mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Nėra nurodyta jokių šaknies prijungimo taškų, skirtų
{!s}
" "naudojimui." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Sukuriama initramfs naudojant mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Procesas patyrė nesėkmę" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Procesas
mkinitcpio
patyrė nesėkmę su klaidos kodu {!s}. Komanda " -"buvo
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Konfigūruojamas šifruotas sukeitimų skaidinys." @@ -334,18 +318,6 @@ msgstr "Įdiegti paleidyklę." msgid "Remove live user from target system" msgstr "Šalinti demonstracinį naudotoją iš paskirties sistemos" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Sukuriama initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Nepavyko paskirties vietoje paleisti update-initramfs" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Išėjimo kodas buvo {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Nustatomas aparatinės įrangos laikrodis." @@ -358,6 +330,10 @@ msgstr "Sukuriama initramfs naudojant dracut." msgid "Failed to run dracut on the target" msgstr "Nepavyko paskirties vietoje paleisti dracut" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Išėjimo kodas buvo {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Konfigūruojama initramfs." @@ -366,18 +342,6 @@ msgstr "Konfigūruojama initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Konfigūruojama OpenRC dmcrypt tarnyba." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Konfigūruojamas LUKS raktų failas." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Šifruoto rootfs sąrankos klaida" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs skaidinys {!s} yra LUKS, tačiau nerasta jokios slaptafrazės." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Rašoma fstab." diff --git a/lang/python/mk/LC_MESSAGES/python.po b/lang/python/mk/LC_MESSAGES/python.po index dd8d7be90..679efcf24 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDM конфигурациониот фајл не може да се создаде" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM конфигурациониот фајл {!s} не постои" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LXDM конфигурациониот фајл не може да се создаде" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM конфигурациониот фајл {!s} не постои" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDM конфигурациониот фајл не може да се создаде" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM конфигурациониот фајл {!s} не постои" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Не може да се подеси LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Нема инсталирано LightDM поздравувач" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIM конфигурациониот фајл не може да се создаде" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM конфигурациониот фајл {!s} не постои" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Немате избрано дисплеј менаџер за displaymanager модулот." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ml/LC_MESSAGES/python.mo b/lang/python/ml/LC_MESSAGES/python.mo new file mode 100644 index 000000000..58f3dc3e7 Binary files /dev/null and b/lang/python/ml/LC_MESSAGES/python.mo differ diff --git a/lang/python/ml/LC_MESSAGES/python.po b/lang/python/ml/LC_MESSAGES/python.po new file mode 100644 index 000000000..937388f97 --- /dev/null +++ b/lang/python/ml/LC_MESSAGES/python.po @@ -0,0 +1,342 @@ +# 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: +# Abhijith Sheheer , 2019 +# Balasankar C , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\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:145 src/modules/initcpiocfg/main.py:187 +#: src/modules/initcpiocfg/main.py:191 +#: src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 +#: src/modules/machineid/main.py:49 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:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 +#: src/modules/networkcfg/main.py:48 +msgid "Configuration Error" +msgstr "ക്രമീകരണത്തിൽ പിഴവ്" + +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 +#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 +#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/fstab/main.py:323 +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:41 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:180 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:242 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:366 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:367 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:372 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:373 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:386 +msgid "The filesystem for \"{}\" ({}) is not supported" +msgstr "" + +#: src/modules/unpackfs/main.py:390 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:404 +msgid "The destination \"{}\" in the target system is not a directory" +msgstr "" + +#: src/modules/displaymanager/main.py:515 +msgid "Cannot write KDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:516 +msgid "KDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:577 +msgid "Cannot write LXDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:578 +msgid "LXDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:661 +msgid "Cannot write LightDM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:662 +msgid "LightDM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:736 +msgid "Cannot configure LightDM" +msgstr "" + +#: src/modules/displaymanager/main.py:737 +msgid "No LightDM greeter installed." +msgstr "" + +#: src/modules/displaymanager/main.py:768 +msgid "Cannot write SLIM configuration file" +msgstr "" + +#: src/modules/displaymanager/main.py:769 +msgid "SLIM config file {!s} does not exist" +msgstr "" + +#: src/modules/displaymanager/main.py:895 +msgid "No display managers selected for the displaymanager module." +msgstr "" + +#: src/modules/displaymanager/main.py:896 +msgid "" +"The displaymanagers list is empty or undefined in bothglobalstorage and " +"displaymanager.conf." +msgstr "" + +#: src/modules/displaymanager/main.py:978 +msgid "Display manager configuration was incomplete" +msgstr "" + +#: src/modules/initcpiocfg/main.py:36 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:192 +#: src/modules/luksopenswaphookcfg/main.py:100 +#: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 +#: 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/machineid/main.py:36 +msgid "Generate machine-id." +msgstr "മെഷീൻ-ഐഡ് നിർമ്മിക്കുക" + +#: src/modules/packages/main.py:62 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:64 src/modules/packages/main.py:74 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:67 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:70 +#, 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/removeuser/main.py:34 +msgid "Remove live user from target system" +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:97 +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/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po index d78d2a388..57d2e4ee4 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po index d13d8f9db..44a42e763 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Tyler Moss , 2017\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ne_NP/LC_MESSAGES/python.po b/lang/python/ne_NP/LC_MESSAGES/python.po index dacef3610..d8ee5133e 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po index c7bfa8a93..59593f43f 100644 --- a/lang/python/nl/LC_MESSAGES/python.po +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Adriaan de Groot , 2019\n" "Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,106 +93,106 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Geen mount-punt voor de root-partitie" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage bevat geen sleutel \"rootMountPoint\", er wordt niks gedaan" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Onjuist mount-punt voor de root-partitie" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" "rootMountPoint is ingesteld op \"{}\", welke niet bestaat, er wordt niks " "gedaan" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -204,25 +203,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -313,18 +298,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -337,6 +310,10 @@ msgstr "" 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 "" @@ -345,18 +322,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index ea1d34269..79c4cbd7d 100644 Binary files a/lang/python/pl/LC_MESSAGES/python.mo and b/lang/python/pl/LC_MESSAGES/python.mo differ diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po index dcc9bae84..cc892f839 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Piotr Strębski , 2019\n" "Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" @@ -31,23 +31,22 @@ msgstr "Konfiguracja GRUB." msgid "Mounting partitions." msgstr "Montowanie partycji." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Błąd konfiguracji" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -96,15 +95,15 @@ msgstr "Odmontuj systemy plików." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync zakończyło działanie kodem błędu {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Błąd rozpakowywania obrazu \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -112,88 +111,88 @@ msgstr "" "Nie można odnaleźć unsquashfs, upewnij się, że masz zainstalowany pakiet " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Brak punktu montowania partycji root" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" "globalstorage nie zawiera klucza \"rootMountPoint\", nic nie zostanie " "zrobione" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Błędny punkt montowania partycji root" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" "Punkt montowania partycji root (rootMountPoint) jest \"{}\", które nie " "istnieje; nic nie zostanie zrobione" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Błędna konfiguracja unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "System plików dla \"{}\" ({}) nie jest obsługiwany" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Źródłowy system plików \"{}\" nie istnieje" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Miejsce docelowe \"{}\" w docelowym systemie nie jest katalogiem" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Nie można zapisać pliku konfiguracji KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Plik konfiguracyjny KDM {!s} nie istnieje" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Nie można zapisać pliku konfiguracji LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Plik konfiguracji LXDM {!s} nie istnieje" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Nie można zapisać pliku konfiguracji LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Plik konfiguracji LightDM {!s} nie istnieje" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Nie można skonfigurować LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Nie zainstalowano ekranu powitalnego LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Nie można zapisać pliku konfiguracji SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Plik konfiguracji SLIM {!s} nie istnieje" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Brak wybranych menedżerów wyświetlania dla modułu displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -201,7 +200,7 @@ msgstr "" "Lista menedżerów wyświetlania jest pusta lub niezdefiniowana w " "bothglobalstorage i displaymanager.conf" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Konfiguracja menedżera wyświetlania była niekompletna" @@ -212,25 +211,11 @@ msgstr "Konfigurowanie mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Tworzenie initramfs z mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Błąd procesu" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -325,18 +310,6 @@ msgstr "Instalacja programu rozruchowego." msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Tworzenie initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -349,6 +322,10 @@ msgstr "Tworzenie initramfs z dracut." 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 "Konfigurowanie initramfs." @@ -357,18 +334,6 @@ msgstr "Konfigurowanie initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Konfigurowanie pliku klucza LUKS." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Zapisywanie fstab." diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index 39de8487c..a004f563d 100644 Binary files a/lang/python/pt_BR/LC_MESSAGES/python.mo and b/lang/python/pt_BR/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index 34d356d77..b414efd85 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Guilherme , 2019\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" @@ -30,23 +30,22 @@ msgstr "Configurar GRUB." msgid "Mounting partitions." msgstr "Montando partições." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Erro de Configuração." -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Sem partições definidas para uso por
{!s}
." @@ -99,15 +98,15 @@ msgstr "Desmontar os sistemas de arquivos." msgid "Filling up filesystems." msgstr "Preenchendo sistemas de arquivos." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "O rsync falhou com o código de erro {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Ocorreu uma falha ao descompactar a imagem \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -115,85 +114,85 @@ msgstr "" "Ocorreu uma falha ao localizar o unsquashfs, certifique-se de que o pacote " "squashfs-tools esteja instalado" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nenhum ponto de montagem para a partição root" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "O globalstorage não contém uma chave \"rootMountPoint\". Nada foi feito." -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Ponto de montagem incorreto para a partição root" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "O rootMountPoint é \"{}\", mas ele não existe. Nada foi feito." -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Configuração incorreta do unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "O sistema de arquivos para \"{}\" ({}) não é suportado" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "O sistema de arquivos de origem \"{}\" não existe" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "A destinação \"{}\" no sistema de destino não é um diretório" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Não foi possível gravar o arquivo de configuração do KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "O arquivo de configuração {!s} do KDM não existe" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Não foi possível gravar o arquivo de configuração do LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "O arquivo de configuração {!s} do LXDM não existe" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Não foi possível gravar o arquivo de configuração do LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "O arquivo de configuração {!s} do LightDM não existe" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Não é possível configurar o LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Não há nenhuma tela de login do LightDM instalada." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Não foi possível gravar o arquivo de configuração do SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "O arquivo de configuração {!s} do SLIM não existe" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Nenhum gerenciador de exibição selecionado para o módulo do displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -201,7 +200,7 @@ msgstr "" "A lista de displaymanagers está vazia ou indefinida no bothglobalstorage e " "no displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "A configuração do gerenciador de exibição está incompleta" @@ -212,28 +211,12 @@ msgstr "Configurando mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "Nenhum ponto de montagem para o root fornecido para uso por
{!s}
." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Criando initramfs com mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "O Processo Falhou" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"O processo
mkinitcpio
falhou com o código de erro {!s}. O comando" -" foi
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Configurando swap encriptada." @@ -334,18 +317,6 @@ msgstr "Instalar bootloader." msgid "Remove live user from target system" msgstr "Remover usuário live do sistema de destino" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Criando initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "Erro ao executar update-initramfs no alvo" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "O código de saída foi {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Configurando relógio de hardware." @@ -358,6 +329,10 @@ msgstr "Criando initramfs com dracut." msgid "Failed to run dracut on the target" msgstr "Erro ao executar dracut no alvo" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "O código de saída foi {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Configurando initramfs." @@ -366,18 +341,6 @@ msgstr "Configurando initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Configurando serviço dmcrypt do OpenRC." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Configurando o arquivo de chave do LUKS." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Erro de configuração de rootfs encriptado" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "A partição Rootfs {!s} é LUKS mas nenhuma frase-chave foi encontrada." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Escrevendo fstab." diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index a1760e7bd..9ac0dcef1 100644 Binary files a/lang/python/pt_PT/LC_MESSAGES/python.mo and b/lang/python/pt_PT/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po index 5b8417f60..06b6e7355 100644 --- a/lang/python/pt_PT/LC_MESSAGES/python.po +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -5,17 +5,17 @@ # # Translators: # Nuno Amorim , 2018 -# Hugo Carvalho , 2019 # Ricardo Simões , 2019 +# Hugo Carvalho , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Ricardo Simões , 2019\n" +"Last-Translator: Hugo Carvalho , 2019\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,23 +31,22 @@ msgstr "Configurar o GRUB." msgid "Mounting partitions." msgstr "A montar partições." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Erro de configuração" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "Nenhuma partição está definida para
{!s}
usar." @@ -94,21 +93,21 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "Desmontar sistemas de ficheiro." +msgstr "Desmontar sistemas de ficheiros." #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." msgstr "A preencher os sistemas de ficheiros." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync falhou com código de erro {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Falha ao descompactar imagem \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -116,85 +115,85 @@ msgstr "" "Falha ao procurar unsquashfs, certifique-se que tem o pacote squashfs-tools " "instalado" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Nenhum ponto de montagem para a partição root" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage não contém um \"rootMountPoint\" chave, nada a fazer" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Ponto de montagem mau para partição root" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint é \"{}\", que não existe, nada a fazer" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Má configuração unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "O sistema de ficheiros \"{}\" ({}) não é suportado" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "O sistema de ficheiros fonte \"{}\" não existe" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "O destino \"{}\" no sistema alvo não é uma diretoria" +msgstr "O destino \"{}\" no sistema de destino não é um diretório" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Não é possível gravar o ficheiro de configuração KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "O ficheiro de configuração do KDM {!s} não existe" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Não é possível gravar o ficheiro de configuração LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "O ficheiro de configuração do LXDM {!s} não existe" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Não é possível gravar o ficheiro de configuração LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "O ficheiro de configuração do LightDM {!s} não existe" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Não é possível configurar o LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "Nenhum ecrã de boas-vindas LightDM instalado." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Não é possível gravar o ficheiro de configuração SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "O ficheiro de configuração do SLIM {!s} não existe" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" "Nenhum gestor de exibição selecionado para o módulo de gestor de exibição." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -202,7 +201,7 @@ msgstr "" "A lista de gestores de exibição está vazia ou indefinida no globalstorage e " "no displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "A configuração do gestor de exibição estava incompleta" @@ -213,28 +212,14 @@ msgstr "A configurar o mkintcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" +msgstr "Nenhum ponto de montagem root é fornecido para
{!s}
usar." #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." -msgstr "" +msgstr "Configurando a swap criptografada." #: src/modules/rawfs/main.py:35 msgid "Installing data." @@ -325,35 +310,27 @@ msgstr[1] "A remover %(num)d pacotes." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." -msgstr "" +msgstr "Instalar o carregador de arranque." #: src/modules/removeuser/main.py:34 msgid "Remove live user from target system" msgstr "Remover utilizador ativo do sistema de destino" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "A definir o relógio do hardware." #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." -msgstr "" +msgstr "Criando o initramfs com o dracut." #: src/modules/dracut/main.py:58 msgid "Failed to run dracut on the target" -msgstr "" +msgstr "Falha ao executar o dracut no destino" + +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "O código de saída foi {}" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." @@ -361,23 +338,11 @@ msgstr "A configurar o initramfs." #: src/modules/openrcdmcryptcfg/main.py:34 msgid "Configuring OpenRC dmcrypt service." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" +msgstr "A configurar o serviço OpenRC dmcrypt." #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "A escrever o fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -389,8 +354,8 @@ msgstr "Passo Dummy python {}" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "A configurar a localização." #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "A guardar a configuração de rede." diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po index d44258d49..03ba3971d 100644 --- a/lang/python/ro/LC_MESSAGES/python.po +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -30,23 +30,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -95,104 +94,104 @@ msgstr "Demonteaza sistemul de fisiere" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -203,25 +202,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -314,18 +299,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -338,6 +311,10 @@ msgstr "" 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 "" @@ -346,18 +323,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 5f7b89f05..72e00c105 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -315,18 +300,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -339,6 +312,10 @@ msgstr "" 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 "" @@ -347,18 +324,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index ec4bdf41b..618d7fde7 100644 Binary files a/lang/python/sk/LC_MESSAGES/python.mo and b/lang/python/sk/LC_MESSAGES/python.mo differ diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po index 5b9b232e1..9794e591a 100644 --- a/lang/python/sk/LC_MESSAGES/python.po +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Dušan Kazik , 2018 +# Dušan Kazik , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Dušan Kazik , 2018\n" +"Last-Translator: Dušan Kazik , 2019\n" "Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Chyba konfigurácie" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -94,104 +93,104 @@ msgstr "Odpojenie súborových systémov." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Nedá sa zapísať konfiguračný súbor správcu KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Konfiguračný súbor správcu KDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Nedá sa zapísať konfiguračný súbor správcu LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Konfiguračný súbor správcu LXDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Nedá sa zapísať konfiguračný súbor správcu LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Konfiguračný súbor správcu LightDM {!s} neexistuje" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Nedá s nakonfigurovať správca LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Nedá sa zapísať konfiguračný súbor správcu SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Konfiguračný súbor správcu SLIM {!s} neexistuje" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Neboli vybraní žiadni správcovia zobrazenia pre modul displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Konfigurácia správcu zobrazenia nebola úplná" @@ -202,25 +201,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -315,18 +300,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -339,6 +312,10 @@ msgstr "" 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 "" @@ -347,18 +324,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po index 8fd268026..cf0d3be5d 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index 64347c01f..1ae01a16e 100644 Binary files a/lang/python/sq/LC_MESSAGES/python.mo and b/lang/python/sq/LC_MESSAGES/python.mo differ diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index f27126d0f..f32d4cf24 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Besnik , 2019\n" "Language-Team: Albanian (https://www.transifex.com/calamares/teams/20061/sq/)\n" @@ -29,23 +29,22 @@ msgstr "Formësoni GRUB-in." msgid "Mounting partitions." msgstr "Po montohen pjesë." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Gabim Formësimi" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "S’ka pjesë të përkufizuara për
{!s}
për t’u përdorur." @@ -98,15 +97,15 @@ msgstr "Çmontoni sisteme kartelash." msgid "Filling up filesystems." msgstr "Po mbushen sisteme kartelash." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync dështoi me kod gabimi {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Dështoi shpaketimi i figurës \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -114,84 +113,84 @@ msgstr "" "S’u arrit të gjendej unsquashfs, sigurohuni se e keni të instaluar paketën " "squashfs-tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "S’ka pikë montimi për ndarjen rrënjë" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage nuk përmban një vlerë \"rootMountPoint\", s’po bëhet gjë" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Pikë e gabuar montimi për ndarjen rrënjë" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint është \"{}\", që s’ekziston, s’po bëhet gjë" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Formësim i keq i unsquash-it" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Sistemi i kartelave për \"{}\" ({}) nuk mbulohet" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Sistemi i kartelave \"{}\" ({}) s’ekziston" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Destinacioni \"{}\" te sistemi i synuar s’është drejtori" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "S’shkruhet dot kartelë formësimi KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "S’ekziston kartelë formësimi KDM {!s}" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "S’shkruhet dot kartelë formësimi LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "S’ekziston kartelë formësimi LXDM {!s}" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "S’shkruhet dot kartelë formësimi LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "S’ekziston kartelë formësimi LightDM {!s}" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "S’formësohet dot LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "S’ka të instaluar përshëndetës LightDM." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "S’shkruhet dot kartelë formësimi SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "S’ekziston kartelë formësimi SLIM {!s}" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "S’janë përzgjedhur përgjegjës ekrani për modulin displaymanager." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -199,7 +198,7 @@ msgstr "" "Lista displaymanagers është e zbrazët ose e papërcaktuar si te " "globalstorage, ashtu edhe te displaymanager.conf." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Formësimi i përgjegjësit të ekranit s’qe i plotë" @@ -210,28 +209,12 @@ msgstr "Po formësohet mkinitcpio." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "" "S’është dhënë pikë montimi rrënjë për
{!s}
për t’u përdorur." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Po krijohet initramfs me mkinitcpio." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "Procesi Dështoi" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"Procesi
mkinitcpio
dështoi me kod gabimi {!s}. Urdhri qe " -"
{!s}
." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Po formësohet pjesë swap e fshehtëzuar." @@ -330,18 +313,6 @@ msgstr "Instalo ngarkues nisjesh." msgid "Remove live user from target system" msgstr "Hiq përdoruesin live nga sistemi i synuar" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Po krijohet initramfs." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "S’u arrit të xhirohej update-initramfs mbi objektivin" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Kodi i daljes qe {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Po caktohet ora hardware." @@ -354,6 +325,10 @@ msgstr "Po krijohet initramfs me dracut." msgid "Failed to run dracut on the target" msgstr "S’u arrit të xhirohej dracut mbi objektivin" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Kodi i daljes qe {}" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Po formësohet initramfs." @@ -362,18 +337,6 @@ msgstr "Po formësohet initramfs." msgid "Configuring OpenRC dmcrypt service." msgstr "Po formësohet shërbim OpenRC dmcrypt." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "Po formësohet kartelë kyçesh LUKS." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Gabim ujdisjeje rootfs të fshehtëzuar" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Pjesa rootfs {!s} është LUKS, por s’u gjet frazëkalim." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Po shkruhet fstab." diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index e99bccee0..1f281e5ed 100644 Binary files a/lang/python/sr/LC_MESSAGES/python.mo and b/lang/python/sr/LC_MESSAGES/python.mo differ diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po index 12e7eb789..ea6fb5f2f 100644 --- a/lang/python/sr/LC_MESSAGES/python.po +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -3,13 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +# Translators: +# Slobodan Simić , 2019 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Last-Translator: Slobodan Simić , 2019\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,29 +23,28 @@ msgstr "" #: src/modules/grubcfg/main.py:37 msgid "Configure GRUB." -msgstr "" +msgstr "Подеси ГРУБ" #: src/modules/mount/main.py:38 msgid "Mounting partitions." -msgstr "" +msgstr "Монтирање партиција." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Грешка поставе" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -84,110 +87,110 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Демонтирање фајл-система." #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "" +msgstr "Попуњавање фајл-система." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." -msgstr "" +msgstr "rsync неуспешан са кодом грешке {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" -msgstr "" +msgstr "Неуспело распакивање одраза \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" -msgstr "" +msgstr "Нема тачке мотирања за root партицију" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,32 +201,18 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Инсталирање података." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" @@ -309,18 +298,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -333,6 +310,10 @@ msgstr "" 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 "" @@ -341,21 +322,9 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "Уписивање fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -367,8 +336,8 @@ msgstr "" #: src/modules/localecfg/main.py:39 msgid "Configuring locales." -msgstr "" +msgstr "Подешавање локалитета." #: src/modules/networkcfg/main.py:37 msgid "Saving network configuration." -msgstr "" +msgstr "Упис поставе мреже." diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po index e612846bc..2edb835b7 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -309,18 +294,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -333,6 +306,10 @@ msgstr "" 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 "" @@ -341,18 +318,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index 6af85532a..f31e39ee5 100644 Binary files a/lang/python/sv/LC_MESSAGES/python.mo and b/lang/python/sv/LC_MESSAGES/python.mo differ diff --git a/lang/python/sv/LC_MESSAGES/python.po b/lang/python/sv/LC_MESSAGES/python.po index 291e9cf6d..e6e0a943d 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -3,13 +3,17 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +# Translators: +# Jan-Olof Svensson, 2019 +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Last-Translator: Jan-Olof Svensson, 2019\n" "Language-Team: Swedish (https://www.transifex.com/calamares/teams/20061/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,23 +29,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +93,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,32 +201,18 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" #: src/modules/rawfs/main.py:35 msgid "Installing data." -msgstr "" +msgstr "Installerar data." #: src/modules/services-openrc/main.py:38 msgid "Configure OpenRC services" @@ -283,21 +272,21 @@ msgstr "" #: src/modules/packages/main.py:64 src/modules/packages/main.py:74 msgid "Install packages." -msgstr "" +msgstr "Installera paket." #: src/modules/packages/main.py:67 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Installerar ett paket." +msgstr[1] "Installerar %(num)d paket." #: src/modules/packages/main.py:70 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Tar bort ett paket." +msgstr[1] "Tar bort %(num)d paket." #: src/modules/bootloader/main.py:51 msgid "Install bootloader." @@ -307,21 +296,9 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." -msgstr "" +msgstr "Ställer hårdvaruklockan." #: src/modules/dracut/main.py:36 msgid "Creating initramfs with dracut." @@ -331,6 +308,10 @@ msgstr "" 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 "" @@ -339,21 +320,9 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." -msgstr "" +msgstr "Skriver fstab." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po index da9cee122..f6b491c76 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -305,18 +290,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -329,6 +302,10 @@ msgstr "" 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 "" @@ -337,18 +314,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index 54ff6bebe..1197e1a65 100644 Binary files a/lang/python/tr_TR/LC_MESSAGES/python.mo and b/lang/python/tr_TR/LC_MESSAGES/python.mo differ diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index b99773b24..978775296 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Demiray Muhterem , 2019\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" @@ -29,23 +29,22 @@ msgstr "GRUB'u yapılandır." msgid "Mounting partitions." msgstr "Disk bölümleri bağlanıyor." -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" msgstr "Yapılandırma Hatası" -#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "
{!s}
kullanması için hiçbir bölüm tanımlanmadı." @@ -96,102 +95,102 @@ msgstr "Dosya sistemlerini ayırın." #: src/modules/unpackfs/main.py:41 msgid "Filling up filesystems." -msgstr "Dosya sistemini genişlet." +msgstr "Dosya sistemi genişletiliyor." -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync {} hata koduyla başarısız oldu." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "\"{}\" kurulum medyası aktarılamadı" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" "Unsquashfs bulunamadı, squashfs-tools paketinin kurulu olduğundan emin olun." -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "kök disk bölümü için bağlama noktası yok" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" "globalstorage bir \"rootMountPoint\" anahtarı içermiyor, hiçbirşey yapılmadı" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Kök disk bölümü için hatalı bağlama noktası" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint \"{}\", mevcut değil, hiçbirşey yapılmadı" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Unsquash yapılandırma sorunlu" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "\"{}\" ({}) Dosya sistemi desteklenmiyor" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "\"{}\" Kaynak dosya sistemi mevcut değil" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Hedef sistemdeki \"{}\" hedefi bir dizin değil" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "KDM yapılandırma dosyası yazılamıyor" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM yapılandırma dosyası {!s} mevcut değil" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "LXDM yapılandırma dosyası yazılamıyor" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM yapılandırma dosyası {!s} mevcut değil" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "LightDM yapılandırma dosyası yazılamıyor" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM yapılandırma dosyası {!s} mevcut değil" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "LightDM yapılandırılamıyor" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "LightDM karşılama yüklü değil." -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "SLIM yapılandırma dosyası yazılamıyor" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM yapılandırma dosyası {!s} mevcut değil" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "Ekran yöneticisi modülü için ekran yöneticisi seçilmedi." -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." @@ -199,7 +198,7 @@ msgstr "" "Görüntüleyiciler listesi, her iki bölgedeki ve displaymanager.conf öğesinde " "boş veya tanımsızdır." -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "Ekran yöneticisi yapılandırma işi tamamlanamadı" @@ -210,27 +209,11 @@ msgstr "Mkinitcpio yapılandırılıyor." #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "
{!s}
kullanması için kök bağlama noktası verilmedi." -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "Mkinitcpio ile initramfs oluşturuluyor." - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "İşlem Başarısız" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" -"
Mkinitcpio
işlemi {!s} hata koduyla başarısız oldu. Komut " -"
{!s}
idi." - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "Şifreli takas alanı yapılandırılıyor." @@ -325,18 +308,6 @@ msgstr "Önyükleyici kur." msgid "Remove live user from target system" msgstr "Liveuser kullanıcısını hedef sistemden kaldırın" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "Initramfs oluşturuluyor." - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "update-initramfs hedefte çalıştırılamadı" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "Çıkış kodu {} idi" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "Donanım saati ayarlanıyor." @@ -349,6 +320,10 @@ msgstr "Dracut ile initramfs oluşturuluyor." msgid "Failed to run dracut on the target" msgstr "Hedef üzerinde dracut çalıştırılamadı" +#: src/modules/dracut/main.py:59 +msgid "The exit code was {}" +msgstr "Çıkış kodu {} idi" + #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." msgstr "Initramfs yapılandırılıyor." @@ -357,18 +332,6 @@ msgstr "Initramfs yapılandırılıyor." msgid "Configuring OpenRC dmcrypt service." msgstr "OpenRC dmcrypt servisi yapılandırılıyor." -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "LUKS anahtar dosyası yapılandırılıyor." - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "Şifrelenmiş rootfs kurulum hatası" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs disk bölümü {!s} LUKS, fakat parola bulunamadı." - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "Fstab dosyasına yazılıyor." diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po index f65cd5476..7ff597bd5 100644 --- a/lang/python/uk/LC_MESSAGES/python.po +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: Paul S , 2019\n" "Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" @@ -30,23 +30,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -99,15 +98,15 @@ msgstr "Відключити файлові системи." msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync зазнав невдачі з кодом помилки {}." -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "Не вдалося розпакувати образ \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" @@ -115,90 +114,90 @@ msgstr "" "Не вдалося знайти unsquashfs, переконайтеся, що встановлено пакет squashfs-" "tools" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "Немає точки монтування для кореневого розділу" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "Помилка точки монтування для кореневого розділу" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "Неправильна конфігурація unsquash" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "Файлова система для \"{}\" ({}) не підтримується" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "Вихідна файлова система \"{}\" не існує" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "Призначення \"{}\" у цільовій системі не є каталогом" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "Неможливо записати файл налаштування KDM" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "Файл налаштування KDM {!s} не існує" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "Неможливо записати файл конфігурації LXDM" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "Файл налаштування LXDM {!s} не існує" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "Неможливо записати файл налаштування LightDM" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "Файл налаштування LightDM {!s} не існує" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "Неможливо налаштувати LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "Неможливо записати файл налаштування SLIM" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "Файл налаштування SLIM {!s} не існує" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -209,25 +208,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -322,18 +307,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -346,6 +319,10 @@ msgstr "" 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 "" @@ -354,18 +331,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po index f5f0b82fb..8a7a63407 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -307,18 +292,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -331,6 +304,10 @@ msgstr "" 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 "" @@ -339,18 +316,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po index d890a5899..cf3b0147a 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: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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" @@ -25,23 +25,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -90,104 +89,104 @@ msgstr "" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -198,25 +197,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -305,18 +290,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -329,6 +302,10 @@ msgstr "" 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 "" @@ -337,18 +314,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po index bb6efe709..14e358903 100644 --- a/lang/python/zh_CN/LC_MESSAGES/python.po +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" "Last-Translator: leonfeng , 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" @@ -31,23 +31,22 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "" @@ -96,104 +95,104 @@ msgstr "卸载文件系统。" msgid "Filling up filesystems." msgstr "" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "" @@ -204,25 +203,11 @@ msgstr "" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: 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/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "" @@ -311,18 +296,6 @@ msgstr "" msgid "Remove live user from target system" msgstr "" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "" @@ -335,6 +308,10 @@ msgstr "" 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 "" @@ -343,18 +320,6 @@ msgstr "" msgid "Configuring OpenRC dmcrypt service." msgstr "" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "" diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index 54b7a3555..d1525888b 100644 Binary files a/lang/python/zh_TW/LC_MESSAGES/python.mo and b/lang/python/zh_TW/LC_MESSAGES/python.mo differ diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po index 92b62bcf4..faf332736 100644 --- a/lang/python/zh_TW/LC_MESSAGES/python.po +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Jeff Huang , 2019 +# 黃柏諺 , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-10 19:18-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Jeff Huang , 2019\n" +"Last-Translator: 黃柏諺 , 2019\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,23 +29,22 @@ msgstr "設定 GRUB。" msgid "Mounting partitions." msgstr "正在掛載分割區。" -#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 +#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:187 #: src/modules/initcpiocfg/main.py:191 #: src/modules/luksopenswaphookcfg/main.py:95 #: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171 #: src/modules/machineid/main.py:49 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/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312 -#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/fstab/main.py:322 +#: src/modules/fstab/main.py:328 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:188 +#: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:188 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 -#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 +#: src/modules/fstab/main.py:323 msgid "No partitions are defined for
{!s}
to use." msgstr "沒有分割區被定義為
{!s}
以供使用。" @@ -96,104 +95,104 @@ msgstr "解除掛載檔案系統。" msgid "Filling up filesystems." msgstr "填滿檔案系統。" -#: src/modules/unpackfs/main.py:159 +#: src/modules/unpackfs/main.py:180 msgid "rsync failed with error code {}." msgstr "rsync 失敗,錯誤碼 {} 。" -#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238 +#: src/modules/unpackfs/main.py:241 src/modules/unpackfs/main.py:264 msgid "Failed to unpack image \"{}\"" msgstr "無法解開映像檔 \"{}\"" -#: src/modules/unpackfs/main.py:221 +#: src/modules/unpackfs/main.py:242 msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "找不到 unsquashfs,請確定您已安裝 squashfs-tools 軟體包" -#: src/modules/unpackfs/main.py:320 +#: src/modules/unpackfs/main.py:366 msgid "No mount point for root partition" msgstr "沒有 root 分割區的掛載點" -#: src/modules/unpackfs/main.py:321 +#: src/modules/unpackfs/main.py:367 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgstr "globalstorage 不包含 \"rootMountPoint\" 鍵,不做任何事" -#: src/modules/unpackfs/main.py:326 +#: src/modules/unpackfs/main.py:372 msgid "Bad mount point for root partition" msgstr "root 分割區掛載點錯誤" -#: src/modules/unpackfs/main.py:327 +#: src/modules/unpackfs/main.py:373 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgstr "rootMountPoint 為 \"{}\",其不存在,不做任何事" -#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 -#: src/modules/unpackfs/main.py:352 +#: src/modules/unpackfs/main.py:385 src/modules/unpackfs/main.py:389 +#: src/modules/unpackfs/main.py:403 msgid "Bad unsquash configuration" msgstr "錯誤的 unsquash 設定" -#: src/modules/unpackfs/main.py:341 +#: src/modules/unpackfs/main.py:386 msgid "The filesystem for \"{}\" ({}) is not supported" msgstr "不支援 \"{}\" ({}) 的檔案系統" -#: src/modules/unpackfs/main.py:348 +#: src/modules/unpackfs/main.py:390 msgid "The source filesystem \"{}\" does not exist" msgstr "來源檔案系統 \"{}\" 不存在" -#: src/modules/unpackfs/main.py:353 +#: src/modules/unpackfs/main.py:404 msgid "The destination \"{}\" in the target system is not a directory" msgstr "目標系統中的目的地 \"{}\" 不是目錄" -#: src/modules/displaymanager/main.py:381 +#: src/modules/displaymanager/main.py:515 msgid "Cannot write KDM configuration file" msgstr "無法寫入 KDM 設定檔" -#: src/modules/displaymanager/main.py:382 +#: src/modules/displaymanager/main.py:516 msgid "KDM config file {!s} does not exist" msgstr "KDM 設定檔 {!s} 不存在" -#: src/modules/displaymanager/main.py:443 +#: src/modules/displaymanager/main.py:577 msgid "Cannot write LXDM configuration file" msgstr "無法寫入 LXDM 設定檔" -#: src/modules/displaymanager/main.py:444 +#: src/modules/displaymanager/main.py:578 msgid "LXDM config file {!s} does not exist" msgstr "LXDM 設定檔 {!s} 不存在" -#: src/modules/displaymanager/main.py:527 +#: src/modules/displaymanager/main.py:661 msgid "Cannot write LightDM configuration file" msgstr "無法寫入 LightDM 設定檔" -#: src/modules/displaymanager/main.py:528 +#: src/modules/displaymanager/main.py:662 msgid "LightDM config file {!s} does not exist" msgstr "LightDM 設定檔 {!s} 不存在" -#: src/modules/displaymanager/main.py:602 +#: src/modules/displaymanager/main.py:736 msgid "Cannot configure LightDM" msgstr "無法設定 LightDM" -#: src/modules/displaymanager/main.py:603 +#: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." msgstr "未安裝 LightDM greeter。" -#: src/modules/displaymanager/main.py:634 +#: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" msgstr "無法寫入 SLIM 設定檔" -#: src/modules/displaymanager/main.py:635 +#: src/modules/displaymanager/main.py:769 msgid "SLIM config file {!s} does not exist" msgstr "SLIM 設定檔 {!s} 不存在" -#: src/modules/displaymanager/main.py:750 +#: src/modules/displaymanager/main.py:895 msgid "No display managers selected for the displaymanager module." msgstr "未在顯示管理器模組中選取顯示管理器。" -#: src/modules/displaymanager/main.py:751 +#: src/modules/displaymanager/main.py:896 msgid "" "The displaymanagers list is empty or undefined in bothglobalstorage and " "displaymanager.conf." msgstr "顯示管理器清單為空或在全域儲存與 displaymanager.conf 中皆未定義。" -#: src/modules/displaymanager/main.py:831 +#: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" msgstr "顯示管理器設定不完整" @@ -204,25 +203,11 @@ msgstr "正在設定 mkinitcpio。" #: src/modules/initcpiocfg/main.py:192 #: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99 -#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:329 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 msgid "No root mount point is given for
{!s}
to use." msgstr "沒有給定的根掛載點
{!s}
以供使用。" -#: src/modules/initcpio/main.py:33 -msgid "Creating initramfs with mkinitcpio." -msgstr "正在使用 mkinitcpio 建立 initramfs。" - -#: src/modules/initcpio/main.py:47 -msgid "Process Failed" -msgstr "處理失敗" - -#: src/modules/initcpio/main.py:48 -msgid "" -"Process
mkinitcpio
failed with error code {!s}. The command was " -"
{!s}
." -msgstr "處理程序
mkinitcpio
帶著錯誤代碼 {!s} 失敗。指令為
{!s}
。" - #: src/modules/luksopenswaphookcfg/main.py:35 msgid "Configuring encrypted swap." msgstr "正在設定已加密的 swap。" @@ -311,18 +296,6 @@ msgstr "安裝開機載入程式。" msgid "Remove live user from target system" msgstr "從目標系統移除 live 使用者" -#: src/modules/initramfs/main.py:35 -msgid "Creating initramfs." -msgstr "正在建立 initramfs。" - -#: src/modules/initramfs/main.py:49 -msgid "Failed to run update-initramfs on the target" -msgstr "在目標上執行 update-initramfs 失敗" - -#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 -msgid "The exit code was {}" -msgstr "結束碼為 {}" - #: src/modules/hwclock/main.py:35 msgid "Setting hardware clock." msgstr "正在設定硬體時鐘。" @@ -335,6 +308,10 @@ msgstr "正在使用 dracut 建立 initramfs。" 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。" @@ -343,18 +320,6 @@ msgstr "正在設定 initramfs。" msgid "Configuring OpenRC dmcrypt service." msgstr "正在設定 OpenRC dmcrypt 服務。" -#: src/modules/luksbootkeyfile/main.py:35 -msgid "Configuring LUKS key file." -msgstr "正在設定 LUKS 金鑰檔案。" - -#: src/modules/luksbootkeyfile/main.py:74 -msgid "Encrypted rootfs setup error" -msgstr "已加密的 rootfs 設定錯誤" - -#: src/modules/luksbootkeyfile/main.py:75 -msgid "Rootfs partition {!s} is LUKS but no passphrase found." -msgstr "Rootfs 分割區 {!s} 是 LUKS 但找不到通關密語。" - #: src/modules/fstab/main.py:38 msgid "Writing fstab." msgstr "正在寫入 fstab。" diff --git a/lang/tz_en.ts b/lang/tz_en.ts new file mode 100644 index 000000000..ba9b5a350 --- /dev/null +++ b/lang/tz_en.ts @@ -0,0 +1,2617 @@ + + + + + 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 + Kyiv + + + + 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_nl.ts b/lang/tz_nl.ts new file mode 100644 index 000000000..e1eb8d1e5 --- /dev/null +++ b/lang/tz_nl.ts @@ -0,0 +1,2617 @@ + + + + + QObject + + + Africa + tz_regions + Afrika + + + + America + tz_regions + Amerika + + + + Antarctica + tz_regions + + + + + Arctic + tz_regions + + + + + Asia + tz_regions + Azië + + + + Atlantic + tz_regions + Atlantisch + + + + Australia + tz_regions + Australië + + + + Europe + tz_regions + Europa + + + + Indian + tz_regions + + + + + Pacific + tz_regions + Stille Oceaan + + + + 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 + Berlijn + + + + 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 + Parijs + + + + 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 new file mode 100644 index 000000000..6059079ca --- /dev/null +++ b/lang/tz_uk.ts @@ -0,0 +1,2617 @@ + + + + + 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/src/branding/README.md b/src/branding/README.md index 1b9eb57fd..099163836 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -66,6 +66,16 @@ 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 +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 + (activated) and is set to *false* when the slideshow is hidden (e.g. + when the installation phase is done). + - The *actvatedInCalamares* property can be used to set up timers also in V1. + - The keyboard shortcuts in the example slideshow are enabled only while + the slideshow is visible. + ## Translations diff --git a/src/branding/default/branding.desc b/src/branding/default/branding.desc index 1bd76cd29..f70715aea 100644 --- a/src/branding/default/branding.desc +++ b/src/branding/default/branding.desc @@ -35,6 +35,12 @@ windowExpanding: normal # in CalamaresUtilsGui, 800x520. windowSize: 800px,520px +# Placement of Calamares window. Either "center" or "free". +# Whether "center" actually works does depend on the window +# manager in use (and only makes sense if you're not using +# *windowExpanding* set to "fullscreen"). +windowPlacement: center + # These are strings shown to the user in the user interface. # There is no provision for translating them -- since they # are names, the string is included as-is. @@ -56,6 +62,10 @@ windowSize: 800px,520px # Note that ANSI_COLOR and CPE_NAME don't make sense here, and # are not supported (the rest are). Remember to quote the string # if it contains substitutions, or you'll get YAML exceptions. +# +# The *Url* entries are used on the welcome page, and they +# are visible as buttons there if the corresponding *show* keys +# are set to "true" (they can also be overridden). strings: productName: "@{NAME}" shortProductName: Generic @@ -84,7 +94,7 @@ strings: # the window. Use `welcomeExpandingLogo` to make it non-scaled. # Recommended size is 320x150. # -# These strings can also use substitutions from os-release (see above). +# These filenames can also use substitutions from os-release (see above). images: productLogo: "squid.png" productIcon: "squid.png" diff --git a/src/branding/default/lang/calamares-default_ar.ts b/src/branding/default/lang/calamares-default_ar.ts index 05463dd72..3c4fe0933 100644 --- a/src/branding/default/lang/calamares-default_ar.ts +++ b/src/branding/default/lang/calamares-default_ar.ts @@ -1,6 +1,6 @@ - + show @@ -11,7 +11,7 @@ This is a third Slide element. - عرض الثالث + عرض الثالث diff --git a/src/branding/default/lang/calamares-default_en.ts b/src/branding/default/lang/calamares-default_en.ts index 30474fc02..b02dbd5b1 100644 --- a/src/branding/default/lang/calamares-default_en.ts +++ b/src/branding/default/lang/calamares-default_en.ts @@ -1,6 +1,6 @@ - + show diff --git a/src/branding/default/lang/calamares-default_eo.ts b/src/branding/default/lang/calamares-default_eo.ts new file mode 100644 index 000000000..7d1ef4e82 --- /dev/null +++ b/src/branding/default/lang/calamares-default_eo.ts @@ -0,0 +1,17 @@ + + + + + show + + + This is a second Slide element. + Ĉi tio estas la dua gliteja. + + + + This is a third Slide element. + Ĉi tio estas la tria gliteja. + + + diff --git a/src/branding/default/lang/calamares-default_fr.ts b/src/branding/default/lang/calamares-default_fr.ts index 9329e61ee..ec5e0411a 100644 --- a/src/branding/default/lang/calamares-default_fr.ts +++ b/src/branding/default/lang/calamares-default_fr.ts @@ -1,6 +1,6 @@ - + show @@ -11,7 +11,7 @@ This is a third Slide element. - La troisième affice ce trouve ici. + La troisième affice ce trouve ici. diff --git a/src/branding/default/lang/calamares-default_nl.ts b/src/branding/default/lang/calamares-default_nl.ts index aad00eaf7..19fd58361 100644 --- a/src/branding/default/lang/calamares-default_nl.ts +++ b/src/branding/default/lang/calamares-default_nl.ts @@ -11,7 +11,7 @@ This is a third Slide element. - Dit is het derde Dia element. + Dit is het derde Dia element. diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index 43b407283..dcb0f9257 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -25,14 +25,14 @@ Presentation id: presentation function nextSlide() { - console.log("Next slide"); + console.log("QML Component (default slideshow) Next slide"); presentation.goToNextSlide(); } Timer { id: advanceTimer interval: 1000 - running: false + running: presentation.activatedInCalamares repeat: true onTriggered: nextSlide() } @@ -68,9 +68,19 @@ Presentation centeredText: qsTr("This is a third Slide element.") } + // When this slideshow is loaded as a V1 slideshow, only + // activatedInCalamares is set, which starts the timer (see above). + // + // In V2, also the onActivate() and onLeave() methods are called. + // These example functions log a message (and re-start the slides + // from the first). function onActivate() { + console.log("QML Component (default slideshow) activated"); presentation.currentSlide = 0; - advanceTimer.running = true - console.log("Component activated"); } + + function onLeave() { + console.log("QML Component (default slideshow) deactivated"); + } + } diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index 5159916e8..a55e26b6d 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -5,6 +5,9 @@ set( calamaresSources CalamaresApplication.cpp CalamaresWindow.cpp + DebugWindow.cpp + VariantModel.cpp + progresstree/ProgressTreeDelegate.cpp progresstree/ProgressTreeItem.cpp progresstree/ProgressTreeModel.cpp @@ -17,8 +20,9 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../libcalamares - ../libcalamares - ../libcalamaresui + ${CMAKE_SOURCE_DIR}/src/libcalamares + ${CMAKE_SOURCE_DIR}/src//libcalamaresui + ${CMAKE_SOURCE_DIR} ) # Translations @@ -34,6 +38,7 @@ set_target_properties(calamares_bin RUNTIME_OUTPUT_NAME calamares ) calamares_automoc( calamares_bin ) +calamares_autouic( calamares_bin ) target_link_libraries( calamares_bin PRIVATE @@ -41,11 +46,11 @@ target_link_libraries( calamares_bin calamaresui Qt5::Core Qt5::Widgets + KF5::CoreAddons ) if( WITH_KF5Crash ) target_link_libraries( calamares_bin PRIVATE - KF5::CoreAddons KF5::Crash ) target_compile_definitions( calamares_bin PRIVATE WITH_KF5Crash ) diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 755808f5f..1584b11fa 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -39,6 +39,8 @@ #include #include #include +#include +#include CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) @@ -341,6 +343,42 @@ CalamaresApplication::initModuleManager() m_moduleManager->init(); } +/** @brief centers the widget @p w on (a) screen + * + * This tries to duplicate the (deprecated) qApp->desktop()->availableGeometry() + * placement by iterating over screens and putting Calamares in the first + * one where it fits; this is *generally* the primary screen. + * + * With debugging, it would look something like this (2 screens attached, + * primary at +1080+240 because I have a very strange X setup). Before + * being mapped, the Calamares window is at +0+0 but does have a size. + * The first screen's geometry includes the offset from the origin in + * screen coordinates. + * + * Proposed window size: 1024 520 + * Window QRect(0,0 1024x520) + * Screen QRect(1080,240 2560x1440) + * Moving QPoint(1848,700) + * Screen QRect(0,0 1080x1920) + * + */ +static void +centerWindowOnScreen( QWidget* w ) +{ + QList< QScreen* > screens = qApp->screens(); + QPoint windowCenter = w->rect().center(); + QSize windowSize = w->rect().size(); + + for ( const auto* screen : screens ) + { + QSize screenSize = screen->availableGeometry().size(); + if ( ( screenSize.width() >= windowSize.width() ) && ( screenSize.height() >= windowSize.height() ) ) + { + w->move( screen->availableGeometry().center() - windowCenter ); + break; + } + } +} void CalamaresApplication::initView() @@ -354,10 +392,12 @@ CalamaresApplication::initView() connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps ); connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, this, &CalamaresApplication::initFailed ); - m_moduleManager->loadModules(); - - m_mainwindow->move( this->desktop()->availableGeometry().center() - m_mainwindow->rect().center() ); + QTimer::singleShot( 0, m_moduleManager, &Calamares::ModuleManager::loadModules ); + if ( Calamares::Branding::instance() && Calamares::Branding::instance()->windowPlacementCentered() ) + { + centerWindowOnScreen( m_mainwindow ); + } cDebug() << "STARTUP: CalamaresWindow created; loadModules started"; } diff --git a/src/calamares/CalamaresVersion.h.in b/src/calamares/CalamaresVersion.h.in index 13a8c9e2e..4ac7ee1d1 100644 --- a/src/calamares/CalamaresVersion.h.in +++ b/src/calamares/CalamaresVersion.h.in @@ -14,4 +14,4 @@ #cmakedefine CALAMARES_TRANSLATION_LANGUAGES "${CALAMARES_TRANSLATION_LANGUAGES}" -#endif // CALAMARES_VERSION_H +#endif // CALAMARES_VERSION_H diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index d80b6cb67..ac00bafd4 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -22,11 +22,11 @@ #include "CalamaresWindow.h" #include "Branding.h" +#include "DebugWindow.h" #include "Settings.h" #include "ViewManager.h" #include "progresstree/ProgressTreeView.h" #include "utils/CalamaresUtilsGui.h" -#include "utils/DebugWindow.h" #include "utils/Logger.h" #include "utils/Retranslator.h" @@ -48,11 +48,11 @@ windowDimensionToPixels( const Calamares::Branding::WindowDimension& u ) } if ( u.unit() == Calamares::Branding::WindowDimensionUnit::Pixies ) { - return u.value(); + return static_cast< int >( u.value() ); } if ( u.unit() == Calamares::Branding::WindowDimensionUnit::Fonties ) { - return u.value() * CalamaresUtils::defaultFontHeight(); + return static_cast< int >( u.value() * CalamaresUtils::defaultFontHeight() ); } return 0; } diff --git a/src/libcalamaresui/utils/DebugWindow.cpp b/src/calamares/DebugWindow.cpp similarity index 58% rename from src/libcalamaresui/utils/DebugWindow.cpp rename to src/calamares/DebugWindow.cpp index 62ab504d3..6891851a7 100644 --- a/src/libcalamaresui/utils/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -20,10 +20,11 @@ #include "DebugWindow.h" #include "ui_DebugWindow.h" +#include "VariantModel.h" + #include "Branding.h" #include "modulesystem/Module.h" #include "modulesystem/ModuleManager.h" -#include "utils/qjsonmodel.h" #include "GlobalStorage.h" #include "Job.h" @@ -31,17 +32,17 @@ #include "utils/Logger.h" #include "utils/Retranslator.h" - #ifdef WITH_PYTHONQT -#include #include "ViewManager.h" #include "viewpages/PythonQtViewStep.h" + +#include #endif -#include #include #include #include +#include /** * @brief crash makes Calamares crash immediately. @@ -54,50 +55,56 @@ crash() } /// @brief Print out the widget tree (names) in indented form. -static void dumpWidgetTree( QDebug& deb, const QWidget* widget, int depth ) +static void +dumpWidgetTree( QDebug& deb, const QWidget* widget, int depth ) { if ( !widget ) + { return; + } deb << Logger::Continuation; - for (int i = 0; i < depth; ++i ) + for ( int i = 0; i < depth; ++i ) + { deb << ' '; + } deb << widget->objectName(); - for ( const auto* w : widget->findChildren( QString(), Qt::FindDirectChildrenOnly ) ) - dumpWidgetTree( deb, w, depth+1 ); + for ( const auto* w : widget->findChildren< QWidget* >( QString(), Qt::FindDirectChildrenOnly ) ) + { + dumpWidgetTree( deb, w, depth + 1 ); + } } -namespace Calamares { +namespace Calamares +{ DebugWindow::DebugWindow() : QWidget( nullptr ) , m_ui( new Ui::DebugWindow ) + , m_globals( JobQueue::instance()->globalStorage()->data() ) + , m_globals_model( std::make_unique< VariantModel >( &m_globals ) ) + , m_module_model( std::make_unique< VariantModel >( &m_module ) ) { - m_ui->setupUi( this ); - - // GlobalStorage page - QJsonModel* jsonModel = new QJsonModel( this ); - - m_ui->globalStorageView->setModel( jsonModel ); GlobalStorage* gs = JobQueue::instance()->globalStorage(); - connect( gs, &GlobalStorage::changed, - this, [ = ] - { - jsonModel->loadJson( QJsonDocument::fromVariant( gs->m ).toJson() ); + m_ui->setupUi( this ); + + m_ui->globalStorageView->setModel( m_globals_model.get() ); + m_ui->globalStorageView->expandAll(); + + // Do above when the GS changes, too + connect( gs, &GlobalStorage::changed, this, [=] { + m_globals = JobQueue::instance()->globalStorage()->data(); + m_globals_model->reload(); m_ui->globalStorageView->expandAll(); } ); - jsonModel->loadJson( QJsonDocument::fromVariant( gs->m ).toJson() ); - m_ui->globalStorageView->expandAll(); // JobQueue page m_ui->jobQueueText->setReadOnly( true ); - connect( JobQueue::instance(), &JobQueue::queueChanged, - this, [ this ]( const JobList& jobs ) - { + connect( JobQueue::instance(), &JobQueue::queueChanged, this, [this]( const JobList& jobs ) { QStringList text; - for ( const auto &job : jobs ) + for ( const auto& job : jobs ) { text.append( job->prettyName() ); } @@ -110,8 +117,7 @@ DebugWindow::DebugWindow() m_ui->modulesListView->setModel( modulesModel ); m_ui->modulesListView->setSelectionMode( QAbstractItemView::SingleSelection ); - QJsonModel* moduleConfigModel = new QJsonModel( this ); - m_ui->moduleConfigView->setModel( moduleConfigModel ); + m_ui->moduleConfigView->setModel( m_module_model.get() ); #ifdef WITH_PYTHONQT QPushButton* pythonConsoleButton = new QPushButton; @@ -119,21 +125,17 @@ DebugWindow::DebugWindow() m_ui->modulesVerticalLayout->insertWidget( 1, pythonConsoleButton ); pythonConsoleButton->hide(); - QObject::connect( pythonConsoleButton, &QPushButton::clicked, - this, [ this, moduleConfigModel ] - { + QObject::connect( pythonConsoleButton, &QPushButton::clicked, this, [this, moduleConfigModel] { QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); Module* module = ModuleManager::instance()->moduleInstance( moduleName ); - if ( module->interface() != Module::Interface::PythonQt || - module->type() != Module::Type::View ) + if ( module->interface() != Module::Interface::PythonQt || module->type() != Module::Type::View ) return; for ( ViewStep* step : ViewManager::instance()->viewSteps() ) { if ( step->moduleInstanceKey() == module->instanceKey() ) { - PythonQtViewStep* pqvs = - qobject_cast< PythonQtViewStep* >( step ); + PythonQtViewStep* pqvs = qobject_cast< PythonQtViewStep* >( step ); if ( pqvs ) { QWidget* consoleWindow = new QWidget; @@ -150,23 +152,17 @@ DebugWindow::DebugWindow() QLabel* bottomLabel = new QLabel( consoleWindow ); bottomLayout->addWidget( bottomLabel ); - QString line = - QString( "Module: %1
" - "Python class: %2" ) - .arg( module->instanceKey() ) - .arg( console->property( "classname" ).toString() ); + QString line = QString( "Module: %1
" + "Python class: %2" ) + .arg( module->instanceKey() ) + .arg( console->property( "classname" ).toString() ); bottomLabel->setText( line ); QPushButton* closeButton = new QPushButton( consoleWindow ); closeButton->setText( "&Close" ); - QObject::connect( closeButton, &QPushButton::clicked, - [ consoleWindow ] - { - consoleWindow->close(); - } ); + QObject::connect( closeButton, &QPushButton::clicked, [consoleWindow] { consoleWindow->close(); } ); bottomLayout->addWidget( closeButton ); - bottomLabel->setSizePolicy( QSizePolicy::Expanding, - QSizePolicy::Preferred ); + bottomLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); consoleWindow->setParent( this ); consoleWindow->setWindowFlags( Qt::Window ); @@ -181,57 +177,52 @@ DebugWindow::DebugWindow() #endif - connect( m_ui->modulesListView->selectionModel(), &QItemSelectionModel::selectionChanged, - this, [ this, moduleConfigModel + connect( m_ui->modulesListView->selectionModel(), + &QItemSelectionModel::selectionChanged, + this, + [this #ifdef WITH_PYTHONQT - , pythonConsoleButton + , + pythonConsoleButton #endif - ] - { - QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); - Module* module = ModuleManager::instance()->moduleInstance( moduleName ); - if ( module ) - { - moduleConfigModel->loadJson( QJsonDocument::fromVariant( module->configurationMap() ).toJson() ); - m_ui->moduleConfigView->expandAll(); - m_ui->moduleTypeLabel->setText( module->typeString() ); - m_ui->moduleInterfaceLabel->setText( module->interfaceString() ); + ] { + QString moduleName = m_ui->modulesListView->currentIndex().data().toString(); + Module* module = ModuleManager::instance()->moduleInstance( moduleName ); + if ( module ) + { + m_module = module->configurationMap(); + m_module_model->reload(); + m_ui->moduleConfigView->expandAll(); + m_ui->moduleTypeLabel->setText( module->typeString() ); + m_ui->moduleInterfaceLabel->setText( module->interfaceString() ); #ifdef WITH_PYTHONQT - pythonConsoleButton->setVisible( - module->interface() == Module::Interface::PythonQt && - module->type() == Module::Type::View ); + pythonConsoleButton->setVisible( module->interface() == Module::Interface::PythonQt + && module->type() == Module::Type::View ); #endif - } - } ); + } + } ); // Tools page connect( m_ui->crashButton, &QPushButton::clicked, this, [] { ::crash(); } ); - connect( m_ui->reloadStylesheetButton, &QPushButton::clicked, - []() - { - for ( auto* w : qApp->topLevelWidgets() ) - { - // Needs to match what's set in CalamaresWindow - if ( w->objectName() == QStringLiteral( "mainApp" ) ) - { - w->setStyleSheet( Calamares::Branding::instance()->stylesheet() ); - } - } - }); - connect( m_ui->widgetTreeButton, &QPushButton::clicked, - []() - { - for ( auto* w : qApp->topLevelWidgets() ) - { - auto deb = cDebug(); - dumpWidgetTree( deb, w, 0 ); - } - }); + connect( m_ui->reloadStylesheetButton, &QPushButton::clicked, []() { + for ( auto* w : qApp->topLevelWidgets() ) + { + // Needs to match what's set in CalamaresWindow + if ( w->objectName() == QStringLiteral( "mainApp" ) ) + { + w->setStyleSheet( Calamares::Branding::instance()->stylesheet() ); + } + } + } ); + connect( m_ui->widgetTreeButton, &QPushButton::clicked, []() { + for ( auto* w : qApp->topLevelWidgets() ) + { + Logger::CDebug deb; + dumpWidgetTree( deb, w, 0 ); + } + } ); - CALAMARES_RETRANSLATE( - m_ui->retranslateUi( this ); - setWindowTitle( tr( "Debug information" ) ); - ) + CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); setWindowTitle( tr( "Debug information" ) ); ) } @@ -242,4 +233,4 @@ DebugWindow::closeEvent( QCloseEvent* e ) emit closed(); } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/utils/DebugWindow.h b/src/calamares/DebugWindow.h similarity index 78% rename from src/libcalamaresui/utils/DebugWindow.h rename to src/calamares/DebugWindow.h index e97f5727b..764a141c2 100644 --- a/src/libcalamaresui/utils/DebugWindow.h +++ b/src/calamares/DebugWindow.h @@ -20,15 +20,20 @@ #ifndef CALAMARES_DEBUGWINDOW_H #define CALAMARES_DEBUGWINDOW_H +#include "VariantModel.h" + +#include #include +#include -namespace Calamares { +namespace Calamares +{ // From the .ui file namespace Ui { - class DebugWindow; +class DebugWindow; } class DebugWindow : public QWidget @@ -45,9 +50,13 @@ protected: void closeEvent( QCloseEvent* e ) override; private: - Ui::DebugWindow *m_ui; + Ui::DebugWindow* m_ui; + QVariant m_globals; + QVariant m_module; + std::unique_ptr< VariantModel > m_globals_model; + std::unique_ptr< VariantModel > m_module_model; }; -} // namespace +} // namespace Calamares #endif diff --git a/src/libcalamaresui/utils/DebugWindow.ui b/src/calamares/DebugWindow.ui similarity index 100% rename from src/libcalamaresui/utils/DebugWindow.ui rename to src/calamares/DebugWindow.ui diff --git a/src/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp new file mode 100644 index 000000000..2d8313665 --- /dev/null +++ b/src/calamares/VariantModel.cpp @@ -0,0 +1,280 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "VariantModel.h" + +static void +overallLength( const QVariant& item, quintptr& c, quintptr parent, VariantModel::IndexVector* skiplist ) +{ + if ( skiplist ) + { + skiplist->append( parent ); + } + + parent = c++; + if ( item.canConvert< QVariantList >() ) + { + for ( const auto& subitem : item.toList() ) + { + overallLength( subitem, c, parent, skiplist ); + } + } + else if ( item.canConvert< QVariantMap >() ) + { + for ( const auto& subitem : item.toMap() ) + { + overallLength( subitem, c, parent, skiplist ); + } + } +} + +static quintptr +findNth( const VariantModel::IndexVector& skiplist, quintptr value, int n ) +{ + constexpr const quintptr invalid_index = static_cast< quintptr >( -1 ); + + if ( n < 0 ) + { + return invalid_index; + } + + int index = static_cast< int >( value ); + while ( ( n >= 0 ) && ( index < skiplist.count() ) ) + { + if ( skiplist[ index ] == value ) + { + if ( --n < 0 ) + { + // It's bigger than 0 + return static_cast< quintptr >( index ); + } + } + index++; + } + return invalid_index; +} + + +VariantModel::VariantModel( const QVariant* p ) + : m_p( p ) +{ + reload(); +} + +VariantModel::~VariantModel() {} + +void +VariantModel::reload() +{ + constexpr const quintptr invalid_index = static_cast< quintptr >( -1 ); + + quintptr x = 0; + m_rows.clear(); // Start over + if ( m_rows.capacity() < 64 ) + { + m_rows.reserve( 64 ); // Start reasonably-sized + } + overallLength( *m_p, x, invalid_index, &m_rows ); +} + +int +VariantModel::columnCount( const QModelIndex& ) const +{ + return 2; +} + +int +VariantModel::rowCount( const QModelIndex& index ) const +{ + quintptr p = index.isValid() ? index.internalId() : 0; + return m_rows.count( p ); +} + +QModelIndex +VariantModel::index( int row, int column, const QModelIndex& parent ) const +{ + quintptr p = 0; + + if ( parent.isValid() ) + { + if ( inRange( parent ) ) + { + p = parent.internalId(); + } + } + + return createIndex( row, column, findNth( m_rows, p, row ) ); +} + +static inline quintptr +deref( const VariantModel::IndexVector& v, quintptr i ) +{ + return v[ static_cast< int >( i ) ]; +} + +QModelIndex +VariantModel::parent( const QModelIndex& index ) const +{ + if ( !index.isValid() || !inRange( index ) ) + { + return QModelIndex(); + } + + quintptr p = deref( m_rows, index.internalId() ); + if ( p == 0 ) + { + return QModelIndex(); + } + + if ( !inRange( p ) ) + { + return QModelIndex(); + } + quintptr p_pid = deref( m_rows, p ); + int row = 0; + for ( int i = static_cast< int >( p_pid ); i < static_cast< int >( p ); ++i ) + { + if ( m_rows[ i ] == p_pid ) + { + row++; + } + } + + return createIndex( row, index.column(), p ); +} + +QVariant +VariantModel::data( const QModelIndex& index, int role ) const +{ + if ( role != Qt::DisplayRole ) + { + return QVariant(); + } + + if ( !index.isValid() ) + { + return QVariant(); + } + + if ( ( index.column() < 0 ) || ( index.column() > 1 ) ) + { + return QVariant(); + } + + if ( !inRange( index ) ) + { + return QVariant(); + } + + const QVariant thing = underlying( parent( index ) ); + + if ( !thing.isValid() ) + { + return QVariant(); + } + + if ( thing.canConvert< QVariantMap >() ) + { + QVariantMap the_map = thing.toMap(); + const auto key = the_map.keys().at( index.row() ); + if ( index.column() == 0 ) + { + return key; + } + else + { + return the_map[ key ]; + } + } + else if ( thing.canConvert< QVariantList >() ) + { + if ( index.column() == 0 ) + { + return index.row(); + } + else + { + QVariantList the_list = thing.toList(); + return the_list.at( index.row() ); + } + } + else + { + if ( index.column() == 0 ) + { + return QVariant(); + } + else + { + return thing; + } + } +} + +QVariant +VariantModel::headerData( int section, Qt::Orientation orientation, int role ) const +{ + if ( role != Qt::DisplayRole ) + { + return QVariant(); + } + + if ( orientation == Qt::Horizontal ) + { + if ( section == 0 ) + { + return tr( "Key" ); + } + else if ( section == 1 ) + { + return tr( "Value" ); + } + else + { + return QVariant(); + } + } + else + { + return QVariant(); + } +} + +const QVariant +VariantModel::underlying( const QModelIndex& index ) const +{ + if ( !index.isValid() ) + { + return *m_p; + } + + const auto& thing = underlying( parent( index ) ); + if ( thing.canConvert< QVariantMap >() ) + { + const auto& the_map = thing.toMap(); + return the_map[ the_map.keys()[ index.row() ] ]; + } + else if ( thing.canConvert< QVariantList >() ) + { + return thing.toList()[ index.row() ]; + } + else + { + return thing; + } +} diff --git a/src/calamares/VariantModel.h b/src/calamares/VariantModel.h new file mode 100644 index 000000000..bdf6da866 --- /dev/null +++ b/src/calamares/VariantModel.h @@ -0,0 +1,112 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef VARIANTMODEL_H +#define VARIANTMODEL_H + +#include +#include +#include + +/** @brief A model that operates directly on a QVariant + * + * A VariantModel operates directly on an underlying + * QVariant, treating QVariantMap and QVariantList as + * nodes with multiple children. In general, putting + * a QVariantMap into a QVariant and passing that into + * the model will get you a tree-like model of the + * VariantMap's data structure. + * + * Take care of object lifetimes and that the underlying + * QVariant does not change during use. If the QVariant + * **does** change, call reload() to re-build the internal + * representation of the tree. + */ +class VariantModel : public QAbstractItemModel +{ +public: + /** @brief Auxiliary data + * + * The nodes of the tree are enumerated into a vector + * (of length equal to the number of nodes in the tree + 1) + * which are used to do index and parent calculations. + */ + using IndexVector = QVector< quintptr >; + + /** @brief Constructor + * + * The QVariant's lifetime is **not** affected by the model, + * so take care that the QVariant lives at least as long as + * the model). Also, don't change the QVariant underneath the model. + */ + VariantModel( const QVariant* p ); + + ~VariantModel() override; + + /** @brief Re-build the internal tree + * + * Call this when the underlying variant is changed, which + * might impact how the tree is laid out. + */ + void reload(); + + int columnCount( const QModelIndex& index ) const override; + int rowCount( const QModelIndex& index ) const override; + + QModelIndex index( int row, int column, const QModelIndex& parent ) const override; + QModelIndex parent( const QModelIndex& index ) const override; + QVariant data( const QModelIndex& index, int role ) const override; + QVariant headerData( int section, Qt::Orientation orientation, int role ) const override; + +private: + const QVariant* const m_p; + + /** @brief Tree representation of the variant. + * + * At index 0 in the vector , we store -1 to indicate the root. + * + * Then we enumerate all the elements in the tree (by traversing + * the variant and using QVariantMap and QVariantList as having + * children, and everything else being a leaf node) and at the index + * for a child, store the index of its parent. This means that direct + * children of the root store a 0 in their indexes, children of the first + * child of the root store a 1, and we can "pointer chase" from an index + * through parents back to index 0. + * + * Because of this structure, the value stored at index i must be + * less than i (except for index 0, which is special). This makes it + * slightly easier to search for a given value *p*, because we can start + * at index *p* (or even *p+1*). + * + * Given an index *i* into the vector corresponding to a child, we know the + * parent, but can also count which row this child should have, by counting + * *other* indexes before *i* with the same parent (and by the ordering + * of values, we can start counting at index *parent-index*). + * + */ + IndexVector m_rows; + + /// @brief Implementation of walking an index through the variant-tree + const QVariant underlying( const QModelIndex& index ) const; + + /// @brief Helpers for range-checking + inline bool inRange( quintptr p ) const { return p < static_cast< quintptr >( m_rows.count() ); } + inline bool inRange( const QModelIndex& index ) const { return inRange( index.internalId() ); } +}; + +#endif diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index d463b789d..caf1f6cfd 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -21,12 +21,13 @@ #include "CalamaresApplication.h" #include "CalamaresConfig.h" -#include "kdsingleapplicationguard/kdsingleapplicationguard.h" #include "utils/Dirs.h" #include "utils/Logger.h" -#ifdef WITH_KF5Crash +#include "3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h" + #include +#ifdef WITH_KF5Crash #include #endif @@ -92,7 +93,6 @@ main( int argc, char* argv[] ) { CalamaresApplication a( argc, argv ); -#ifdef WITH_KF5Crash KAboutData aboutData( "calamares", "Calamares", a.applicationVersion(), @@ -103,12 +103,14 @@ main( int argc, char* argv[] ) "https://calamares.io", "https://github.com/calamares/calamares/issues" ); KAboutData::setApplicationData( aboutData ); + a.setApplicationDisplayName( QString() ); // To avoid putting an extra "Calamares/" into the log-file + +#ifdef WITH_KF5Crash KCrash::initialize(); // KCrash::setCrashHandler(); KCrash::setDrKonqiEnabled( true ); KCrash::setFlags( KCrash::SaferDialog | KCrash::AlwaysDirectly ); // TODO: umount anything in /tmp/calamares-... as an emergency save function - a.setApplicationDisplayName( QString() ); #endif handle_args( a ); diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp index 5fb9dbf8b..9db508c6e 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.cpp +++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp @@ -96,7 +96,7 @@ ProgressTreeDelegate::paintViewStep( QPainter* painter, = Calamares::Branding::instance()->styleString( Calamares::Branding::SidebarTextHighlight ); if ( textHighlight.isEmpty() ) { - painter->setBrush( CalamaresApplication::instance()->mainWindow()->palette().background() ); + painter->setBrush( CalamaresApplication::instance()->mainWindow()->palette().window() ); } else { diff --git a/src/calamares/progresstree/ProgressTreeView.cpp b/src/calamares/progresstree/ProgressTreeView.cpp index 5c81e3851..d4f652363 100644 --- a/src/calamares/progresstree/ProgressTreeView.cpp +++ b/src/calamares/progresstree/ProgressTreeView.cpp @@ -76,9 +76,10 @@ ProgressTreeView::setModel( QAbstractItemModel* model ) QTreeView::setModel( model ); expandAll(); - connect( Calamares::ViewManager::instance(), - &Calamares::ViewManager::currentStepChanged, - this, - [this]() { viewport()->update(); }, - Qt::UniqueConnection ); + connect( + Calamares::ViewManager::instance(), + &Calamares::ViewManager::currentStepChanged, + this, + [this]() { viewport()->update(); }, + Qt::UniqueConnection ); } diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index 0f07e6e13..885915041 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -26,52 +26,45 @@ #include "utils/Logger.h" #include "utils/Yaml.h" +#include "Branding.h" #include "GlobalStorage.h" #include "Job.h" #include "JobQueue.h" #include "Settings.h" +#include "ViewManager.h" +#include "modulesystem/ModuleManager.h" + +#include #include #include #include #include +#include +#include #include struct ModuleConfig { - QString - moduleName() const - { - return m_module; - } - QString - configFile() const - { - return m_jobConfig; - } - QString - language() const - { - return m_language; - } - QString - globalConfigFile() const - { - return m_globalConfig; - } + QString moduleName() const { return m_module; } + QString configFile() const { return m_jobConfig; } + QString language() const { return m_language; } + QString globalConfigFile() const { return m_globalConfig; } QString m_module; QString m_jobConfig; QString m_globalConfig; QString m_language; + QString m_branding; + bool m_ui; }; static ModuleConfig handle_args( QCoreApplication& a ) { QCommandLineOption debugLevelOption( - QStringLiteral( "D" ), "Verbose output for debugging purposes (0-8).", "level" ); + QStringLiteral( "D" ), "Verbose output for debugging purposes (0-8), ignored.", "level" ); QCommandLineOption globalOption( QStringList() << QStringLiteral( "g" ) << QStringLiteral( "global " ), QStringLiteral( "Global settings document" ), "global.yaml" ); @@ -81,6 +74,12 @@ handle_args( QCoreApplication& a ) QCommandLineOption langOption( QStringList() << QStringLiteral( "l" ) << QStringLiteral( "language" ), QStringLiteral( "Language (global)" ), "languagecode" ); + QCommandLineOption brandOption( QStringList() << QStringLiteral( "b" ) << QStringLiteral( "branding" ), + QStringLiteral( "Branding directory" ), + "path/to/branding.desc", + "src/branding/default/branding.desc" ); + QCommandLineOption uiOption( QStringList() << QStringLiteral( "U" ) << QStringLiteral( "ui" ), + QStringLiteral( "Enable UI" ) ); QCommandLineParser parser; parser.setApplicationDescription( "Calamares module tester" ); @@ -91,27 +90,13 @@ handle_args( QCoreApplication& a ) parser.addOption( globalOption ); parser.addOption( jobOption ); parser.addOption( langOption ); + parser.addOption( brandOption ); + parser.addOption( uiOption ); parser.addPositionalArgument( "module", "Path or name of module to run." ); parser.addPositionalArgument( "job.yaml", "Path of job settings document to use.", "[job.yaml]" ); parser.process( a ); - if ( parser.isSet( debugLevelOption ) ) - { - bool ok = true; - unsigned int l = parser.value( debugLevelOption ).toUInt( &ok ); - unsigned int dlevel = 0; - if ( !ok ) - { - dlevel = Logger::LOGVERBOSE; - } - else - { - dlevel = l; - } - Logger::setupLogLevel( dlevel ); - } - const QStringList args = parser.positionalArguments(); if ( args.isEmpty() ) { @@ -131,7 +116,12 @@ handle_args( QCoreApplication& a ) jobSettings = args.at( 1 ); } - return ModuleConfig { args.first(), jobSettings, parser.value( globalOption ), parser.value( langOption ) }; + return ModuleConfig { args.first(), + jobSettings, + parser.value( globalOption ), + parser.value( langOption ), + parser.value( brandOption ), + parser.isSet( uiOption ) }; } } @@ -198,12 +188,38 @@ load_module( const ModuleConfig& moduleConfig ) return module; } +/** @brief Create the right kind of QApplication + * + * Does primitive parsing of argv[] to find the --ui option and returns + * a UI-enabled application if it does. + * + * @p argc must be a reference (to main's argc) because the QCoreApplication + * constructors take a reference as well, and that would otherwise be a + * reference to a temporary. + */ +QCoreApplication* +createApplication( int& argc, char* argv[] ) +{ + for ( int i = 1; i < argc; ++i ) + { + if ( !qstrcmp( argv[ i ], "--ui" ) || !qstrcmp( argv[ i ], "-U" ) ) + { + auto* aw = new QApplication( argc, argv ); + aw->setQuitOnLastWindowClosed( true ); + return aw; + } + } + return new QCoreApplication( argc, argv ); +} + int main( int argc, char* argv[] ) { - QCoreApplication a( argc, argv ); + QCoreApplication* aw = createApplication( argc, argv ); - ModuleConfig module = handle_args( a ); + Logger::setupLogLevel( Logger::LOGVERBOSE ); + + ModuleConfig module = handle_args( *aw ); if ( module.moduleName().isEmpty() ) { return 1; @@ -211,6 +227,7 @@ main( int argc, char* argv[] ) std::unique_ptr< Calamares::Settings > settings_p( new Calamares::Settings( QString(), true ) ); std::unique_ptr< Calamares::JobQueue > jobqueue_p( new Calamares::JobQueue( nullptr ) ); + QMainWindow* mw = nullptr; auto gs = jobqueue_p->globalStorage(); if ( !module.globalConfigFile().isEmpty() ) @@ -233,6 +250,16 @@ main( int argc, char* argv[] ) return 1; } + cDebug() << " .. got" << m->name() << m->typeString() << m->interfaceString(); + if ( m->type() == Calamares::Module::Type::View ) + { + mw = module.m_ui ? new QMainWindow() : nullptr; + + (void)new Calamares::Branding( module.m_branding ); + (void)new Calamares::ModuleManager( QStringList(), nullptr ); + (void)Calamares::ViewManager::instance( mw ); + } + if ( !m->isLoaded() ) { m->loadSelf(); @@ -244,6 +271,16 @@ main( int argc, char* argv[] ) return 1; } + if ( mw ) + { + QWidget* w = Calamares::ViewManager::instance()->currentStep()->widget(); + w->setParent( mw ); + mw->setCentralWidget( w ); + w->show(); + mw->show(); + return aw->exec(); + } + using TR = Logger::DebugRow< const char*, const QString >; cDebug() << "Module metadata" << TR( "name", m->name() ) << TR( "type", m->typeString() ) @@ -268,5 +305,10 @@ main( int argc, char* argv[] ) ++count; } + if ( aw ) + { + delete aw; + } + return failure_count ? 1 : 0; } diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 0ab2d6837..82481175a 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -34,6 +34,11 @@ set( libSources locale/Label.cpp locale/LabelModel.cpp locale/Lookup.cpp + locale/TimeZone.cpp + locale/TranslatableConfiguration.cpp + + # Network service + network/Manager.cpp # Partition service partition/Mount.cpp @@ -48,15 +53,20 @@ set( libSources utils/PluginFactory.cpp utils/Retranslator.cpp utils/String.cpp + utils/UMask.cpp utils/Variant.cpp utils/Yaml.cpp ) -set( kdsagSources +set( _kdsagSources kdsingleapplicationguard/kdsingleapplicationguard.cpp kdsingleapplicationguard/kdsharedmemorylocker.cpp kdsingleapplicationguard/kdtoolsglobal.cpp kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp ) +set( kdsagSources "" ) +foreach( _s ${_kdsagSources} ) + list( APPEND kdsagSources ${CMAKE_SOURCE_DIR}/3rdparty/${_s} ) +endforeach() mark_thirdparty_code( ${kdsagSources} ) include_directories( @@ -148,6 +158,7 @@ target_link_libraries( calamares LINK_PUBLIC ${YAMLCPP_LIBRARY} Qt5::Core + KF5::CoreAddons ${OPTIONAL_PUBLIC_LIBRARIES} ) @@ -180,7 +191,7 @@ install( FILES ${utilsHeaders} DESTINATION include/libcalam # if ( ECM_FOUND AND BUILD_TESTING ) ecm_add_test( - Tests.cpp + utils/Tests.cpp TEST_NAME libcalamarestest LINK_LIBRARIES @@ -221,6 +232,26 @@ if ( ECM_FOUND AND BUILD_TESTING ) Qt5::Test ) calamares_automoc( libcalamareslocaletest ) + + ecm_add_test( + network/Tests.cpp + TEST_NAME + libcalamaresnetworktest + LINK_LIBRARIES + calamares + Qt5::Test + ) + calamares_automoc( libcalamaresnetworktest ) + + ecm_add_test( + modulesystem/Tests.cpp + TEST_NAME + libcalamaresmodulesystemtest + LINK_LIBRARIES + calamares + Qt5::Test + ) + calamares_automoc( libcalamaresmodulesystemtest ) endif() if( BUILD_TESTING ) diff --git a/src/libcalamares/CalamaresConfig.h.in b/src/libcalamares/CalamaresConfig.h.in index 6fbab422c..55468cf15 100644 --- a/src/libcalamares/CalamaresConfig.h.in +++ b/src/libcalamares/CalamaresConfig.h.in @@ -12,4 +12,4 @@ #cmakedefine WITH_PYTHON #cmakedefine WITH_PYTHONQT -#endif // CALAMARESCONFIG_H +#endif // CALAMARESCONFIG_H diff --git a/src/libcalamares/CppJob.cpp b/src/libcalamares/CppJob.cpp index 0512df377..82af344dd 100644 --- a/src/libcalamares/CppJob.cpp +++ b/src/libcalamares/CppJob.cpp @@ -24,11 +24,11 @@ namespace Calamares CppJob::CppJob( QObject* parent ) : Job( parent ) -{} +{ +} -CppJob::~CppJob() -{} +CppJob::~CppJob() {} void @@ -44,4 +44,4 @@ CppJob::setConfigurationMap( const QVariantMap& configurationMap ) Q_UNUSED( configurationMap ) } -} +} // namespace Calamares diff --git a/src/libcalamares/CppJob.h b/src/libcalamares/CppJob.h index 36116b3e7..10ab71649 100644 --- a/src/libcalamares/CppJob.h +++ b/src/libcalamares/CppJob.h @@ -45,6 +45,6 @@ protected: QString m_instanceKey; }; -} +} // namespace Calamares -#endif // CALAMARES_CPPJOB_H +#endif // CALAMARES_CPPJOB_H diff --git a/src/libcalamares/DllMacro.h b/src/libcalamares/DllMacro.h index e0281d7a7..d3e1c8098 100644 --- a/src/libcalamares/DllMacro.h +++ b/src/libcalamares/DllMacro.h @@ -22,11 +22,11 @@ #include #ifndef DLLEXPORT -# if defined (DLLEXPORT_PRO) -# define DLLEXPORT Q_DECL_EXPORT -# else -# define DLLEXPORT Q_DECL_IMPORT -# endif +#if defined( DLLEXPORT_PRO ) +#define DLLEXPORT Q_DECL_EXPORT +#else +#define DLLEXPORT Q_DECL_IMPORT +#endif #endif #endif diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 73236a311..5094ad2fd 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -21,6 +21,7 @@ #include "JobQueue.h" #include "utils/Logger.h" +#include "utils/Units.h" #include "utils/Yaml.h" #include @@ -37,7 +38,10 @@ namespace bp = boost::python; #endif -namespace Calamares { +using CalamaresUtils::operator""_MiB; + +namespace Calamares +{ GlobalStorage::GlobalStorage() : QObject( nullptr ) @@ -99,17 +103,49 @@ GlobalStorage::debugDump() const } bool -GlobalStorage::save(const QString& filename) +GlobalStorage::save( const QString& filename ) { QFile f( filename ); if ( !f.open( QFile::WriteOnly ) ) + { return false; + } - f.write( QJsonDocument::fromVariant( m ).toJson() ) ; + f.write( QJsonDocument::fromVariant( m ).toJson() ); f.close(); return true; } +bool +GlobalStorage::load( const QString& filename ) +{ + QFile f( filename ); + if ( !f.open( QFile::ReadOnly ) ) + { + return false; + } + + QJsonParseError e; + QJsonDocument d = QJsonDocument::fromJson( f.read( 1_MiB ), &e ); + if ( d.isNull() ) + { + cWarning() << filename << e.errorString(); + } + else if ( !d.isObject() ) + { + cWarning() << filename << "Not suitable JSON."; + } + else + { + auto map = d.toVariant().toMap(); + for ( auto i = map.constBegin(); i != map.constEnd(); ++i ) + { + insert( i.key(), *i ); + } + return true; + } + return false; +} bool GlobalStorage::saveYaml( const QString& filename ) @@ -123,12 +159,14 @@ GlobalStorage::loadYaml( const QString& filename ) bool ok = false; auto gs = CalamaresUtils::loadYaml( filename, &ok ); if ( ok ) + { m = gs; + } return ok; } -} // namespace Calamares +} // namespace Calamares #ifdef WITH_PYTHON @@ -145,7 +183,7 @@ Calamares::GlobalStorage* GlobalStoragePythonWrapper::s_gs_instance = nullptr; GlobalStoragePythonWrapper::GlobalStoragePythonWrapper( Calamares::GlobalStorage* gs ) : m_gs( gs ? gs : s_gs_instance ) { - if (!m_gs) + if ( !m_gs ) { s_gs_instance = new Calamares::GlobalStorage; m_gs = s_gs_instance; @@ -167,11 +205,9 @@ GlobalStoragePythonWrapper::count() const void -GlobalStoragePythonWrapper::insert( const std::string& key, - const bp::object& value ) +GlobalStoragePythonWrapper::insert( const std::string& key, const bp::object& value ) { - m_gs->insert( QString::fromStdString( key ), - CalamaresPython::variantFromPyObject( value ) ); + m_gs->insert( QString::fromStdString( key ), CalamaresPython::variantFromPyObject( value ) ); } bp::list @@ -180,7 +216,9 @@ GlobalStoragePythonWrapper::keys() const bp::list pyList; const auto keys = m_gs->keys(); for ( const QString& key : keys ) + { pyList.append( key.toStdString() ); + } return pyList; } @@ -198,6 +236,6 @@ GlobalStoragePythonWrapper::value( const std::string& key ) const return CalamaresPython::variantToPyObject( m_gs->value( QString::fromStdString( key ) ) ); } -} // namespace CalamaresPython +} // namespace CalamaresPython -#endif // WITH_PYTHON +#endif // WITH_PYTHON diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index 2c31a8f47..b070e23f6 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -22,6 +22,8 @@ #include "CalamaresConfig.h" +#include +#include #include #ifdef WITH_PYTHON @@ -34,8 +36,8 @@ namespace api class object; } class list; -} -} +} // namespace python +} // namespace boost #endif namespace Calamares @@ -70,6 +72,14 @@ public: */ bool save( const QString& filename ); + /** @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. + */ + bool load( const QString& filename ); + /** @brief write as YAML to the given filename * * See also save(), above. @@ -79,16 +89,22 @@ public: /// @brief reads settings from the given filename bool loadYaml( const QString& filename ); + /** @brief Get internal mapping as a constant object + * + * Note that the VariantMap underneath may change, because + * it's not constant in itself. Connect to the changed() + * signal for notifications. + */ + const QVariantMap& data() const { return m; } + signals: void changed(); private: QVariantMap m; - - friend DebugWindow; }; -} // namespace Calamares +} // namespace Calamares #ifdef WITH_PYTHON namespace CalamaresPython @@ -116,7 +132,7 @@ private: static Calamares::GlobalStorage* s_gs_instance; // See globalStorageInstance() }; -} // namespace CalamaresPython +} // namespace CalamaresPython #endif -#endif // CALAMARES_GLOBALSTORAGE_H +#endif // CALAMARES_GLOBALSTORAGE_H diff --git a/src/libcalamares/Job.cpp b/src/libcalamares/Job.cpp index d2118451f..d074a18cb 100644 --- a/src/libcalamares/Job.cpp +++ b/src/libcalamares/Job.cpp @@ -84,7 +84,8 @@ JobResult::JobResult( const QString& message, const QString& details, int number : m_message( message ) , m_details( details ) , m_number( number ) -{} +{ +} Job::Job( QObject* parent ) @@ -93,8 +94,14 @@ Job::Job( QObject* parent ) } -Job::~Job() -{} +Job::~Job() {} + + +qreal +Job::getJobWeight() const +{ + return qreal( 1.0 ); +} QString @@ -111,4 +118,4 @@ Job::prettyStatusMessage() const } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index f590ef0ee..3a68297ca 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -25,7 +25,8 @@ #include #include -namespace Calamares { +namespace Calamares +{ class DLLEXPORT JobResult { @@ -43,13 +44,18 @@ public: GenericError = -1, PythonUncaughtException = 1, InvalidConfiguration = 2 - } ; + }; + // Can't copy, but you can keep a temporary JobResult( const JobResult& rhs ) = delete; JobResult( JobResult&& rhs ); virtual ~JobResult() {} + /** @brief Is this JobResult a success? + * + * Equivalent to errorCode() == 0, might be named isValid(). + */ virtual operator bool() const; virtual QString message() const; @@ -62,9 +68,16 @@ public: /// @brief an "ok status" result static JobResult ok(); - /// @brief an "error" result resulting from the execution of the job + /** @brief an "error" result resulting from the execution of the job + * + * The error code is set to GenericError. + */ static JobResult error( const QString& message, const QString& details = QString() ); - /// @brief an "internal error" meaning the job itself has a problem (usually for python) + /** @brief an "internal error" meaning the job itself has a problem (usually for python) + * + * Pass in a suitable error code; using 0 (which would normally mean "ok") instead + * gives you a GenericError code. + */ static JobResult internalError( const QString&, const QString& details, int errorCode ); protected: @@ -83,6 +96,7 @@ public: explicit Job( QObject* parent = nullptr ); virtual ~Job(); + virtual qreal getJobWeight() const; virtual QString prettyName() const = 0; virtual QString prettyDescription() const; virtual QString prettyStatusMessage() const; @@ -101,6 +115,6 @@ private: using job_ptr = QSharedPointer< Job >; using JobList = QList< job_ptr >; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_JOB_H +#endif // CALAMARES_JOB_H diff --git a/src/libcalamares/JobExample.cpp b/src/libcalamares/JobExample.cpp index 83259ae6d..83da2b1e1 100644 --- a/src/libcalamares/JobExample.cpp +++ b/src/libcalamares/JobExample.cpp @@ -36,7 +36,8 @@ GoodJob::exec() JobResult FailJob::exec() { - return JobResult::error( tr( "Job failed (%1)" ).arg( m_name ), tr( "Programmed job failure was explicitly requested." ) ); + return JobResult::error( tr( "Job failed (%1)" ).arg( m_name ), + tr( "Programmed job failure was explicitly requested." ) ); } -} // namespace +} // namespace Calamares diff --git a/src/libcalamares/JobExample.h b/src/libcalamares/JobExample.h index fd5eea109..92f8f8fb6 100644 --- a/src/libcalamares/JobExample.h +++ b/src/libcalamares/JobExample.h @@ -21,7 +21,8 @@ #include "Job.h" -namespace Calamares { +namespace Calamares +{ /** @brief A Job with a name * @@ -39,9 +40,10 @@ public: } virtual QString prettyName() const override; + protected: const QString m_name; -} ; +}; /// @brief Job does nothing, always succeeds class DLLEXPORT GoodJob : public NamedJob @@ -53,7 +55,7 @@ public: } virtual JobResult exec() override; -} ; +}; /// @brief Job does nothing, always fails @@ -66,8 +68,8 @@ public: } virtual JobResult exec() override; -} ; +}; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_JOB_EXAMPLE_H +#endif // CALAMARES_JOB_EXAMPLE_H diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 7cc6e2297..7430d9582 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -19,8 +19,8 @@ #include "JobQueue.h" -#include "Job.h" #include "GlobalStorage.h" +#include "Job.h" #include "utils/Logger.h" #include "CalamaresConfig.h" @@ -49,7 +49,17 @@ public: void setJobs( JobList&& jobs ) { m_jobs = jobs; - m_jobCount = jobs.count(); + + qreal totalJobsWeight = 0.0; + for ( auto job : m_jobs ) + { + totalJobsWeight += job->getJobWeight(); + } + for ( auto job : m_jobs ) + { + qreal jobWeight = qreal( job->getJobWeight() / totalJobsWeight ); + m_jobWeights.append( jobWeight ); + } } void run() override @@ -59,13 +69,11 @@ public: QString details; m_jobIndex = 0; - while ( !m_jobs.isEmpty() ) + for ( auto job : m_jobs ) { - auto job = m_jobs.takeFirst(); if ( anyFailed && !job->isEmergency() ) { cDebug() << "Skipping non-emergency job" << job->prettyName(); - job.clear(); continue; } @@ -80,18 +88,24 @@ public: details = result.details(); } if ( !anyFailed ) + { ++m_jobIndex; - job.clear(); + } } if ( anyFailed ) + { emitFailed( message, details ); + } else + { emitProgress(); + } emitFinished(); } private: JobList m_jobs; + QList< qreal > m_jobWeights; JobQueue* m_queue; int m_jobIndex; int m_jobCount; @@ -102,38 +116,40 @@ private: // percentage computations. jobPercent = qBound( qreal( 0 ), jobPercent, qreal( 1 ) ); - QString message = m_jobIndex < m_jobCount - ? m_jobs.at( m_jobIndex )->prettyStatusMessage() - : tr( "Done" ); + int jobCount = m_jobs.size(); + QString message = m_jobIndex < jobCount ? m_jobs.at( m_jobIndex )->prettyStatusMessage() : tr( "Done" ); - // Gives a result in the range [ m_jobIndex .. m_jobIndex + 1.0 ] / jobCount, - // so when first job (index 0) completes, we're at 1/jobCount of the work - // (and the last job has index jobCount-1, so jobCount-1 + 1.0 / jobCount, or 100%) - qreal percent = ( m_jobIndex + jobPercent ) / qreal( m_jobCount ); + qreal cumulativeProgress = 0.0; + for ( auto jobWeight : m_jobWeights.mid( 0, m_jobIndex ) ) + { + cumulativeProgress += jobWeight; + } + qreal percent + = m_jobIndex < jobCount ? cumulativeProgress + ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) : 1.0; - QMetaObject::invokeMethod( m_queue, "progress", Qt::QueuedConnection, - Q_ARG( qreal, percent ), - Q_ARG( QString, message ) - ); + if ( m_jobIndex < jobCount ) + { + cDebug( Logger::LOGVERBOSE ) << "[JOBQUEUE]: Progress for Job[" << m_jobIndex + << "]: " << ( jobPercent * 100 ) << "% completed"; + cDebug( Logger::LOGVERBOSE ) << "[JOBQUEUE]: Progress Overall: " << ( cumulativeProgress * 100 ) + << "% (accumulated) + " + << ( ( ( m_jobWeights.at( m_jobIndex ) ) * jobPercent ) * 100 ) + << "% (this job) = " << ( percent * 100 ) << "% (total)"; + } + QMetaObject::invokeMethod( + m_queue, "progress", Qt::QueuedConnection, Q_ARG( qreal, percent ), 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 ) - ); + QMetaObject::invokeMethod( + m_queue, "failed", Qt::QueuedConnection, Q_ARG( QString, message ), Q_ARG( QString, details ) ); } - void emitFinished() - { - QMetaObject::invokeMethod( m_queue, "finished", Qt::QueuedConnection ); - } + void emitFinished() { QMetaObject::invokeMethod( m_queue, "finished", Qt::QueuedConnection ); } }; -JobThread::~JobThread() -{ -} +JobThread::~JobThread() {} JobQueue* JobQueue::s_instance = nullptr; @@ -168,8 +184,10 @@ JobQueue::~JobQueue() if ( m_thread->isRunning() ) { m_thread->terminate(); - if ( !m_thread->wait(300) ) + if ( !m_thread->wait( 300 ) ) + { cError() << "Could not terminate job thread (expect a crash now)."; + } delete m_thread; } @@ -204,4 +222,4 @@ JobQueue::enqueue( const JobList& jobs ) emit queueChanged( m_jobs ); } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamares/JobQueue.h b/src/libcalamares/JobQueue.h index 4e5dffe8a..a58b873d9 100644 --- a/src/libcalamares/JobQueue.h +++ b/src/libcalamares/JobQueue.h @@ -59,6 +59,6 @@ private: GlobalStorage* m_storage; }; -} +} // namespace Calamares -#endif // CALAMARES_JOBQUEUE_H +#endif // CALAMARES_JOBQUEUE_H diff --git a/src/libcalamares/PluginDllMacro.h b/src/libcalamares/PluginDllMacro.h index cabe09887..d790230b9 100644 --- a/src/libcalamares/PluginDllMacro.h +++ b/src/libcalamares/PluginDllMacro.h @@ -22,11 +22,11 @@ #include #ifndef PLUGINDLLEXPORT -# if defined (PLUGINDLLEXPORT_PRO) -# define PLUGINDLLEXPORT Q_DECL_EXPORT -# else -# define PLUGINDLLEXPORT Q_DECL_IMPORT -# endif +#if defined( PLUGINDLLEXPORT_PRO ) +#define PLUGINDLLEXPORT Q_DECL_EXPORT +#else +#define PLUGINDLLEXPORT Q_DECL_IMPORT +#endif #endif #endif diff --git a/src/libcalamares/ProcessJob.cpp b/src/libcalamares/ProcessJob.cpp index 47fcee05d..744f5f9bf 100644 --- a/src/libcalamares/ProcessJob.cpp +++ b/src/libcalamares/ProcessJob.cpp @@ -25,40 +25,38 @@ #include #include -namespace Calamares { +namespace Calamares +{ ProcessJob::ProcessJob( const QString& command, const QString& workingPath, bool runInChroot, - int secondsTimeout, + std::chrono::seconds secondsTimeout, QObject* parent ) : Job( parent ) , m_command( command ) , m_workingPath( workingPath ) , m_runInChroot( runInChroot ) , m_timeoutSec( secondsTimeout ) -{} +{ +} -ProcessJob::~ProcessJob() -{} +ProcessJob::~ProcessJob() {} QString ProcessJob::prettyName() const { - return ( m_runInChroot ? tr( "Run command '%1' in target system." ) : tr( " Run command '%1'." ) ) - .arg( m_command ); + return ( m_runInChroot ? tr( "Run command '%1' in target system." ) : tr( " Run command '%1'." ) ).arg( m_command ); } QString ProcessJob::prettyStatusMessage() const { - return tr( "Running command %1 %2" ) - .arg( m_command ) - .arg( m_runInChroot ? "in chroot." : " ." ); + return tr( "Running command %1 %2" ).arg( m_command ).arg( m_runInChroot ? "in chroot." : " ." ); } @@ -68,20 +66,16 @@ ProcessJob::exec() using CalamaresUtils::System; if ( m_runInChroot ) - return CalamaresUtils::System::instance()-> - targetEnvCommand( { m_command }, - m_workingPath, - QString(), - m_timeoutSec ) - .explainProcess( m_command, m_timeoutSec ); + return CalamaresUtils::System::instance() + ->targetEnvCommand( { m_command }, m_workingPath, QString(), m_timeoutSec ) + .explainProcess( m_command, m_timeoutSec ); else - return - System::runCommand( System::RunLocation::RunInHost, - { "/bin/sh", "-c", m_command }, - m_workingPath, - QString(), - m_timeoutSec ) + return System::runCommand( System::RunLocation::RunInHost, + { "/bin/sh", "-c", m_command }, + m_workingPath, + QString(), + m_timeoutSec ) .explainProcess( m_command, m_timeoutSec ); } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h index 224ebdaf0..e826acb1d 100644 --- a/src/libcalamares/ProcessJob.h +++ b/src/libcalamares/ProcessJob.h @@ -22,7 +22,10 @@ #include "Job.h" -namespace Calamares { +#include + +namespace Calamares +{ class ProcessJob : public Job { @@ -31,7 +34,7 @@ public: explicit ProcessJob( const QString& command, const QString& workingPath, bool runInChroot = false, - int secondsTimeout = 30, + std::chrono::seconds secondsTimeout = std::chrono::seconds( 30 ), QObject* parent = nullptr ); virtual ~ProcessJob() override; @@ -43,9 +46,9 @@ private: QString m_command; QString m_workingPath; bool m_runInChroot; - int m_timeoutSec; + std::chrono::seconds m_timeoutSec; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_PROCESSJOB_H +#endif // CALAMARES_PROCESSJOB_H diff --git a/src/libcalamares/PythonHelper.cpp b/src/libcalamares/PythonHelper.cpp index 3c4d1cca6..26a57ec14 100644 --- a/src/libcalamares/PythonHelper.cpp +++ b/src/libcalamares/PythonHelper.cpp @@ -26,8 +26,13 @@ #include #undef slots +#include "utils/boost-warnings.h" #include +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + namespace bp = boost::python; namespace CalamaresPython @@ -52,6 +57,9 @@ variantToPyObject( const QVariant& variant ) case QVariant::Int: return bp::object( variant.toInt() ); + case QVariant::LongLong: + return bp::object( variant.toLongLong() ); + case QVariant::Double: return bp::object( variant.toDouble() ); @@ -72,25 +80,39 @@ variantFromPyObject( const boost::python::object& pyObject ) { std::string pyType = bp::extract< std::string >( pyObject.attr( "__class__" ).attr( "__name__" ) ); if ( pyType == "dict" ) + { return variantMapFromPyDict( bp::extract< bp::dict >( pyObject ) ); + } else if ( pyType == "list" ) + { return variantListFromPyList( bp::extract< bp::list >( pyObject ) ); + } else if ( pyType == "int" ) + { return QVariant( bp::extract< int >( pyObject ) ); + } else if ( pyType == "float" ) + { return QVariant( bp::extract< double >( pyObject ) ); + } else if ( pyType == "str" ) + { return QVariant( QString::fromStdString( bp::extract< std::string >( pyObject ) ) ); + } else if ( pyType == "bool" ) + { return QVariant( bp::extract< bool >( pyObject ) ); + } else + { return QVariant(); + } } @@ -99,7 +121,9 @@ variantListToPyList( const QVariantList& variantList ) { bp::list pyList; for ( const QVariant& variant : variantList ) + { pyList.append( variantToPyObject( variant ) ); + } return pyList; } @@ -109,7 +133,9 @@ variantListFromPyList( const boost::python::list& pyList ) { QVariantList list; for ( int i = 0; i < bp::len( pyList ); ++i ) + { list.append( variantFromPyObject( pyList[ i ] ) ); + } return list; } @@ -119,7 +145,9 @@ variantMapToPyDict( const QVariantMap& variantMap ) { bp::dict pyDict; for ( auto it = variantMap.constBegin(); it != variantMap.constEnd(); ++it ) + { pyDict[ it.key().toStdString() ] = variantToPyObject( it.value() ); + } return pyDict; } @@ -152,7 +180,9 @@ variantHashToPyDict( const QVariantHash& variantHash ) { bp::dict pyDict; for ( auto it = variantHash.constBegin(); it != variantHash.constEnd(); ++it ) + { pyDict[ it.key().toStdString() ] = variantToPyObject( it.value() ); + } return pyDict; } @@ -181,17 +211,21 @@ variantHashFromPyDict( const boost::python::dict& pyDict ) } - Helper* Helper::s_instance = nullptr; -static inline void add_if_lib_exists( const QDir& dir, const char* name, QStringList& list ) +static inline void +add_if_lib_exists( const QDir& dir, const char* name, QStringList& list ) { - if ( ! ( dir.exists() && dir.isReadable() ) ) + if ( !( dir.exists() && dir.isReadable() ) ) + { return; + } QFileInfo fi( dir.absoluteFilePath( name ) ); if ( fi.exists() && fi.isReadable() ) + { list.append( fi.dir().absolutePath() ); + } } Helper::Helper( QObject* parent ) @@ -201,7 +235,9 @@ Helper::Helper( QObject* parent ) if ( !s_instance ) { if ( !Py_IsInitialized() ) + { Py_Initialize(); + } m_mainModule = bp::import( "__main__" ); m_mainNamespace = m_mainModule.attr( "__dict__" ); @@ -209,8 +245,7 @@ Helper::Helper( QObject* parent ) // If we're running from the build dir add_if_lib_exists( QDir::current(), "libcalamares.so", m_pythonPaths ); - QDir calaPythonPath( CalamaresUtils::systemLibDir().absolutePath() + - QDir::separator() + "calamares" ); + QDir calaPythonPath( CalamaresUtils::systemLibDir().absolutePath() + QDir::separator() + "calamares" ); add_if_lib_exists( calaPythonPath, "libcalamares.so", m_pythonPaths ); bp::object sys = bp::import( "sys" ); @@ -251,7 +286,7 @@ Helper::createCleanNamespace() QString Helper::handleLastError() { - PyObject* type = nullptr, *val = nullptr, *traceback_p = nullptr; + PyObject *type = nullptr, *val = nullptr, *traceback_p = nullptr; PyErr_Fetch( &type, &val, &traceback_p ); Logger::CDebug debug; @@ -264,10 +299,14 @@ Helper::handleLastError() bp::str pystr( h_type ); bp::extract< std::string > extracted( pystr ); if ( extracted.check() ) + { typeMsg = QString::fromStdString( extracted() ).trimmed(); + } if ( typeMsg.isEmpty() ) + { typeMsg = tr( "Unknown exception type" ); + } debug << typeMsg << '\n'; } @@ -278,10 +317,14 @@ Helper::handleLastError() bp::str pystr( h_val ); bp::extract< std::string > extracted( pystr ); if ( extracted.check() ) + { valMsg = QString::fromStdString( extracted() ).trimmed(); + } if ( valMsg.isEmpty() ) + { valMsg = tr( "unparseable Python error" ); + } // Special-case: CalledProcessError has an attribute "output" with the command output, // add that to the printed message. @@ -318,22 +361,32 @@ Helper::handleLastError() bp::object pystr( bp::str( "\n" ).join( tb_list ) ); bp::extract< std::string > extracted( pystr ); if ( extracted.check() ) + { tbMsg = QString::fromStdString( extracted() ).trimmed(); + } if ( tbMsg.isEmpty() ) + { tbMsg = tr( "unparseable Python traceback" ); + } debug << tbMsg << '\n'; } if ( typeMsg.isEmpty() && valMsg.isEmpty() && tbMsg.isEmpty() ) + { return tr( "Unfetchable Python error." ); + } QStringList msgList; if ( !typeMsg.isEmpty() ) + { msgList.append( QString( "%1" ).arg( typeMsg.toHtmlEscaped() ) ); + } if ( !valMsg.isEmpty() ) + { msgList.append( valMsg.toHtmlEscaped() ); + } if ( !tbMsg.isEmpty() ) { @@ -346,4 +399,4 @@ Helper::handleLastError() } -} // namespace CalamaresPython +} // namespace CalamaresPython diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h index 693d80d8b..9035ba6d4 100644 --- a/src/libcalamares/PythonHelper.h +++ b/src/libcalamares/PythonHelper.h @@ -25,24 +25,30 @@ #include #undef slots +#include "utils/boost-warnings.h" + #include #include #include +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + namespace CalamaresPython { -boost::python::object variantToPyObject( const QVariant& variant ); -QVariant variantFromPyObject( const boost::python::object& pyObject ); +boost::python::object variantToPyObject( const QVariant& variant ); +QVariant variantFromPyObject( const boost::python::object& pyObject ); -boost::python::list variantListToPyList( const QVariantList& variantList ); -QVariantList variantListFromPyList( const boost::python::list& pyList ); +boost::python::list variantListToPyList( const QVariantList& variantList ); +QVariantList variantListFromPyList( const boost::python::list& pyList ); -boost::python::dict variantMapToPyDict( const QVariantMap& variantMap ); -QVariantMap variantMapFromPyDict( const boost::python::dict& pyDict ); +boost::python::dict variantMapToPyDict( const QVariantMap& variantMap ); +QVariantMap variantMapFromPyDict( const boost::python::dict& pyDict ); -boost::python::dict variantHashToPyDict( const QVariantHash& variantHash ); -QVariantHash variantHashFromPyDict( const boost::python::dict& pyDict ); +boost::python::dict variantHashToPyDict( const QVariantHash& variantHash ); +QVariantHash variantHashFromPyDict( const boost::python::dict& pyDict ); class Helper : public QObject @@ -66,6 +72,6 @@ private: QStringList m_pythonPaths; }; -} // namespace Calamares +} // namespace CalamaresPython -#endif // CALAMARES_PYTHONJOBHELPER_H +#endif // CALAMARES_PYTHONJOBHELPER_H diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index 32792e737..39f500194 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -19,10 +19,10 @@ #include "PythonJob.h" -#include "PythonHelper.h" -#include "utils/Logger.h" #include "GlobalStorage.h" #include "JobQueue.h" +#include "PythonHelper.h" +#include "utils/Logger.h" #include @@ -35,27 +35,19 @@ namespace bp = boost::python; -BOOST_PYTHON_FUNCTION_OVERLOADS( mount_overloads, - CalamaresPython::mount, - 2, 4 ); -BOOST_PYTHON_FUNCTION_OVERLOADS( target_env_call_str_overloads, - CalamaresPython::target_env_call, - 1, 3 ); -BOOST_PYTHON_FUNCTION_OVERLOADS( target_env_call_list_overloads, - CalamaresPython::target_env_call, - 1, 3 ); -BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_call_str_overloads, - CalamaresPython::check_target_env_call, - 1, 3 ); -BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_call_list_overloads, - CalamaresPython::check_target_env_call, - 1, 3 ); +BOOST_PYTHON_FUNCTION_OVERLOADS( mount_overloads, CalamaresPython::mount, 2, 4 ); +BOOST_PYTHON_FUNCTION_OVERLOADS( target_env_call_str_overloads, CalamaresPython::target_env_call, 1, 3 ); +BOOST_PYTHON_FUNCTION_OVERLOADS( target_env_call_list_overloads, CalamaresPython::target_env_call, 1, 3 ); +BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_call_str_overloads, CalamaresPython::check_target_env_call, 1, 3 ); +BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_call_list_overloads, CalamaresPython::check_target_env_call, 1, 3 ); BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_output_str_overloads, CalamaresPython::check_target_env_output, - 1, 3 ); + 1, + 3 ); BOOST_PYTHON_FUNCTION_OVERLOADS( check_target_env_output_list_overloads, CalamaresPython::check_target_env_output, - 1, 3 ); + 1, + 3 ); BOOST_PYTHON_MODULE( libcalamares ) { bp::object package = bp::scope(); @@ -68,25 +60,24 @@ BOOST_PYTHON_MODULE( libcalamares ) bp::scope().attr( "VERSION_SHORT" ) = CALAMARES_VERSION_SHORT; bp::class_< CalamaresPython::PythonJobInterface >( "Job", bp::init< Calamares::PythonJob* >() ) - .def_readonly( "module_name", &CalamaresPython::PythonJobInterface::moduleName ) - .def_readonly( "pretty_name", &CalamaresPython::PythonJobInterface::prettyName ) - .def_readonly( "working_path", &CalamaresPython::PythonJobInterface::workingPath ) + .def_readonly( "module_name", &CalamaresPython::PythonJobInterface::moduleName ) + .def_readonly( "pretty_name", &CalamaresPython::PythonJobInterface::prettyName ) + .def_readonly( "working_path", &CalamaresPython::PythonJobInterface::workingPath ) .def_readonly( "configuration", &CalamaresPython::PythonJobInterface::configuration ) - .def( - "setprogress", - &CalamaresPython::PythonJobInterface::setprogress, - bp::args( "progress" ), - "Reports the progress status of this job to Calamares, " - "as a real number between 0 and 1." - ); + .def( "setprogress", + &CalamaresPython::PythonJobInterface::setprogress, + bp::args( "progress" ), + "Reports the progress status of this job to Calamares, " + "as a real number between 0 and 1." ); - bp::class_< CalamaresPython::GlobalStoragePythonWrapper >( "GlobalStorage", bp::init< Calamares::GlobalStorage* >() ) - .def( "contains", &CalamaresPython::GlobalStoragePythonWrapper::contains ) - .def( "count", &CalamaresPython::GlobalStoragePythonWrapper::count ) - .def( "insert", &CalamaresPython::GlobalStoragePythonWrapper::insert ) - .def( "keys", &CalamaresPython::GlobalStoragePythonWrapper::keys ) - .def( "remove", &CalamaresPython::GlobalStoragePythonWrapper::remove ) - .def( "value", &CalamaresPython::GlobalStoragePythonWrapper::value ); + bp::class_< CalamaresPython::GlobalStoragePythonWrapper >( "GlobalStorage", + bp::init< Calamares::GlobalStorage* >() ) + .def( "contains", &CalamaresPython::GlobalStoragePythonWrapper::contains ) + .def( "count", &CalamaresPython::GlobalStoragePythonWrapper::count ) + .def( "insert", &CalamaresPython::GlobalStoragePythonWrapper::insert ) + .def( "keys", &CalamaresPython::GlobalStoragePythonWrapper::keys ) + .def( "remove", &CalamaresPython::GlobalStoragePythonWrapper::remove ) + .def( "value", &CalamaresPython::GlobalStoragePythonWrapper::value ); // libcalamares.utils submodule starts here bp::object utilsModule( bp::handle<>( bp::borrowed( PyImport_AddModule( "libcalamares.utils" ) ) ) ); @@ -95,151 +86,88 @@ BOOST_PYTHON_MODULE( libcalamares ) Q_UNUSED( utilsScope ) bp::def( - "debug", - &CalamaresPython::debug, - bp::args( "s" ), - "Writes the given string to the Calamares debug stream." - ); - bp::def( - "warning", - &CalamaresPython::warning, - bp::args( "s" ), - "Writes the given string to the Calamares warning stream." - ); + "debug", &CalamaresPython::debug, bp::args( "s" ), "Writes the given string to the Calamares debug stream." ); + bp::def( "warning", + &CalamaresPython::warning, + bp::args( "s" ), + "Writes the given string to the Calamares warning stream." ); - bp::def( - "mount", - &CalamaresPython::mount, - mount_overloads( - bp::args( "device_path", - "mount_point", - "filesystem_name", - "options" ), - "Runs the mount utility with the specified parameters.\n" - "Returns the program's exit code, or:\n" - "-1 = QProcess crash\n" - "-2 = QProcess cannot start\n" - "-3 = bad arguments" - ) - ); + bp::def( "mount", + &CalamaresPython::mount, + mount_overloads( bp::args( "device_path", "mount_point", "filesystem_name", "options" ), + "Runs the mount utility with the specified parameters.\n" + "Returns the program's exit code, or:\n" + "-1 = QProcess crash\n" + "-2 = QProcess cannot start\n" + "-3 = bad arguments" ) ); bp::def( "target_env_call", - static_cast< int (*)( const std::string&, - const std::string&, - int ) >( &CalamaresPython::target_env_call ), - target_env_call_str_overloads( - bp::args( "command", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns the program's exit code, or:\n" - "-1 = QProcess crash\n" - "-2 = QProcess cannot start\n" - "-3 = bad arguments\n" - "-4 = QProcess timeout" - ) - ); - bp::def( - "target_env_call", - static_cast< int (*)( const bp::list&, - const std::string&, - int ) >( &CalamaresPython::target_env_call ), - target_env_call_list_overloads( - bp::args( "args", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns the program's exit code, or:\n" - "-1 = QProcess crash\n" - "-2 = QProcess cannot start\n" - "-3 = bad arguments\n" - "-4 = QProcess timeout" - ) - ); + static_cast< int ( * )( const std::string&, const std::string&, int ) >( &CalamaresPython::target_env_call ), + target_env_call_str_overloads( bp::args( "command", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns the program's exit code, or:\n" + "-1 = QProcess crash\n" + "-2 = QProcess cannot start\n" + "-3 = bad arguments\n" + "-4 = QProcess timeout" ) ); + bp::def( "target_env_call", + static_cast< int ( * )( const bp::list&, const std::string&, int ) >( &CalamaresPython::target_env_call ), + target_env_call_list_overloads( bp::args( "args", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns the program's exit code, or:\n" + "-1 = QProcess crash\n" + "-2 = QProcess cannot start\n" + "-3 = bad arguments\n" + "-4 = QProcess timeout" ) ); + bp::def( "check_target_env_call", + static_cast< int ( * )( const std::string&, const std::string&, int ) >( + &CalamaresPython::check_target_env_call ), + check_target_env_call_str_overloads( bp::args( "command", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns 0, which is program's exit code if the program exited " + "successfully, or raises a subprocess.CalledProcessError." ) ); bp::def( "check_target_env_call", - static_cast< int (*)( const std::string&, - const std::string&, - int ) >( &CalamaresPython::check_target_env_call ), - check_target_env_call_str_overloads( - bp::args( "command", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns 0, which is program's exit code if the program exited " - "successfully, or raises a subprocess.CalledProcessError." - ) - ); - bp::def( - "check_target_env_call", - static_cast< int (*)( const bp::list&, - const std::string&, - int ) >( &CalamaresPython::check_target_env_call ), - check_target_env_call_list_overloads( - bp::args( "args", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns 0, which is program's exit code if the program exited " - "successfully, or raises a subprocess.CalledProcessError." - ) - ); + static_cast< int ( * )( const bp::list&, const std::string&, int ) >( &CalamaresPython::check_target_env_call ), + check_target_env_call_list_overloads( bp::args( "args", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns 0, which is program's exit code if the program exited " + "successfully, or raises a subprocess.CalledProcessError." ) ); - bp::def( - "check_target_env_output", - static_cast< std::string (*)( const std::string&, - const std::string&, - int ) >( &CalamaresPython::check_target_env_output ), - check_target_env_output_str_overloads( - bp::args( "command", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns the program's standard output, and raises a " - "subprocess.CalledProcessError if something went wrong." - ) - ); - bp::def( - "check_target_env_output", - static_cast< std::string (*)( const bp::list&, - const std::string&, - int ) >( &CalamaresPython::check_target_env_output ), - check_target_env_output_list_overloads( - bp::args( "args", - "stdin", - "timeout" ), - "Runs the specified command in the chroot of the target system.\n" - "Returns the program's standard output, and raises a " - "subprocess.CalledProcessError if something went wrong." - ) - ); - bp::def( - "obscure", - &CalamaresPython::obscure, - bp::args( "s" ), - "Simple string obfuscation function based on KStringHandler::obscure.\n" - "Returns a string, generated using a simple symmetric encryption.\n" - "Applying the function to a string obscured by this function will result " - "in the original string." - ); + bp::def( "check_target_env_output", + static_cast< std::string ( * )( const std::string&, const std::string&, int ) >( + &CalamaresPython::check_target_env_output ), + check_target_env_output_str_overloads( bp::args( "command", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns the program's standard output, and raises a " + "subprocess.CalledProcessError if something went wrong." ) ); + bp::def( "check_target_env_output", + static_cast< std::string ( * )( const bp::list&, const std::string&, int ) >( + &CalamaresPython::check_target_env_output ), + check_target_env_output_list_overloads( bp::args( "args", "stdin", "timeout" ), + "Runs the specified command in the chroot of the target system.\n" + "Returns the program's standard output, and raises a " + "subprocess.CalledProcessError if something went wrong." ) ); + bp::def( "obscure", + &CalamaresPython::obscure, + bp::args( "s" ), + "Simple string obfuscation function based on KStringHandler::obscure.\n" + "Returns a string, generated using a simple symmetric encryption.\n" + "Applying the function to a string obscured by this function will result " + "in the original string." ); - bp::def( - "gettext_languages", - &CalamaresPython::gettext_languages, - "Returns list of languages (most to least-specific) for gettext." - ); + bp::def( "gettext_languages", + &CalamaresPython::gettext_languages, + "Returns list of languages (most to least-specific) for gettext." ); - bp::def( - "gettext_path", - &CalamaresPython::gettext_path, - "Returns path for gettext search." - ); + bp::def( "gettext_path", &CalamaresPython::gettext_path, "Returns path for gettext search." ); } -namespace Calamares { +namespace Calamares +{ PythonJob::PythonJob( const QString& scriptFile, @@ -255,8 +183,7 @@ PythonJob::PythonJob( const QString& scriptFile, } -PythonJob::~PythonJob() -{} +PythonJob::~PythonJob() {} QString @@ -270,10 +197,13 @@ QString PythonJob::prettyStatusMessage() const { if ( m_description.isEmpty() ) - return tr( "Running %1 operation." ) - .arg( QDir( m_workingPath ).dirName() ); + { + return tr( "Running %1 operation." ).arg( QDir( m_workingPath ).dirName() ); + } else + { return m_description; + } } @@ -282,24 +212,20 @@ PythonJob::exec() { // We assume m_scriptFile to be relative to m_workingPath. QDir workingDir( m_workingPath ); - if ( !workingDir.exists() || - !workingDir.isReadable() ) + if ( !workingDir.exists() || !workingDir.isReadable() ) { - return JobResult::error( tr( "Bad working directory path" ), - tr( "Working directory %1 for python job %2 is not readable." ) - .arg( m_workingPath ) - .arg( prettyName() ) ); + return JobResult::error( + tr( "Bad working directory path" ), + tr( "Working directory %1 for python job %2 is not readable." ).arg( m_workingPath ).arg( prettyName() ) ); } QFileInfo scriptFI( workingDir.absoluteFilePath( m_scriptFile ) ); - if ( !scriptFI.exists() || - !scriptFI.isFile() || - !scriptFI.isReadable() ) + if ( !scriptFI.exists() || !scriptFI.isFile() || !scriptFI.isReadable() ) { return JobResult::error( tr( "Bad main script file" ), tr( "Main script file %1 for python job %2 is not readable." ) - .arg( scriptFI.absoluteFilePath() ) - .arg( prettyName() ) ); + .arg( scriptFI.absoluteFilePath() ) + .arg( prettyName() ) ); } try @@ -310,15 +236,14 @@ PythonJob::exec() bp::dict calamaresNamespace = bp::extract< bp::dict >( calamaresModule.attr( "__dict__" ) ); calamaresNamespace[ "job" ] = CalamaresPython::PythonJobInterface( this ); - calamaresNamespace[ "globalstorage" ] = CalamaresPython::GlobalStoragePythonWrapper( - JobQueue::instance()->globalStorage() ); + calamaresNamespace[ "globalstorage" ] + = CalamaresPython::GlobalStoragePythonWrapper( JobQueue::instance()->globalStorage() ); - bp::object execResult = bp::exec_file( scriptFI.absoluteFilePath().toLocal8Bit().data(), - scriptNamespace, - scriptNamespace ); + bp::object execResult + = bp::exec_file( scriptFI.absoluteFilePath().toLocal8Bit().data(), scriptNamespace, scriptNamespace ); bp::object entryPoint = scriptNamespace[ "run" ]; - bp::object prettyNameFunc = scriptNamespace.get("pretty_name", bp::object()); + bp::object prettyNameFunc = scriptNamespace.get( "pretty_name", bp::object() ); cDebug() << "Job file" << scriptFI.absoluteFilePath(); if ( !prettyNameFunc.is_none() ) @@ -337,14 +262,16 @@ PythonJob::exec() if ( m_description.isEmpty() ) { - bp::extract< std::string > entryPoint_doc_attr(entryPoint.attr( "__doc__" ) ); + bp::extract< std::string > entryPoint_doc_attr( entryPoint.attr( "__doc__" ) ); if ( entryPoint_doc_attr.check() ) { m_description = QString::fromStdString( entryPoint_doc_attr() ).trimmed(); - auto i_newline = m_description.indexOf('\n'); + auto i_newline = m_description.indexOf( '\n' ); if ( i_newline > 0 ) + { m_description.truncate( i_newline ); + } cDebug() << "Job description from __doc__" << prettyName() << "=" << m_description; emit progress( 0 ); } @@ -356,7 +283,7 @@ PythonJob::exec() { return JobResult::ok(); } - else // Something happened in the Python job + else // Something happened in the Python job { bp::tuple resultTuple = bp::extract< bp::tuple >( runResult ); QString message = QString::fromStdString( bp::extract< std::string >( resultTuple[ 0 ] ) ); @@ -374,9 +301,7 @@ PythonJob::exec() bp::handle_exception(); PyErr_Clear(); return JobResult::internalError( - tr( "Boost.Python error in job \"%1\"." ).arg( prettyName() ), - msg, - JobResult::PythonUncaughtException ); + tr( "Boost.Python error in job \"%1\"." ).arg( prettyName() ), msg, JobResult::PythonUncaughtException ); } } @@ -392,10 +317,12 @@ CalamaresPython::Helper* PythonJob::helper() { auto ptr = CalamaresPython::Helper::s_instance; - if (!ptr) + if ( !ptr ) + { ptr = new CalamaresPython::Helper; + } return ptr; } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamares/PythonJob.h b/src/libcalamares/PythonJob.h index c3b447472..a2bdf171c 100644 --- a/src/libcalamares/PythonJob.h +++ b/src/libcalamares/PythonJob.h @@ -27,9 +27,10 @@ namespace CalamaresPython { class PythonJobInterface; class Helper; -} +} // namespace CalamaresPython -namespace Calamares { +namespace Calamares +{ class PythonJob : public Job { @@ -57,6 +58,6 @@ private: QVariantMap m_configurationMap; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_PYTHONJOB_H +#endif // CALAMARES_PYTHONJOB_H diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index bb1bee432..30e3c9061 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -23,8 +23,8 @@ #include "JobQueue.h" #include "PythonHelper.h" #include "partition/Mount.h" -#include "utils/Logger.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" #include "utils/String.h" #include @@ -32,23 +32,32 @@ #include #undef slots +#include "utils/boost-warnings.h" #include +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + namespace bp = boost::python; static int _handle_check_target_env_call_error( const CalamaresUtils::ProcessResult& ec, const QString& cmd ) { if ( !ec.first ) + { return ec.first; + } QString raise = QString( "import subprocess\n" "e = subprocess.CalledProcessError(%1,\"%2\")\n" ) - .arg( ec.first ) - .arg( cmd ); + .arg( ec.first ) + .arg( cmd ); if ( !ec.second.isEmpty() ) - raise.append( QStringLiteral("e.output = \"\"\"%1\"\"\"\n").arg( ec.second ) ); - raise.append("raise e"); + { + raise.append( QStringLiteral( "e.output = \"\"\"%1\"\"\"\n" ).arg( ec.second ) ); + } + raise.append( "raise e" ); bp::exec( raise.toStdString().c_str() ); bp::throw_error_already_set(); return ec.first; @@ -76,64 +85,50 @@ _bp_list_to_qstringlist( const bp::list& args ) QStringList list; for ( int i = 0; i < bp::len( args ); ++i ) { - list.append( QString::fromStdString( - bp::extract< std::string >( args[ i ] ) ) ); + list.append( QString::fromStdString( bp::extract< std::string >( args[ i ] ) ) ); } return list; } static inline CalamaresUtils::ProcessResult -_target_env_command( - const QStringList& args, - const std::string& stdin, - int timeout ) +_target_env_command( const QStringList& args, const std::string& stdin, int timeout ) { - return CalamaresUtils::System::instance()-> - targetEnvCommand( args, - QString(), - QString::fromStdString( stdin ), - timeout ); + // Since Python doesn't give us the type system for distinguishing + // seconds from other integral types, massage to seconds here. + return CalamaresUtils::System::instance()->targetEnvCommand( + args, QString(), QString::fromStdString( stdin ), std::chrono::seconds( timeout ) ); } int -target_env_call( const std::string& command, - const std::string& stdin, - int timeout ) +target_env_call( const std::string& command, const std::string& stdin, int timeout ) { - return _target_env_command( - QStringList{ QString::fromStdString( command ) }, stdin, timeout ).first; + return _target_env_command( QStringList { QString::fromStdString( command ) }, stdin, timeout ).first; } int -target_env_call( const bp::list& args, - const std::string& stdin, - int timeout ) +target_env_call( const bp::list& args, const std::string& stdin, int timeout ) { - return _target_env_command( - _bp_list_to_qstringlist( args ), stdin, timeout ).first; + return _target_env_command( _bp_list_to_qstringlist( args ), stdin, timeout ).first; } int -check_target_env_call( const std::string& command, - const std::string& stdin, - int timeout ) +check_target_env_call( const std::string& command, const std::string& stdin, int timeout ) { - auto ec = _target_env_command( - QStringList{ QString::fromStdString( command ) }, stdin, timeout ); + auto ec = _target_env_command( QStringList { QString::fromStdString( command ) }, stdin, timeout ); return _handle_check_target_env_call_error( ec, QString::fromStdString( command ) ); } int -check_target_env_call( const bp::list& args, - const std::string& stdin, - int timeout ) +check_target_env_call( const bp::list& args, const std::string& stdin, int timeout ) { auto ec = _target_env_command( _bp_list_to_qstringlist( args ), stdin, timeout ); if ( !ec.first ) + { return ec.first; + } QStringList failedCmdList = _bp_list_to_qstringlist( args ); return _handle_check_target_env_call_error( ec, failedCmdList.join( ' ' ) ); @@ -141,25 +136,19 @@ check_target_env_call( const bp::list& args, std::string -check_target_env_output( const std::string& command, - const std::string& stdin, - int timeout ) +check_target_env_output( const std::string& command, const std::string& stdin, int timeout ) { - auto ec = _target_env_command( - QStringList{ QString::fromStdString( command ) }, stdin, timeout ); + auto ec = _target_env_command( QStringList { QString::fromStdString( command ) }, stdin, timeout ); _handle_check_target_env_call_error( ec, QString::fromStdString( command ) ); return ec.second.toStdString(); } std::string -check_target_env_output( const bp::list& args, - const std::string& stdin, - int timeout ) +check_target_env_output( const bp::list& args, const std::string& stdin, int timeout ) { QStringList list = _bp_list_to_qstringlist( args ); - auto ec = _target_env_command( - list, stdin, timeout ); + auto ec = _target_env_command( list, stdin, timeout ); _handle_check_target_env_call_error( ec, list.join( ' ' ) ); return ec.second.toStdString(); } @@ -191,7 +180,9 @@ void PythonJobInterface::setprogress( qreal progress ) { if ( progress >= 0 && progress <= 1 ) + { m_parent->emitProgress( progress ); + } } @@ -213,7 +204,8 @@ _gettext_languages() // own GlobalStoragePythonWrapper, which then holds a // GlobalStorage object for all of Python. Calamares::JobQueue* jq = Calamares::JobQueue::instance(); - Calamares::GlobalStorage* gs = jq ? jq->globalStorage() : CalamaresPython::GlobalStoragePythonWrapper::globalStorageInstance(); + Calamares::GlobalStorage* gs + = jq ? jq->globalStorage() : CalamaresPython::GlobalStoragePythonWrapper::globalStorageInstance(); QVariant localeConf_ = gs->value( "localeConf" ); if ( localeConf_.canConvert< QVariantMap >() ) @@ -243,7 +235,9 @@ gettext_languages() { bp::list pyList; for ( auto lang : _gettext_languages() ) + { pyList.append( lang.toStdString() ); + } return pyList; } @@ -254,7 +248,9 @@ _add_localedirs( QStringList& pathList, const QString& candidate ) { pathList.prepend( candidate ); if ( QDir( candidate ).cd( "lang" ) ) + { pathList.prepend( candidate + "/lang" ); + } } } @@ -263,16 +259,19 @@ gettext_path() { // TODO: distinguish between -d runs and normal runs // TODO: can we detect DESTDIR-installs? - QStringList candidatePaths = QStandardPaths::locateAll( QStandardPaths::GenericDataLocation, "locale", QStandardPaths::LocateDirectory ); + QStringList candidatePaths + = QStandardPaths::locateAll( QStandardPaths::GenericDataLocation, "locale", QStandardPaths::LocateDirectory ); QString extra = QCoreApplication::applicationDirPath(); - _add_localedirs( candidatePaths, extra ); // Often /usr/local/bin + _add_localedirs( candidatePaths, extra ); // Often /usr/local/bin if ( !extra.isEmpty() ) { QDir d( extra ); - if ( d.cd( "../share/locale" ) ) // Often /usr/local/bin/../share/locale -> /usr/local/share/locale + if ( d.cd( "../share/locale" ) ) // Often /usr/local/bin/../share/locale -> /usr/local/share/locale + { _add_localedirs( candidatePaths, d.canonicalPath() ); + } } - _add_localedirs( candidatePaths, QDir().canonicalPath() ); // . + _add_localedirs( candidatePaths, QDir().canonicalPath() ); // . cDebug() << "Determining gettext path from" << candidatePaths; @@ -293,4 +292,4 @@ gettext_path() } -} +} // namespace CalamaresPython diff --git a/src/libcalamares/PythonJobApi.h b/src/libcalamares/PythonJobApi.h index a19a0581b..3d3783f5f 100644 --- a/src/libcalamares/PythonJobApi.h +++ b/src/libcalamares/PythonJobApi.h @@ -35,29 +35,19 @@ int mount( const std::string& device_path, const std::string& filesystem_name = std::string(), const std::string& options = std::string() ); -int target_env_call( const std::string& command, - const std::string& stdin = std::string(), - int timeout = 0 ); +int target_env_call( const std::string& command, const std::string& stdin = std::string(), int timeout = 0 ); -int target_env_call( const boost::python::list& args, - const std::string& stdin = std::string(), - int timeout = 0 ); +int target_env_call( const boost::python::list& args, const std::string& stdin = std::string(), int timeout = 0 ); -int check_target_env_call( const std::string& command, - const std::string& stdin = std::string(), - int timeout = 0 ); +int check_target_env_call( const std::string& command, const std::string& stdin = std::string(), int timeout = 0 ); -int check_target_env_call( const boost::python::list& args, - const std::string& stdin = std::string(), - int timeout = 0 ); +int check_target_env_call( const boost::python::list& args, const std::string& stdin = std::string(), int timeout = 0 ); -std::string check_target_env_output( const std::string& command, - const std::string& stdin = std::string(), - int timeout = 0 ); +std::string +check_target_env_output( const std::string& command, const std::string& stdin = std::string(), int timeout = 0 ); -std::string check_target_env_output( const boost::python::list& args, - const std::string& stdin = std::string(), - int timeout = 0 ); +std::string +check_target_env_output( const boost::python::list& args, const std::string& stdin = std::string(), int timeout = 0 ); std::string obscure( const std::string& string ); @@ -85,6 +75,6 @@ private: Calamares::PythonJob* m_parent; }; -} +} // namespace CalamaresPython -#endif // PYTHONJOBAPI_H +#endif // PYTHONJOBAPI_H diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 71825b1e5..456956430 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -40,8 +40,10 @@ static QString requireString( const YAML::Node& config, const char* key ) { auto v = config[ key ]; - if ( hasValue(v) ) + if ( hasValue( v ) ) + { return QString::fromStdString( v.as< std::string >() ); + } else { cWarning() << Logger::SubEntry << "Required settings.conf key" << key << "is missing."; @@ -54,8 +56,10 @@ static bool requireBool( const YAML::Node& config, const char* key, bool d ) { auto v = config[ key ]; - if ( hasValue(v) ) + if ( hasValue( v ) ) + { return v.as< bool >(); + } else { cWarning() << Logger::SubEntry << "Required settings.conf key" << key << "is missing."; @@ -86,17 +90,17 @@ interpretModulesSearch( const bool debugMode, const QStringList& rawPaths, QStri // module search path in the build dir. if ( debugMode ) { - QString buildDirModules = QDir::current().absolutePath() + - QDir::separator() + "src" + - QDir::separator() + "modules"; + QString buildDirModules + = QDir::current().absolutePath() + QDir::separator() + "src" + QDir::separator() + "modules"; if ( QDir( buildDirModules ).exists() ) + { output.append( buildDirModules ); + } } // Install path is set in CalamaresAddPlugin.cmake - output.append( CalamaresUtils::systemLibDir().absolutePath() + - QDir::separator() + "calamares" + - QDir::separator() + "modules" ); + output.append( CalamaresUtils::systemLibDir().absolutePath() + QDir::separator() + "calamares" + + QDir::separator() + "modules" ); } else { @@ -106,7 +110,9 @@ interpretModulesSearch( const bool debugMode, const QStringList& rawPaths, QStri output.append( d.absolutePath() ); } else + { cDebug() << Logger::SubEntry << "module-search entry non-existent" << path; + } } } } @@ -124,15 +130,17 @@ interpretInstances( const YAML::Node& node, Settings::InstanceDescriptionList& c for ( const QVariant& instancesVListItem : instances ) { if ( instancesVListItem.type() != QVariant::Map ) + { continue; - QVariantMap instancesVListItemMap = - instancesVListItem.toMap(); + } + QVariantMap instancesVListItemMap = instancesVListItem.toMap(); Settings::InstanceDescription instanceMap; - for ( auto it = instancesVListItemMap.constBegin(); - it != instancesVListItemMap.constEnd(); ++it ) + for ( auto it = instancesVListItemMap.constBegin(); it != instancesVListItemMap.constEnd(); ++it ) { if ( it.value().type() != QVariant::String ) + { continue; + } instanceMap.insert( it.key(), it.value().toString() ); } customInstances.append( instanceMap ); @@ -149,37 +157,43 @@ interpretSequence( const YAML::Node& node, Settings::ModuleSequence& moduleSeque { QVariant sequenceV = CalamaresUtils::yamlToVariant( node ); if ( !( sequenceV.type() == QVariant::List ) ) + { throw YAML::Exception( YAML::Mark(), "sequence key does not have a list-value" ); + } const auto sequence = sequenceV.toList(); for ( const QVariant& sequenceVListItem : sequence ) { if ( sequenceVListItem.type() != QVariant::Map ) + { continue; + } QString thisActionS = sequenceVListItem.toMap().firstKey(); - ModuleAction thisAction; + ModuleSystem::Action thisAction; if ( thisActionS == "show" ) - thisAction = ModuleAction::Show; + { + thisAction = ModuleSystem::Action::Show; + } else if ( thisActionS == "exec" ) - thisAction = ModuleAction::Exec; + { + thisAction = ModuleSystem::Action::Exec; + } else + { continue; + } - QStringList thisActionRoster = sequenceVListItem - .toMap() - .value( thisActionS ) - .toStringList(); - moduleSequence.append( qMakePair( thisAction, - thisActionRoster ) ); + QStringList thisActionRoster = sequenceVListItem.toMap().value( thisActionS ).toStringList(); + moduleSequence.append( qMakePair( thisAction, thisActionRoster ) ); } } else + { throw YAML::Exception( YAML::Mark(), "sequence key is missing" ); + } } -Settings::Settings( const QString& settingsFilePath, - bool debugMode, - QObject* parent ) +Settings::Settings( const QString& settingsFilePath, bool debugMode, QObject* parent ) : QObject( parent ) , m_debug( debugMode ) , m_doChroot( true ) @@ -198,7 +212,8 @@ Settings::Settings( const QString& settingsFilePath, YAML::Node config = YAML::Load( ba.constData() ); Q_ASSERT( config.IsMap() ); - interpretModulesSearch( debugMode, CalamaresUtils::yamlToStringList( config[ "modules-search" ] ), m_modulesSearchPaths ); + interpretModulesSearch( + debugMode, CalamaresUtils::yamlToStringList( config[ "modules-search" ] ), m_modulesSearchPaths ); interpretInstances( config[ "instances" ], m_customModuleInstances ); interpretSequence( config[ "sequence" ], m_modulesSequence ); @@ -283,4 +298,4 @@ Settings::disableCancelDuringExec() const } -} +} // namespace Calamares diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index a095ee567..4c2f2ed9d 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -36,9 +36,7 @@ class DLLEXPORT Settings : public QObject { Q_OBJECT public: - explicit Settings( const QString& settingsFilePath, - bool debugMode, - QObject* parent = nullptr ); + explicit Settings( const QString& settingsFilePath, bool debugMode, QObject* parent = nullptr ); static Settings* instance(); @@ -48,7 +46,7 @@ public: using InstanceDescriptionList = QList< InstanceDescription >; InstanceDescriptionList customModuleInstances() const; - using ModuleSequence = QList< QPair< ModuleAction, QStringList > >; + using ModuleSequence = QList< QPair< ModuleSystem::Action, QStringList > >; ModuleSequence modulesSequence() const; QString brandingComponentName() const; @@ -88,6 +86,6 @@ private: bool m_disableCancelDuringExec; }; -} +} // namespace Calamares -#endif // SETTINGS_H +#endif // SETTINGS_H diff --git a/src/libcalamares/geoip/GeoIPJSON.cpp b/src/libcalamares/geoip/GeoIPJSON.cpp index 4b7562d7e..85dc79619 100644 --- a/src/libcalamares/geoip/GeoIPJSON.cpp +++ b/src/libcalamares/geoip/GeoIPJSON.cpp @@ -30,7 +30,7 @@ namespace CalamaresUtils namespace GeoIP { -GeoIPJSON::GeoIPJSON(const QString& attribute) +GeoIPJSON::GeoIPJSON( const QString& attribute ) : Interface( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute ) { } @@ -42,19 +42,25 @@ GeoIPJSON::GeoIPJSON(const QString& attribute) * "foo" of @p m, like a regular JSON lookup would. */ static QString -selectMap( const QVariantMap& m, const QStringList& l, int index) +selectMap( const QVariantMap& m, const QStringList& l, int index ) { if ( index >= l.count() ) + { return QString(); + } - QString attributeName = l[index]; + QString attributeName = l[ index ]; if ( index == l.count() - 1 ) + { return CalamaresUtils::getString( m, attributeName ); + } else { bool success = false; // bogus if ( m.contains( attributeName ) ) - return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index+1 ); + { + return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index + 1 ); + } return QString(); } } @@ -67,18 +73,18 @@ GeoIPJSON::rawReply( const QByteArray& data ) YAML::Node doc = YAML::Load( data ); QVariant var = CalamaresUtils::yamlToVariant( doc ); - if ( !var.isNull() && - var.isValid() && - var.type() == QVariant::Map ) + if ( !var.isNull() && var.isValid() && var.type() == QVariant::Map ) { - return selectMap( var.toMap(), m_element.split('.'), 0 ); + return selectMap( var.toMap(), m_element.split( '.' ), 0 ); } else + { cWarning() << "Invalid YAML data for GeoIPJSON"; + } } catch ( YAML::Exception& e ) { - CalamaresUtils::explainYamlException( e, data, "GeoIP data"); + CalamaresUtils::explainYamlException( e, data, "GeoIP data" ); } return QString(); @@ -90,5 +96,5 @@ GeoIPJSON::processReply( const QByteArray& data ) return splitTZString( rawReply( data ) ); } -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils diff --git a/src/libcalamares/geoip/GeoIPJSON.h b/src/libcalamares/geoip/GeoIPJSON.h index 4d7ded631..3f7756dd8 100644 --- a/src/libcalamares/geoip/GeoIPJSON.h +++ b/src/libcalamares/geoip/GeoIPJSON.h @@ -45,9 +45,9 @@ public: explicit GeoIPJSON( const QString& attribute = QString() ); virtual RegionZonePair processReply( const QByteArray& ) override; - virtual QString rawReply(const QByteArray & ) override; -} ; + virtual QString rawReply( const QByteArray& ) override; +}; -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/geoip/GeoIPTests.cpp b/src/libcalamares/geoip/GeoIPTests.cpp index ec7511370..4b1f8f8e1 100644 --- a/src/libcalamares/geoip/GeoIPTests.cpp +++ b/src/libcalamares/geoip/GeoIPTests.cpp @@ -24,9 +24,7 @@ #endif #include "Handler.h" -#include -#include -#include +#include "network/Manager.h" #include @@ -34,21 +32,16 @@ QTEST_GUILESS_MAIN( GeoIPTests ) using namespace CalamaresUtils::GeoIP; -GeoIPTests::GeoIPTests() -{ -} +GeoIPTests::GeoIPTests() {} -GeoIPTests::~GeoIPTests() -{ -} +GeoIPTests::~GeoIPTests() {} void GeoIPTests::initTestCase() { } -static const char json_data_attribute[] = - "{\"time_zone\":\"Europe/Amsterdam\"}"; +static const char json_data_attribute[] = "{\"time_zone\":\"Europe/Amsterdam\"}"; void GeoIPTests::testJSON() @@ -67,7 +60,8 @@ GeoIPTests::testJSON() QCOMPARE( tz.first, QStringLiteral( "America" ) ); } -void GeoIPTests::testJSONalt() +void +GeoIPTests::testJSONalt() { GeoIPJSON handler( "zona_de_hora" ); @@ -102,7 +96,7 @@ GeoIPTests::testJSONbad() static const char xml_data_ubiquity[] = - R"( + R"( 85.150.1.1 OK NL @@ -133,8 +127,8 @@ GeoIPTests::testXML() void GeoIPTests::testXML2() { - static const char data[] = - "America/North Dakota/Beulah"; // With a space! + static const char data[] + = "America/North Dakota/Beulah"; // With a space! #ifdef QT_XML_LIB GeoIPXML handler; @@ -146,7 +140,8 @@ GeoIPTests::testXML2() } -void GeoIPTests::testXMLalt() +void +GeoIPTests::testXMLalt() { #ifdef QT_XML_LIB GeoIPXML handler( "ZT" ); @@ -173,63 +168,48 @@ GeoIPTests::testXMLbad() #endif } -void GeoIPTests::testSplitTZ() +void +GeoIPTests::testSplitTZ() { using namespace CalamaresUtils::GeoIP; - auto tz = splitTZString( QStringLiteral("Moon/Dark_side") ); - QCOMPARE( tz.first, QStringLiteral("Moon") ); - QCOMPARE( tz.second, QStringLiteral("Dark_side") ); + auto tz = splitTZString( QStringLiteral( "Moon/Dark_side" ) ); + QCOMPARE( tz.first, QStringLiteral( "Moon" ) ); + QCOMPARE( tz.second, QStringLiteral( "Dark_side" ) ); // Some providers return weirdly escaped data - tz = splitTZString( QStringLiteral("America\\/NewYork") ); - QCOMPARE( tz.first, QStringLiteral("America") ); - QCOMPARE( tz.second, QStringLiteral("NewYork") ); // That's not actually the zone name + tz = splitTZString( QStringLiteral( "America\\/NewYork" ) ); + QCOMPARE( tz.first, QStringLiteral( "America" ) ); + QCOMPARE( tz.second, QStringLiteral( "NewYork" ) ); // That's not actually the zone name // Check that bogus data fails tz = splitTZString( QString() ); QCOMPARE( tz.first, QString() ); - tz = splitTZString( QStringLiteral("America.NewYork") ); + tz = splitTZString( QStringLiteral( "America.NewYork" ) ); QCOMPARE( tz.first, QString() ); // Check that three-level is split properly and space is replaced - tz = splitTZString( QStringLiteral("America/North Dakota/Beulah") ); - QCOMPARE( tz.first, QStringLiteral("America") ); - QCOMPARE( tz.second, QStringLiteral("North_Dakota/Beulah") ); + tz = splitTZString( QStringLiteral( "America/North Dakota/Beulah" ) ); + QCOMPARE( tz.first, QStringLiteral( "America" ) ); + QCOMPARE( tz.second, QStringLiteral( "North_Dakota/Beulah" ) ); } -static QByteArray -synchronous_get( const char* urlstring ) -{ - QUrl url( urlstring ); - QNetworkAccessManager manager; - QEventLoop loop; - - qDebug() << "Fetching" << url; - - QObject::connect( &manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit ); - - QNetworkRequest request( url ); - QNetworkReply* reply = manager.get( request ); - loop.exec(); - reply->deleteLater(); - return reply->readAll(); -} - -#define CHECK_GET(t, selector, url) \ +#define CHECK_GET( t, selector, url ) \ { \ - auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \ + auto tz = GeoIP##t( selector ) \ + .processReply( CalamaresUtils::Network::Manager::instance().synchronousGet( QUrl( url ) ) ); \ qDebug() << tz; \ QCOMPARE( default_tz, tz ); \ - auto tz2 = CalamaresUtils::GeoIP::Handler( ""#t, url, selector ).get(); \ + auto tz2 = CalamaresUtils::GeoIP::Handler( "" #t, url, selector ).get(); \ qDebug() << tz2; \ QCOMPARE( default_tz, tz2 ); \ } -void GeoIPTests::testGet() +void +GeoIPTests::testGet() { - if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral("TEST_HTTP_GET") ) ) + if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral( "TEST_HTTP_GET" ) ) ) { qDebug() << "Skipping HTTP GET tests, set TEST_HTTP_GET environment variable to enable"; return; @@ -237,7 +217,8 @@ void GeoIPTests::testGet() GeoIPJSON default_handler; // Call the KDE service the definitive source. - auto default_tz = default_handler.processReply( synchronous_get( "https://geoip.kde.org/v1/calamares" ) ); + auto default_tz = default_handler.processReply( + CalamaresUtils::Network::Manager::instance().synchronousGet( QUrl( "https://geoip.kde.org/v1/calamares" ) ) ); // This is bogus, because the test isn't always run by me // QCOMPARE( default_tz.first, QStringLiteral("Europe") ); @@ -248,14 +229,14 @@ void GeoIPTests::testGet() // Each expansion of CHECK_GET does a synchronous GET, then checks that // the TZ data is the same as the default_tz; this is fragile if the // services don't agree on the location of where the test is run. - CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent - CHECK_GET( JSON, QStringLiteral("timezone"), "https://ipapi.co/json" ) // Different JSON - CHECK_GET( JSON, QStringLiteral("timezone"), "http://ip-api.com/json" ) + CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent + CHECK_GET( JSON, QStringLiteral( "timezone" ), "https://ipapi.co/json" ) // Different JSON + CHECK_GET( JSON, QStringLiteral( "timezone" ), "http://ip-api.com/json" ) - CHECK_GET( JSON, QStringLiteral("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON + CHECK_GET( JSON, QStringLiteral( "Location.TimeZone" ), "https://geoip.kde.org/debug" ) // 2-level JSON #ifdef QT_XML_LIB CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format - CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service + CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service #endif } diff --git a/src/libcalamares/geoip/GeoIPXML.cpp b/src/libcalamares/geoip/GeoIPXML.cpp index b658042bf..2a97c5546 100644 --- a/src/libcalamares/geoip/GeoIPXML.cpp +++ b/src/libcalamares/geoip/GeoIPXML.cpp @@ -20,7 +20,6 @@ #include "utils/Logger.h" -#include #include namespace CalamaresUtils @@ -48,10 +47,12 @@ getElementTexts( const QByteArray& data, const QString& tag ) cDebug() << "GeoIP found" << tzElements.length() << "elements"; for ( int it = 0; it < tzElements.length(); ++it ) { - auto e = tzElements.at(it).toElement(); + auto e = tzElements.at( it ).toElement(); auto e_text = e.text(); if ( !e_text.isEmpty() ) + { elements.append( e_text ); + } } } else @@ -60,7 +61,9 @@ getElementTexts( const QByteArray& data, const QString& tag ) } if ( elements.count() < 1 ) + { cWarning() << "GeopIP XML had no non-empty elements" << tag; + } return elements; } @@ -70,8 +73,12 @@ QString GeoIPXML::rawReply( const QByteArray& data ) { for ( const auto& e : getElementTexts( data, m_element ) ) + { if ( !e.isEmpty() ) + { return e; + } + } return QString(); } @@ -83,11 +90,13 @@ GeoIPXML::processReply( const QByteArray& data ) { auto tz = splitTZString( e ); if ( !tz.first.isEmpty() ) + { return tz; + } } return RegionZonePair(); } -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils diff --git a/src/libcalamares/geoip/GeoIPXML.h b/src/libcalamares/geoip/GeoIPXML.h index 356e88b12..73147ff91 100644 --- a/src/libcalamares/geoip/GeoIPXML.h +++ b/src/libcalamares/geoip/GeoIPXML.h @@ -45,9 +45,9 @@ public: explicit GeoIPXML( const QString& element = QString() ); virtual RegionZonePair processReply( const QByteArray& ) override; - virtual QString rawReply(const QByteArray & ) override; -} ; + virtual QString rawReply( const QByteArray& ) override; +}; -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/geoip/Handler.cpp b/src/libcalamares/geoip/Handler.cpp index df033f476..99e55e926 100644 --- a/src/libcalamares/geoip/Handler.cpp +++ b/src/libcalamares/geoip/Handler.cpp @@ -19,18 +19,15 @@ #include "Handler.h" #include "GeoIPJSON.h" -#if defined(QT_XML_LIB) +#if defined( QT_XML_LIB ) #include "GeoIPXML.h" #endif +#include "network/Manager.h" #include "utils/Logger.h" #include "utils/NamedEnum.h" #include "utils/Variant.h" -#include -#include -#include - #include static const NamedEnumTable< CalamaresUtils::GeoIP::Handler::Type >& @@ -38,11 +35,15 @@ handlerTypes() { using Type = CalamaresUtils::GeoIP::Handler::Type; + // *INDENT-OFF* + // clang-format off static const NamedEnumTable names{ - { QStringLiteral( "none" ), Type::None}, - { QStringLiteral( "json" ), Type::JSON}, - { QStringLiteral( "xml" ), Type::XML} + { QStringLiteral( "none" ), Type::None }, + { QStringLiteral( "json" ), Type::JSON }, + { QStringLiteral( "xml" ), Type::XML } }; + // *INDENT-ON* + // clang-format on return names; } @@ -72,7 +73,7 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri { cWarning() << "GeoIP style *none* does not do anything."; } -#if !defined(QT_XML_LIB) +#if !defined( QT_XML_LIB ) else if ( m_type == Type::XML ) { m_type = Type::None; @@ -81,40 +82,22 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri #endif } -Handler::~Handler() -{ -} - -static QByteArray -synchronous_get( const QString& urlstring ) -{ - QUrl url( urlstring ); - QNetworkAccessManager manager; - QEventLoop loop; - - QObject::connect( &manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit ); - - QNetworkRequest request( url ); - QNetworkReply* reply = manager.get( request ); - loop.exec(); - reply->deleteLater(); - return reply->readAll(); -} +Handler::~Handler() {} static std::unique_ptr< Interface > create_interface( Handler::Type t, const QString& selector ) { - switch( t ) + switch ( t ) { - case Handler::Type::None: - return nullptr; - case Handler::Type::JSON: - return std::make_unique< GeoIPJSON >( selector ); - case Handler::Type::XML: -#if defined(QT_XML_LIB) - return std::make_unique< GeoIPXML >( selector ); + case Handler::Type::None: + return nullptr; + case Handler::Type::JSON: + return std::make_unique< GeoIPJSON >( selector ); + case Handler::Type::XML: +#if defined( QT_XML_LIB ) + return std::make_unique< GeoIPXML >( selector ); #else - return nullptr; + return nullptr; #endif } NOTREACHED return nullptr; @@ -125,9 +108,11 @@ do_query( Handler::Type type, const QString& url, const QString& selector ) { const auto interface = create_interface( type, selector ); if ( !interface ) + { return RegionZonePair(); + } - return interface->processReply( synchronous_get( url ) ); + return interface->processReply( CalamaresUtils::Network::Manager::instance().synchronousGet( url ) ); } static QString @@ -135,16 +120,20 @@ do_raw_query( Handler::Type type, const QString& url, const QString& selector ) { const auto interface = create_interface( type, selector ); if ( !interface ) + { return QString(); + } - return interface->rawReply( synchronous_get( url ) ); + return interface->rawReply( CalamaresUtils::Network::Manager::instance().synchronousGet( url ) ); } RegionZonePair Handler::get() const { if ( !isValid() ) + { return RegionZonePair(); + } return do_query( m_type, m_url, m_selector ); } @@ -156,17 +145,16 @@ Handler::query() const QString url = m_url; QString selector = m_selector; - return QtConcurrent::run( [=] - { - return do_query( type, url, selector ); - } ); + return QtConcurrent::run( [=] { return do_query( type, url, selector ); } ); } QString Handler::getRaw() const { if ( !isValid() ) + { return QString(); + } return do_raw_query( m_type, m_url, m_selector ); } @@ -178,11 +166,8 @@ Handler::queryRaw() const QString url = m_url; QString selector = m_selector; - return QtConcurrent::run( [=] - { - return do_raw_query( type, url, selector ); - } ); + return QtConcurrent::run( [=] { return do_raw_query( type, url, selector ); } ); } -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils diff --git a/src/libcalamares/geoip/Handler.h b/src/libcalamares/geoip/Handler.h index 8e435b5b7..518964caf 100644 --- a/src/libcalamares/geoip/Handler.h +++ b/src/libcalamares/geoip/Handler.h @@ -21,9 +21,9 @@ #include "Interface.h" -#include #include #include +#include namespace CalamaresUtils { @@ -46,7 +46,7 @@ public: None, JSON, XML - } ; + }; /** @brief An unconfigured handler; this always returns errors. */ Handler(); @@ -89,7 +89,6 @@ private: const QString m_selector; }; -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils #endif - diff --git a/src/libcalamares/geoip/Interface.cpp b/src/libcalamares/geoip/Interface.cpp index 36e680aab..2cecb63c5 100644 --- a/src/libcalamares/geoip/Interface.cpp +++ b/src/libcalamares/geoip/Interface.cpp @@ -25,14 +25,12 @@ namespace CalamaresUtils namespace GeoIP { -Interface::Interface(const QString& e) +Interface::Interface( const QString& e ) : m_element( e ) { } -Interface::~Interface() -{ -} +Interface::~Interface() {} RegionZonePair splitTZString( const QString& tz ) @@ -53,5 +51,5 @@ splitTZString( const QString& tz ) return RegionZonePair( QString(), QString() ); } -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils diff --git a/src/libcalamares/geoip/Interface.h b/src/libcalamares/geoip/Interface.h index 7db8c4c91..1a9beaa41 100644 --- a/src/libcalamares/geoip/Interface.h +++ b/src/libcalamares/geoip/Interface.h @@ -27,7 +27,7 @@ class QByteArray; -namespace CalamaresUtils +namespace CalamaresUtils { namespace GeoIP { @@ -38,18 +38,27 @@ namespace GeoIP * pasting the strings back together with a "/" is the right thing to * do. The Zone **may** contain a "/" (e.g. "Kentucky/Monticello"). */ -class DLLEXPORT RegionZonePair : public QPair +class DLLEXPORT RegionZonePair : public QPair< QString, QString > { public: /** @brief Construct from an existing pair. */ - explicit RegionZonePair( const QPair& p ) : QPair(p) { } + explicit RegionZonePair( const QPair& p ) + : QPair( p ) + { + } /** @brief Construct from two strings, like qMakePair(). */ - RegionZonePair( const QString& region, const QString& zone ) : QPair( region, zone ) { } + RegionZonePair( const QString& region, const QString& zone ) + : QPair( region, zone ) + { + } /** @brief An invalid zone pair (empty strings). */ - RegionZonePair() : QPair( QString(), QString() ) { } + RegionZonePair() + : QPair( QString(), QString() ) + { + } bool isValid() const { return !first.isEmpty(); } -} ; +}; /** @brief Splits a region/zone string into a pair. * @@ -60,8 +69,7 @@ public: * pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah * will return "America", "North_Dakota/Beulah"). */ -DLLEXPORT RegionZonePair -splitTZString( const QString& s ); +DLLEXPORT RegionZonePair splitTZString( const QString& s ); /** * @brief Interface for GeoIP retrievers. @@ -93,8 +101,8 @@ protected: Interface( const QString& e = QString() ); QString m_element; // string for selecting from data -} ; +}; -} -} // namespace +} // namespace GeoIP +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/geoip/test_geoip.cpp b/src/libcalamares/geoip/test_geoip.cpp index 5f7ab935c..32c6f4e24 100644 --- a/src/libcalamares/geoip/test_geoip.cpp +++ b/src/libcalamares/geoip/test_geoip.cpp @@ -30,34 +30,40 @@ using std::cerr; using namespace CalamaresUtils::GeoIP; -int main(int argc, char** argv) +int +main( int argc, char** argv ) { - if (argc != 2) + if ( argc != 2 ) { cerr << "Usage: curl url | test_geoip \n"; return 1; } Interface* handler = nullptr; - if ( QStringLiteral( "json" ) == argv[1] ) + if ( QStringLiteral( "json" ) == argv[ 1 ] ) + { handler = new GeoIPJSON; + } #ifdef QT_XML_LIB - else if ( QStringLiteral( "xml" ) == argv[1] ) + else if ( QStringLiteral( "xml" ) == argv[ 1 ] ) + { handler = new GeoIPXML; + } #endif if ( !handler ) { - cerr << "Unknown format '" << argv[1] << "'\n"; + cerr << "Unknown format '" << argv[ 1 ] << "'\n"; return 1; } QByteArray ba; - while( !std::cin.eof() ) { - char arr[1024]; - std::cin.read(arr, sizeof(arr)); - int s = static_cast( std::cin.gcount() ); - ba.append(arr, s); + while ( !std::cin.eof() ) + { + char arr[ 1024 ]; + std::cin.read( arr, sizeof( arr ) ); + int s = static_cast< int >( std::cin.gcount() ); + ba.append( arr, s ); } auto tz = handler->processReply( ba ); @@ -67,7 +73,8 @@ int main(int argc, char** argv) } else { - std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n'; + std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() + << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n'; } return 0; diff --git a/src/libcalamares/locale/CountryData_p.cpp b/src/libcalamares/locale/CountryData_p.cpp index a6e9b3a95..4382950ec 100644 --- a/src/libcalamares/locale/CountryData_p.cpp +++ b/src/libcalamares/locale/CountryData_p.cpp @@ -10,12 +10,21 @@ * Unicode Data Files ("DATA FILES") include all data files under the directories: * https://www.unicode.org/Public/ * C. Terms of Use -* 2. Any person is hereby authorized, without fee, to view, use, reproduce, -* and distribute all documents and files, subject to the Terms and +* 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. */ +/* MODIFICATIONS + * + * Edited anyway: + * 20191211 India changed to AnyLanguage, since Hindi doesn't make sense. #1284 + * + */ + // BEGIN Generated from CLDR data +// *INDENT-OFF* +// clang-format off struct CountryData @@ -113,7 +122,7 @@ static const CountryData country_data_table[] = { { QLocale::Language::Spanish, QLocale::Country::CanaryIslands, 'I', 'C' }, { QLocale::Language::Indonesian, QLocale::Country::Indonesia, 'I', 'D' }, { QLocale::Language::Hebrew, QLocale::Country::Israel, 'I', 'L' }, -{ QLocale::Language::Hindi, QLocale::Country::India, 'I', 'N' }, +{ QLocale::Language::AnyLanguage, QLocale::Country::India, 'I', 'N' }, { QLocale::Language::Arabic, QLocale::Country::Iraq, 'I', 'Q' }, { QLocale::Language::Persian, QLocale::Country::Iran, 'I', 'R' }, { QLocale::Language::Icelandic, QLocale::Country::Iceland, 'I', 'S' }, diff --git a/src/libcalamares/locale/Label.cpp b/src/libcalamares/locale/Label.cpp index 8d3cd443f..58c19101d 100644 --- a/src/libcalamares/locale/Label.cpp +++ b/src/libcalamares/locale/Label.cpp @@ -50,18 +50,24 @@ Label::setLabels( const QString& locale, LabelFormat format ) QString countryName; if ( languageName.isEmpty() ) + { languageName = QString( "* %1 (%2)" ).arg( locale, englishName ); + } - bool needsCountryName = ( format == LabelFormat::AlwaysWithCountry ) || - (locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 1 ); + bool needsCountryName = ( format == LabelFormat::AlwaysWithCountry ) + || ( locale.contains( '_' ) && QLocale::countriesForLanguage( m_locale.language() ).count() > 1 ); if ( needsCountryName ) + { countryName = m_locale.nativeCountryName(); + } m_label = needsCountryName ? longFormat.arg( languageName, countryName ) : languageName; - m_englishLabel = needsCountryName ? longFormat.arg( englishName, QLocale::countryToString( m_locale.country() ) ) : englishName; + m_englishLabel = needsCountryName ? longFormat.arg( englishName, QLocale::countryToString( m_locale.country() ) ) + : englishName; } -QLocale Label::getLocale( const QString& localeName ) +QLocale +Label::getLocale( const QString& localeName ) { if ( localeName.contains( "@latin" ) ) { @@ -69,8 +75,10 @@ QLocale Label::getLocale( const QString& localeName ) return QLocale( loc.language(), QLocale::Script::LatinScript, loc.country() ); } else + { return QLocale( localeName ); + } } -} -} // namespace +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/Label.h b/src/libcalamares/locale/Label.h index 7935b0880..95129d38c 100644 --- a/src/libcalamares/locale/Label.h +++ b/src/libcalamares/locale/Label.h @@ -23,7 +23,7 @@ #include #include -namespace CalamaresUtils +namespace CalamaresUtils { namespace Locale { @@ -39,7 +39,11 @@ class Label { public: /** @brief Formatting option for label -- add (country) to label. */ - enum class LabelFormat { AlwaysWithCountry, IfNeededWithCountry } ; + enum class LabelFormat + { + AlwaysWithCountry, + IfNeededWithCountry + }; /** @brief Empty locale. This uses the system-default locale. */ Label(); @@ -54,56 +58,33 @@ public: /** @brief Define a sorting order. * - * English (@see isEnglish() -- it means en_US) is sorted at the top. + * Locales are sorted by their id, which means the ISO 2-letter code + country. */ - bool operator <( const Label& other ) const - { - return m_localeId < other.m_localeId; - } + bool operator<( const Label& other ) const { return m_localeId < other.m_localeId; } /** @brief Is this locale English? * * en_US and en (American English) is defined as English. The Queen's * English -- proper English -- is relegated to non-English status. */ - bool isEnglish() const - { - return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" ); - } + bool isEnglish() const { return m_localeId == QLatin1String( "en_US" ) || m_localeId == QLatin1String( "en" ); } /** @brief Get the human-readable name for this locale. */ - QString label() const - { - return m_label; - } + QString label() const { return m_label; } /** @brief Get the *English* human-readable name for this locale. */ - QString englishLabel() const - { - return m_englishLabel; - } + QString englishLabel() const { return m_englishLabel; } /** @brief Get the Qt locale. */ - QLocale locale() const - { - return m_locale; - } + QLocale locale() const { return m_locale; } - QString name() const - { - return m_locale.name(); - } + QString name() const { return m_locale.name(); } + QString id() const { return m_localeId; } /// @brief Convenience accessor to the language part of the locale - QLocale::Language language() const - { - return m_locale.language(); - } + QLocale::Language language() const { return m_locale.language(); } /// @brief Convenience accessor to the country part (if any) of the locale - QLocale::Country country() const - { - return m_locale.country(); - } + QLocale::Country country() const { return m_locale.country(); } /** @brief Get a Qt locale for the given @p localeName * @@ -119,9 +100,9 @@ protected: QString m_localeId; // the locale identifier, e.g. "en_GB" QString m_label; // the native name of the locale QString m_englishLabel; -} ; +}; -} -} // namespace +} // namespace Locale +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/locale/LabelModel.cpp b/src/libcalamares/locale/LabelModel.cpp index 79ff5d67b..bcb8af057 100644 --- a/src/libcalamares/locale/LabelModel.cpp +++ b/src/libcalamares/locale/LabelModel.cpp @@ -29,17 +29,18 @@ namespace Locale LabelModel::LabelModel( const QStringList& locales, QObject* parent ) : QAbstractListModel( parent ) + , m_localeIds( locales ) { Q_ASSERT( locales.count() > 0 ); m_locales.reserve( locales.count() ); for ( const auto& l : locales ) + { m_locales.push_back( Label( l ) ); + } } -LabelModel::~LabelModel() -{ -} +LabelModel::~LabelModel() {} int LabelModel::rowCount( const QModelIndex& ) const @@ -51,10 +52,14 @@ QVariant LabelModel::data( const QModelIndex& index, int role ) const { if ( ( role != LabelRole ) && ( role != EnglishLabelRole ) ) + { return QVariant(); + } if ( !index.isValid() ) + { return QVariant(); + } const auto& locale = m_locales.at( index.row() ); switch ( role ) @@ -75,59 +80,62 @@ LabelModel::locale( int row ) const { for ( const auto& l : m_locales ) if ( l.isEnglish() ) + { return l; - return m_locales[0]; + } + return m_locales[ 0 ]; } - return m_locales[row]; + return m_locales[ row ]; } int -LabelModel::find( std::function predicate ) const +LabelModel::find( std::function< bool( const Label& ) > predicate ) const { - for ( int row = 0; row < m_locales.count() ; ++row ) + for ( int row = 0; row < m_locales.count(); ++row ) { - if ( predicate( m_locales[row] ) ) + if ( predicate( m_locales[ row ] ) ) + { return row; + } } return -1; } int -LabelModel::find( std::function predicate ) const +LabelModel::find( std::function< bool( const QLocale& ) > predicate ) const { - return find( [&]( const Label& l ) - { - return predicate( l.locale() ); - } ); + return find( [&]( const Label& l ) { return predicate( l.locale() ); } ); } int LabelModel::find( const QLocale& locale ) const { - return find( [&]( const Label& l ) - { - return locale == l.locale(); - } ); + return find( [&]( const Label& l ) { return locale == l.locale(); } ); } int LabelModel::find( const QString& countryCode ) const { if ( countryCode.length() != 2 ) + { return -1; + } auto c_l = countryData( countryCode ); - int r = find( [&]( const Label& l ){ return ( l.language() == c_l.second ) && ( l.country() == c_l.first ); } ); + int r = find( [&]( const Label& l ) { return ( l.language() == c_l.second ) && ( l.country() == c_l.first ); } ); if ( r >= 0 ) + { return r; - return find( [&]( const Label& l ){ return l.language() == c_l.second; } ); + } + return find( [&]( const Label& l ) { return l.language() == c_l.second; } ); } -LabelModel* availableTranslations() +LabelModel* +availableTranslations() { - static LabelModel* model = new LabelModel( QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';') ); + static LabelModel* model = new LabelModel( QStringLiteral( CALAMARES_TRANSLATION_LANGUAGES ).split( ';' ) ); return model; } -} -} // namespace +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/LabelModel.h b/src/libcalamares/locale/LabelModel.h index 2f3bee629..03daddbf3 100644 --- a/src/libcalamares/locale/LabelModel.h +++ b/src/libcalamares/locale/LabelModel.h @@ -26,7 +26,7 @@ #include -namespace CalamaresUtils +namespace CalamaresUtils { namespace Locale { @@ -54,12 +54,15 @@ public: */ const Label& locale( int row ) const; + /// @brief Returns all of the locale Ids (e.g. en_US) put into this model. + const QStringList& localeIds() const { return m_localeIds; } + /** @brief Searches for an item that matches @p predicate * * Returns the row number of the first match, or -1 if there isn't one. */ - int find( std::function predicate ) const; - int find( std::function predicate ) const; + int find( std::function< bool( const QLocale& ) > predicate ) const; + int find( std::function< bool( const Label& ) > predicate ) const; /// @brief Looks for an item using the same locale, -1 if there isn't one int find( const QLocale& ) const; /// @brief Looks for an item that best matches the 2-letter country code @@ -67,7 +70,8 @@ public: private: QVector< Label > m_locales; -} ; + QStringList m_localeIds; +}; /** @brief Returns a model with all available translations. * @@ -80,6 +84,6 @@ private: * NOTE: While the model is not typed const, it should be. Do not modify. */ DLLEXPORT LabelModel* availableTranslations(); -} -} // namespace +} // namespace Locale +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/locale/Lookup.cpp b/src/libcalamares/locale/Lookup.cpp index 73d706de6..baa3ce5b1 100644 --- a/src/libcalamares/locale/Lookup.cpp +++ b/src/libcalamares/locale/Lookup.cpp @@ -28,13 +28,13 @@ namespace Locale struct TwoChar { TwoChar( const QString& code ) - : cc1(0) - , cc2(0) + : cc1( 0 ) + , cc2( 0 ) { if ( code.length() == 2 ) { - cc1 = code[0].toLatin1(); - cc2 = code[1].toLatin1(); + cc1 = code[ 0 ].toLatin1(); + cc2 = code[ 1 ].toLatin1(); } } @@ -42,52 +42,65 @@ struct TwoChar char cc2; }; -static const CountryData* lookup( TwoChar c ) +static const CountryData* +lookup( TwoChar c ) { if ( !c.cc1 ) + { return nullptr; + } - const CountryData* p = std::find_if(country_data_table, country_data_table + country_data_size, - [c=c]( const CountryData& d ){ return (d.cc1 == c.cc1) && (d.cc2 == c.cc2); } - ); + const CountryData* p + = std::find_if( country_data_table, country_data_table + country_data_size, [c = c]( const CountryData& d ) { + return ( d.cc1 == c.cc1 ) && ( d.cc2 == c.cc2 ); + } ); if ( p == country_data_table + country_data_size ) + { return nullptr; + } return p; } -QLocale::Country countryForCode(const QString& code) +QLocale::Country +countryForCode( const QString& code ) { const CountryData* p = lookup( TwoChar( code ) ); return p ? p->c : QLocale::Country::AnyCountry; } -QLocale::Language languageForCountry(const QString& code) +QLocale::Language +languageForCountry( const QString& code ) { const CountryData* p = lookup( TwoChar( code ) ); return p ? p->l : QLocale::Language::AnyLanguage; } -QPair countryData(const QString& code) +QPair< QLocale::Country, QLocale::Language > +countryData( const QString& code ) { const CountryData* p = lookup( TwoChar( code ) ); return p ? qMakePair( p->c, p->l ) : qMakePair( QLocale::Country::AnyCountry, QLocale::Language::AnyLanguage ); } -QLocale countryLocale(const QString& code) +QLocale +countryLocale( const QString& code ) { auto p = countryData( code ); return QLocale( p.second, p.first ); } -QLocale::Language languageForCountry(QLocale::Country country) +QLocale::Language +languageForCountry( QLocale::Country country ) { - const CountryData* p = std::find_if(country_data_table, country_data_table + country_data_size, - [c=country]( const CountryData& d ){ return d.c == c; } - ); + const CountryData* p = std::find_if( country_data_table, + country_data_table + country_data_size, + [c = country]( const CountryData& d ) { return d.c == c; } ); if ( p == country_data_table + country_data_size ) + { return QLocale::Language::AnyLanguage; + } return p->l; } -} -} // namespace +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/Lookup.h b/src/libcalamares/locale/Lookup.h index 9d1c23cd8..abcee0ed3 100644 --- a/src/libcalamares/locale/Lookup.h +++ b/src/libcalamares/locale/Lookup.h @@ -24,32 +24,32 @@ #include #include -namespace CalamaresUtils +namespace CalamaresUtils { namespace Locale { - /* All the functions in this file do lookups of locale data - * based on CLDR tables; these are lookups that you can't (easily) - * do with just QLocale (e.g. from 2-letter country code to a likely - * locale). - */ +/* All the functions in this file do lookups of locale data + * based on CLDR tables; these are lookups that you can't (easily) + * do with just QLocale (e.g. from 2-letter country code to a likely + * locale). + */ - /// @brief Map a 2-letter code to a Country, or AnyCountry if not found - DLLEXPORT QLocale::Country countryForCode( const QString& code ); - /** @brief Map a Country to a Language, or AnyLanguage if not found - * - * This is a *likely* language for the given country, based on the - * CLDR tables. For instance, this maps Belgium to Dutch. - */ - DLLEXPORT QLocale::Language languageForCountry( QLocale::Country country ); - /// @brief Map a 2-letter code to a Language, or AnyLanguage if not found - DLLEXPORT QLocale::Language languageForCountry( const QString& code ); +/// @brief Map a 2-letter code to a Country, or AnyCountry if not found +DLLEXPORT QLocale::Country countryForCode( const QString& code ); +/** @brief Map a Country to a Language, or AnyLanguage if not found + * + * This is a *likely* language for the given country, based on the + * CLDR tables. For instance, this maps Belgium to Dutch. + */ +DLLEXPORT QLocale::Language languageForCountry( QLocale::Country country ); +/// @brief Map a 2-letter code to a Language, or AnyLanguage if not found +DLLEXPORT QLocale::Language languageForCountry( const QString& code ); - /// @brief Get both Country and Language for a 2-letter code - DLLEXPORT QPair< QLocale::Country, QLocale::Language > countryData( const QString& code ); - /// @brief Get a likely locale for a 2-letter country code - DLLEXPORT QLocale countryLocale( const QString& code ); -} -} // namespace +/// @brief Get both Country and Language for a 2-letter code +DLLEXPORT QPair< QLocale::Country, QLocale::Language > countryData( const QString& code ); +/// @brief Get a likely locale for a 2-letter country code +DLLEXPORT QLocale countryLocale( const QString& code ); +} // namespace Locale +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/locale/Tests.cpp b/src/libcalamares/locale/Tests.cpp index 6fd0f3e61..b63eb9e18 100644 --- a/src/libcalamares/locale/Tests.cpp +++ b/src/libcalamares/locale/Tests.cpp @@ -19,23 +19,25 @@ #include "Tests.h" #include "locale/LabelModel.h" +#include "locale/TimeZone.h" +#include "locale/TranslatableConfiguration.h" + +#include "CalamaresVersion.h" #include "utils/Logger.h" #include QTEST_GUILESS_MAIN( LocaleTests ) -LocaleTests::LocaleTests() -{ -} +LocaleTests::LocaleTests() {} -LocaleTests::~LocaleTests() -{ -} +LocaleTests::~LocaleTests() {} void LocaleTests::initTestCase() { + // Otherwise plain get() is dubious in the TranslatableConfiguration tests + QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) ); } void @@ -82,6 +84,171 @@ LocaleTests::testEsperanto() QVERIFY( locale.language() == QLocale::Lithuanian ? locale.country() == QLocale::Lithuania : true ); QVERIFY( locale.language() != QLocale::C ); } - +#if QT_VERSION < QT_VERSION_CHECK( 5, 12, 2 ) QCOMPARE( QLocale( "eo" ).language(), QLocale::C ); +#else + QCOMPARE( QLocale( "eo" ).language(), QLocale::Esperanto ); +#endif +} + +static const QStringList& +someLanguages() +{ + static QStringList languages { "nl", "de", "da", "nb", "sr@latin", "ar", "ru" }; + return languages; +} + + +/** @brief Check consistency of test data + * Check that all the languages used in testing, are actually enabled + * in Calamares translations. + */ +void +LocaleTests::testTranslatableLanguages() +{ + QStringList availableLanguages = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';' ); + cDebug() << "Translation languages:" << availableLanguages; + for ( const auto& language : someLanguages() ) + { + // Could be QVERIFY, but then we don't see what language code fails + QCOMPARE( availableLanguages.contains( language ) ? language : QString(), language ); + } +} + +/** @brief Test strings with no translations + */ +void +LocaleTests::testTranslatableConfig1() +{ + CalamaresUtils::Locale::TranslatedString ts0; + QVERIFY( ts0.isEmpty() ); + QCOMPARE( ts0.count(), 1 ); // the empty string + + CalamaresUtils::Locale::TranslatedString ts1( "Hello" ); + QCOMPARE( ts1.count(), 1 ); + QVERIFY( !ts1.isEmpty() ); + + QCOMPARE( ts1.get(), "Hello" ); + QCOMPARE( ts1.get( QLocale( "nl" ) ), "Hello" ); + + QVariantMap map; + map.insert( "description", "description (no language)" ); + CalamaresUtils::Locale::TranslatedString ts2( map, "description" ); + QCOMPARE( ts2.count(), 1 ); + QVERIFY( !ts2.isEmpty() ); + + QCOMPARE( ts2.get(), "description (no language)" ); + QCOMPARE( ts2.get( QLocale( "nl" ) ), "description (no language)" ); +} + +/** @bref Test strings with translations. + */ +void +LocaleTests::testTranslatableConfig2() +{ + QVariantMap map; + + for ( const auto& language : someLanguages() ) + { + map.insert( QString( "description[%1]" ).arg( language ), + QString( "description (language %1)" ).arg( language ) ); + if ( language != "nl" ) + { + map.insert( QString( "name[%1]" ).arg( language ), QString( "name (language %1)" ).arg( language ) ); + } + } + + // If there's no untranslated string in the map, it is considered empty + CalamaresUtils::Locale::TranslatedString ts0( map, "description" ); + QVERIFY( ts0.isEmpty() ); // Because no untranslated string + QCOMPARE( ts0.count(), + someLanguages().count() + 1 ); // But there are entries for the translations, plus an empty string + + // expand the map with untranslated entries + map.insert( QString( "description" ), "description (no language)" ); + map.insert( QString( "name" ), "name (no language)" ); + + CalamaresUtils::Locale::TranslatedString ts1( map, "description" ); + // The +1 is because "" is always also inserted + QCOMPARE( ts1.count(), someLanguages().count() + 1 ); + QVERIFY( !ts1.isEmpty() ); + + QCOMPARE( ts1.get(), "description (no language)" ); // it wasn't set + QCOMPARE( ts1.get( QLocale( "nl" ) ), "description (language nl)" ); + for ( const auto& language : someLanguages() ) + { + // Skip Serbian (latin) because QLocale() constructed with it + // doesn't retain the @latin part. + if ( language == "sr@latin" ) + { + continue; + } + // Could be QVERIFY, but then we don't see what language code fails + QCOMPARE( ts1.get( language ) == QString( "description (language %1)" ).arg( language ) ? language : QString(), + language ); + } + QCOMPARE( ts1.get( QLocale( QLocale::Language::Serbian, QLocale::Script::LatinScript, QLocale::Country::Serbia ) ), + "description (language sr@latin)" ); + + CalamaresUtils::Locale::TranslatedString ts2( map, "name" ); + // We skipped dutch this time + QCOMPARE( ts2.count(), someLanguages().count() ); + QVERIFY( !ts2.isEmpty() ); + + // This key doesn't exist + CalamaresUtils::Locale::TranslatedString ts3( map, "front" ); + QVERIFY( ts3.isEmpty() ); + QCOMPARE( ts3.count(), 1 ); // The empty string +} + +void +LocaleTests::testSimpleZones() +{ + using namespace CalamaresUtils::Locale; + + { + TZRegion r; + QVERIFY( r.tr().isEmpty() ); + } + { + TZZone n; + QVERIFY( n.tr().isEmpty() ); + } + { + TZZone r0( "xAmsterdam" ); + QCOMPARE( r0.tr(), QStringLiteral( "xAmsterdam" ) ); + TZZone r1( r0 ); + QCOMPARE( r0.tr(), QStringLiteral( "xAmsterdam" ) ); + QCOMPARE( r1.tr(), QStringLiteral( "xAmsterdam" ) ); + TZZone r2( std::move( r0 ) ); + QCOMPARE( r2.tr(), QStringLiteral( "xAmsterdam" ) ); + QCOMPARE( r0.tr(), QString() ); + } + { + TZZone r0( nullptr ); + QVERIFY( r0.tr().isEmpty() ); + TZZone r1( r0 ); + QVERIFY( r1.tr().isEmpty() ); + TZZone r2( std::move( r0 ) ); + QVERIFY( r2.tr().isEmpty() ); + } +} + +void +LocaleTests::testComplexZones() +{ + using namespace CalamaresUtils::Locale; + + { + TZZone r0( "America/New_York" ); + TZZone r1( "America/New York" ); + + QCOMPARE( r0.tr(), r1.tr() ); + QCOMPARE( r0.tr(), QStringLiteral( "America/New York" ) ); + } + { + TZZone r( "zxc,;*_vm" ); + QVERIFY( !r.tr().isEmpty() ); + QCOMPARE( r.tr(), QStringLiteral( "zxc,;* vm" ) ); // Only _ is special + } } diff --git a/src/libcalamares/locale/Tests.h b/src/libcalamares/locale/Tests.h index be712388f..96ee48b0b 100644 --- a/src/libcalamares/locale/Tests.h +++ b/src/libcalamares/locale/Tests.h @@ -33,6 +33,13 @@ private Q_SLOTS: 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 new file mode 100644 index 000000000..58695ee0e --- /dev/null +++ b/src/libcalamares/locale/TimeZone.cpp @@ -0,0 +1,278 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "TimeZone.h" + +#include "utils/Logger.h" + +#include +#include +#include + +#include + +static const char TZ_DATA_FILE[] = "/usr/share/zoneinfo/zone.tab"; + +static double +getRightGeoLocation( QString str ) +{ + double sign = 1, num = 0.00; + + // Determine sign + if ( str.startsWith( '-' ) ) + { + sign = -1; + str.remove( 0, 1 ); + } + else if ( str.startsWith( '+' ) ) + { + str.remove( 0, 1 ); + } + + if ( str.length() == 4 || str.length() == 6 ) + { + num = str.mid( 0, 2 ).toDouble() + str.mid( 2, 2 ).toDouble() / 60.0; + } + else if ( str.length() == 5 || str.length() == 7 ) + { + num = str.mid( 0, 3 ).toDouble() + str.mid( 3, 2 ).toDouble() / 60.0; + } + + return sign * num; +} + + +namespace CalamaresUtils +{ +namespace Locale +{ + + +CStringPair::CStringPair( CStringPair&& t ) + : m_human( nullptr ) + , m_key() +{ + // My pointers are initialized to nullptr + std::swap( m_human, t.m_human ); + std::swap( m_key, t.m_key ); +} + +CStringPair::CStringPair( const CStringPair& t ) + : m_human( t.m_human ? strdup( t.m_human ) : nullptr ) + , m_key( t.m_key ) +{ +} + +/** @brief Massage an identifier into a human-readable form + * + * Makes a copy of @p s, caller must free() it. + */ +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 +{ + // NOTE: context name must match what's used in zone-extractor.py + return QObject::tr( m_human, "tz_regions" ); +} + +TZRegion::~TZRegion() +{ + qDeleteAll( m_zones ); +} + +const CStringPairList& +TZRegion::fromZoneTab() +{ + static CStringPairList zoneTab = TZRegion::fromFile( TZ_DATA_FILE ); + return zoneTab; +} + +CStringPairList +TZRegion::fromFile( const char* fileName ) +{ + CStringPairList model; + + QFile file( fileName ); + if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + return model; + } + + TZRegion* thisRegion = nullptr; + QTextStream in( &file ); + while ( !in.atEnd() ) + { + QString line = in.readLine().trimmed().split( '#', QString::KeepEmptyParts ).first().trimmed(); + if ( line.isEmpty() ) + { + continue; + } + + QStringList list = line.split( QRegExp( "[\t ]" ), QString::SkipEmptyParts ); + if ( list.size() < 3 ) + { + continue; + } + + QStringList timezoneParts = list.at( 2 ).split( '/', QString::SkipEmptyParts ); + if ( timezoneParts.size() < 2 ) + { + continue; + } + + QString region = timezoneParts.first().trimmed(); + if ( region.isEmpty() ) + { + continue; + } + + auto keyMatch = [®ion]( const CStringPair* r ) { return r->key() == region; }; + auto it = std::find_if( model.begin(), model.end(), keyMatch ); + if ( it != model.end() ) + { + thisRegion = dynamic_cast< TZRegion* >( *it ); + } + else + { + thisRegion = new TZRegion( region.toUtf8().data() ); + model.append( thisRegion ); + } + + QString countryCode = list.at( 0 ).trimmed(); + if ( countryCode.size() != 2 ) + { + continue; + } + + timezoneParts.removeFirst(); + thisRegion->m_zones.append( + new TZZone( region, timezoneParts.join( '/' ).toUtf8().constData(), countryCode, list.at( 1 ) ) ); + } + + auto sorter = []( const CStringPair* l, const CStringPair* r ) { return *l < *r; }; + std::sort( model.begin(), model.end(), sorter ); + for ( auto& it : model ) + { + TZRegion* r = dynamic_cast< TZRegion* >( it ); + if ( r ) + { + std::sort( r->m_zones.begin(), r->m_zones.end(), sorter ); + } + } + + return model; +} + +TZZone::TZZone( const QString& region, const char* zoneName, const QString& country, QString position ) + : CStringPair( zoneName ) + , m_region( region ) + , m_country( country ) +{ + int cooSplitPos = position.indexOf( QRegExp( "[-+]" ), 1 ); + if ( cooSplitPos > 0 ) + { + m_latitude = getRightGeoLocation( position.mid( 0, cooSplitPos ) ); + m_longitude = getRightGeoLocation( position.mid( cooSplitPos ) ); + } +} + +QString +TZZone::tr() const +{ + // NOTE: context name must match what's used in zone-extractor.py + return QObject::tr( m_human, "tz_names" ); +} + + +CStringListModel::CStringListModel( CStringPairList l ) + : m_list( l ) +{ +} + +CStringListModel::~CStringListModel() {} + +int +CStringListModel::rowCount( const QModelIndex& ) const +{ + return m_list.count(); +} + +QVariant +CStringListModel::data( const QModelIndex& index, int role ) const +{ + if ( ( role != Qt::DisplayRole ) && ( role != Qt::UserRole ) ) + { + return QVariant(); + } + + if ( !index.isValid() ) + { + return QVariant(); + } + + const auto* item = m_list.at( index.row() ); + return item ? ( role == Qt::DisplayRole ? item->tr() : item->key() ) : QVariant(); +} + +const CStringPair* +CStringListModel::item( int index ) const +{ + if ( ( index < 0 ) || ( index >= m_list.count() ) ) + { + return nullptr; + } + return m_list[ index ]; +} + +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TimeZone.h b/src/libcalamares/locale/TimeZone.h new file mode 100644 index 000000000..3345e61f8 --- /dev/null +++ b/src/libcalamares/locale/TimeZone.h @@ -0,0 +1,160 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef LOCALE_TIMEZONE_H +#define LOCALE_TIMEZONE_H + +#include "DllMacro.h" + +#include "utils/Logger.h" + +#include +#include +#include + +#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 there is API that needs + * C-style strings. + */ +class CStringPair +{ +public: + /// @brief An empty pair + CStringPair() {} + /// @brief Given an identifier, create the pair + explicit CStringPair( const char* s1 ); + CStringPair( CStringPair&& t ); + CStringPair( const CStringPair& ); + virtual ~CStringPair(); + + /// @brief Give the localized human-readable form + virtual QString tr() const = 0; + QString key() const { return m_key; } + + bool operator<( const CStringPair& other ) const { return m_key < other.m_key; } + +protected: + char* m_human = nullptr; + QString m_key; +}; + +class CStringPairList : public QList< CStringPair* > +{ +public: + template < typename T > + T* find( const QString& key ) const + { + for ( auto* p : *this ) + { + if ( p->key() == key ) + { + return dynamic_cast< T* >( p ); + } + } + return nullptr; + } +}; + +/// @brief A pair of strings for timezone regions (e.g. "America") +class TZRegion : public CStringPair +{ +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 +{ +public: + using CStringPair::CStringPair; + QString tr() const override; + + TZZone( const QString& region, const char* zoneName, const QString& country, QString position ); + + QString region() const { return m_region; } + QString zone() const { return key(); } + QString country() const { return m_country; } + double latitude() const { return m_latitude; } + double longitude() const { return m_longitude; } + +protected: + QString m_region; + QString m_country; + double m_latitude = 0.0, m_longitude = 0.0; +}; + +class CStringListModel : public QAbstractListModel +{ +public: + /// @brief Create empty model + CStringListModel(); + /// @brief Create model from list (non-owning) + CStringListModel( CStringPairList ); + virtual ~CStringListModel() override; + + int rowCount( const QModelIndex& parent ) const override; + + QVariant data( const QModelIndex& index, int role ) const override; + + const CStringPair* item( int index ) const; + +private: + CStringPairList m_list; +}; + +} // namespace Locale +} // namespace CalamaresUtils + +#endif // LOCALE_TIMEZONE_H diff --git a/src/libcalamares/locale/TranslatableConfiguration.cpp b/src/libcalamares/locale/TranslatableConfiguration.cpp new file mode 100644 index 000000000..bc39c398e --- /dev/null +++ b/src/libcalamares/locale/TranslatableConfiguration.cpp @@ -0,0 +1,107 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "TranslatableConfiguration.h" + +#include "LabelModel.h" + +#include "utils/Logger.h" +#include "utils/Variant.h" + +#include +#include + +namespace CalamaresUtils +{ +namespace Locale +{ +TranslatedString::TranslatedString( const QString& string ) +{ + m_strings[ QString() ] = string; +} +TranslatedString::TranslatedString( const QVariantMap& map, const QString& key ) +{ + // Get the un-decorated value for the key + QString value = CalamaresUtils::getString( map, key ); + m_strings[ QString() ] = value; + + for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) + { + QString subkey = it.key(); + if ( subkey == key ) + { + // Already obtained, above + } + else if ( subkey.startsWith( key ) ) + { + QRegularExpressionMatch match; + if ( subkey.indexOf( QRegularExpression( "\\[([a-zA-Z_@]*)\\]" ), 0, &match ) > 0 ) + { + QString language = match.captured( 1 ); + m_strings[ language ] = it.value().toString(); + } + } + } +} + +QString +TranslatedString::get() const +{ + return get( QLocale() ); +} + +QString +TranslatedString::get( const QLocale& locale ) const +{ + QString localeName = locale.name(); + // Special case, sr@latin doesn't have the @latin reflected in the name + if ( locale.language() == QLocale::Language::Serbian && locale.script() == QLocale::Script::LatinScript ) + { + localeName = QStringLiteral( "sr@latin" ); + } + + if ( m_strings.contains( localeName ) ) + { + return m_strings[ localeName ]; + } + int index = localeName.indexOf( '@' ); + if ( index > 0 ) + { + localeName.truncate( index ); + if ( m_strings.contains( localeName ) ) + { + return m_strings[ localeName ]; + } + } + + index = localeName.indexOf( '_' ); + if ( index > 0 ) + { + localeName.truncate( index ); + if ( m_strings.contains( localeName ) ) + { + return m_strings[ localeName ]; + } + } + + return m_strings[ QString() ]; +} + + +} // namespace Locale +} // namespace CalamaresUtils diff --git a/src/libcalamares/locale/TranslatableConfiguration.h b/src/libcalamares/locale/TranslatableConfiguration.h new file mode 100644 index 000000000..45679bce0 --- /dev/null +++ b/src/libcalamares/locale/TranslatableConfiguration.h @@ -0,0 +1,80 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef LOCALE_TRANSLATABLECONFIGURATION_H +#define LOCALE_TRANSLATABLECONFIGURATION_H + +#include "DllMacro.h" + +#include +#include +#include + +namespace CalamaresUtils +{ +namespace Locale +{ +/** @brief A human-readable string from a configuration file + * + * The configuration files can contain human-readable strings, + * but those need their own translations and are not supported + * by QObject::tr or anything else. + */ +class DLLEXPORT TranslatedString +{ +public: + /** @brief Get all the translations connected to @p key + */ + TranslatedString( const QVariantMap& map, const QString& key ); + /** @brief Not-actually-translated string. + */ + TranslatedString( const QString& string ); + /// @brief Empty string + TranslatedString() + : TranslatedString( QString() ) + { + } + + /** @brief How many strings (translations) are there? + * + * This is always at least 1 (for the untranslated string), + * but may be more than 1 even when isEmpty() is true -- + * if there is no untranslated version, for instance. + */ + int count() const { return m_strings.count(); } + /** @brief Consider this string empty? + * + * Only the state of the untranslated string is considered, + * so count() may be more than 1 even while the string is empty. + */ + bool isEmpty() const { return m_strings[ QString() ].isEmpty(); } + + /// @brief Gets the string in the current locale + QString get() const; + + /// @brief Gets the string from the given locale + QString get( const QLocale& ) const; + +private: + // Maps locale name to human-readable string, "" is English + QMap< QString, QString > m_strings; +}; +} // namespace Locale +} // namespace CalamaresUtils + +#endif diff --git a/src/libcalamares/locale/ZoneData_p.cxxtr b/src/libcalamares/locale/ZoneData_p.cxxtr new file mode 100644 index 000000000..b73d17ad3 --- /dev/null +++ b/src/libcalamares/locale/ZoneData_p.cxxtr @@ -0,0 +1,478 @@ +/* GENERATED FILE DO NOT EDIT +* +* === This file is part of Calamares - === +* +* This file is derived from zone.tab, which has its own copyright statement: +* +* This file is in the public domain, so clarified as of +* 2009-05-17 by Arthur David Olson. +* +* From Paul Eggert (2018-06-27): +* This file is intended as a backward-compatibility aid for older programs. +* New programs should use zone1970.tab. This file is like zone1970.tab (see +* zone1970.tab's comments), but with the following additional restrictions: +* +* 1. This file contains only ASCII characters. +* 2. The first data column contains exactly one country code. +* +*/ + +/** THIS FILE EXISTS ONLY FOR TRANSLATIONS PURPOSES **/ + +// *INDENT-OFF* +// clang-format off +/* This returns a reference to local, which is a terrible idea. + * Good thing it's not meant to be compiled. + */ +static const QStringList& tz_regions_table() +{ + return QStringList { + QObject::tr("Africa", "tz_regions"), + QObject::tr("America", "tz_regions"), + QObject::tr("Antarctica", "tz_regions"), + QObject::tr("Arctic", "tz_regions"), + QObject::tr("Asia", "tz_regions"), + QObject::tr("Atlantic", "tz_regions"), + QObject::tr("Australia", "tz_regions"), + QObject::tr("Europe", "tz_regions"), + QObject::tr("Indian", "tz_regions"), + QObject::tr("Pacific", "tz_regions"), + QString() + }; +} + +/* This returns a reference to local, which is a terrible idea. + * Good thing it's not meant to be compiled. + */ +static const QStringList& tz_names_table() +{ + return QStringList { + QObject::tr("Abidjan", "tz_names"), + QObject::tr("Accra", "tz_names"), + QObject::tr("Adak", "tz_names"), + QObject::tr("Addis Ababa", "tz_names"), + QObject::tr("Adelaide", "tz_names"), + QObject::tr("Aden", "tz_names"), + QObject::tr("Algiers", "tz_names"), + QObject::tr("Almaty", "tz_names"), + QObject::tr("Amman", "tz_names"), + QObject::tr("Amsterdam", "tz_names"), + QObject::tr("Anadyr", "tz_names"), + QObject::tr("Anchorage", "tz_names"), + QObject::tr("Andorra", "tz_names"), + QObject::tr("Anguilla", "tz_names"), + QObject::tr("Antananarivo", "tz_names"), + QObject::tr("Antigua", "tz_names"), + QObject::tr("Apia", "tz_names"), + QObject::tr("Aqtau", "tz_names"), + QObject::tr("Aqtobe", "tz_names"), + QObject::tr("Araguaina", "tz_names"), + QObject::tr("Argentina/Buenos Aires", "tz_names"), + QObject::tr("Argentina/Catamarca", "tz_names"), + QObject::tr("Argentina/Cordoba", "tz_names"), + QObject::tr("Argentina/Jujuy", "tz_names"), + QObject::tr("Argentina/La Rioja", "tz_names"), + QObject::tr("Argentina/Mendoza", "tz_names"), + QObject::tr("Argentina/Rio Gallegos", "tz_names"), + QObject::tr("Argentina/Salta", "tz_names"), + QObject::tr("Argentina/San Juan", "tz_names"), + QObject::tr("Argentina/San Luis", "tz_names"), + QObject::tr("Argentina/Tucuman", "tz_names"), + QObject::tr("Argentina/Ushuaia", "tz_names"), + QObject::tr("Aruba", "tz_names"), + QObject::tr("Ashgabat", "tz_names"), + QObject::tr("Asmara", "tz_names"), + QObject::tr("Astrakhan", "tz_names"), + QObject::tr("Asuncion", "tz_names"), + QObject::tr("Athens", "tz_names"), + QObject::tr("Atikokan", "tz_names"), + QObject::tr("Atyrau", "tz_names"), + QObject::tr("Auckland", "tz_names"), + QObject::tr("Azores", "tz_names"), + QObject::tr("Baghdad", "tz_names"), + QObject::tr("Bahia", "tz_names"), + QObject::tr("Bahia Banderas", "tz_names"), + QObject::tr("Bahrain", "tz_names"), + QObject::tr("Baku", "tz_names"), + QObject::tr("Bamako", "tz_names"), + QObject::tr("Bangkok", "tz_names"), + QObject::tr("Bangui", "tz_names"), + QObject::tr("Banjul", "tz_names"), + QObject::tr("Barbados", "tz_names"), + QObject::tr("Barnaul", "tz_names"), + QObject::tr("Beirut", "tz_names"), + QObject::tr("Belem", "tz_names"), + QObject::tr("Belgrade", "tz_names"), + QObject::tr("Belize", "tz_names"), + QObject::tr("Berlin", "tz_names"), + QObject::tr("Bermuda", "tz_names"), + QObject::tr("Bishkek", "tz_names"), + QObject::tr("Bissau", "tz_names"), + QObject::tr("Blanc-Sablon", "tz_names"), + QObject::tr("Blantyre", "tz_names"), + QObject::tr("Boa Vista", "tz_names"), + QObject::tr("Bogota", "tz_names"), + QObject::tr("Boise", "tz_names"), + QObject::tr("Bougainville", "tz_names"), + QObject::tr("Bratislava", "tz_names"), + QObject::tr("Brazzaville", "tz_names"), + QObject::tr("Brisbane", "tz_names"), + QObject::tr("Broken Hill", "tz_names"), + QObject::tr("Brunei", "tz_names"), + QObject::tr("Brussels", "tz_names"), + QObject::tr("Bucharest", "tz_names"), + QObject::tr("Budapest", "tz_names"), + QObject::tr("Bujumbura", "tz_names"), + QObject::tr("Busingen", "tz_names"), + QObject::tr("Cairo", "tz_names"), + QObject::tr("Cambridge Bay", "tz_names"), + QObject::tr("Campo Grande", "tz_names"), + QObject::tr("Canary", "tz_names"), + QObject::tr("Cancun", "tz_names"), + QObject::tr("Cape Verde", "tz_names"), + QObject::tr("Caracas", "tz_names"), + QObject::tr("Casablanca", "tz_names"), + QObject::tr("Casey", "tz_names"), + QObject::tr("Cayenne", "tz_names"), + QObject::tr("Cayman", "tz_names"), + QObject::tr("Ceuta", "tz_names"), + QObject::tr("Chagos", "tz_names"), + QObject::tr("Chatham", "tz_names"), + QObject::tr("Chicago", "tz_names"), + QObject::tr("Chihuahua", "tz_names"), + QObject::tr("Chisinau", "tz_names"), + QObject::tr("Chita", "tz_names"), + QObject::tr("Choibalsan", "tz_names"), + QObject::tr("Christmas", "tz_names"), + QObject::tr("Chuuk", "tz_names"), + QObject::tr("Cocos", "tz_names"), + QObject::tr("Colombo", "tz_names"), + QObject::tr("Comoro", "tz_names"), + QObject::tr("Conakry", "tz_names"), + QObject::tr("Copenhagen", "tz_names"), + QObject::tr("Costa Rica", "tz_names"), + QObject::tr("Creston", "tz_names"), + QObject::tr("Cuiaba", "tz_names"), + QObject::tr("Curacao", "tz_names"), + QObject::tr("Currie", "tz_names"), + QObject::tr("Dakar", "tz_names"), + QObject::tr("Damascus", "tz_names"), + QObject::tr("Danmarkshavn", "tz_names"), + QObject::tr("Dar es Salaam", "tz_names"), + QObject::tr("Darwin", "tz_names"), + QObject::tr("Davis", "tz_names"), + QObject::tr("Dawson", "tz_names"), + QObject::tr("Dawson Creek", "tz_names"), + QObject::tr("Denver", "tz_names"), + QObject::tr("Detroit", "tz_names"), + QObject::tr("Dhaka", "tz_names"), + QObject::tr("Dili", "tz_names"), + QObject::tr("Djibouti", "tz_names"), + QObject::tr("Dominica", "tz_names"), + QObject::tr("Douala", "tz_names"), + QObject::tr("Dubai", "tz_names"), + QObject::tr("Dublin", "tz_names"), + QObject::tr("DumontDUrville", "tz_names"), + QObject::tr("Dushanbe", "tz_names"), + QObject::tr("Easter", "tz_names"), + QObject::tr("Edmonton", "tz_names"), + QObject::tr("Efate", "tz_names"), + QObject::tr("Eirunepe", "tz_names"), + QObject::tr("El Aaiun", "tz_names"), + QObject::tr("El Salvador", "tz_names"), + QObject::tr("Enderbury", "tz_names"), + QObject::tr("Eucla", "tz_names"), + QObject::tr("Fakaofo", "tz_names"), + QObject::tr("Famagusta", "tz_names"), + QObject::tr("Faroe", "tz_names"), + QObject::tr("Fiji", "tz_names"), + QObject::tr("Fort Nelson", "tz_names"), + QObject::tr("Fortaleza", "tz_names"), + QObject::tr("Freetown", "tz_names"), + QObject::tr("Funafuti", "tz_names"), + QObject::tr("Gaborone", "tz_names"), + QObject::tr("Galapagos", "tz_names"), + QObject::tr("Gambier", "tz_names"), + QObject::tr("Gaza", "tz_names"), + QObject::tr("Gibraltar", "tz_names"), + QObject::tr("Glace Bay", "tz_names"), + QObject::tr("Godthab", "tz_names"), + QObject::tr("Goose Bay", "tz_names"), + QObject::tr("Grand Turk", "tz_names"), + QObject::tr("Grenada", "tz_names"), + QObject::tr("Guadalcanal", "tz_names"), + QObject::tr("Guadeloupe", "tz_names"), + QObject::tr("Guam", "tz_names"), + QObject::tr("Guatemala", "tz_names"), + QObject::tr("Guayaquil", "tz_names"), + QObject::tr("Guernsey", "tz_names"), + QObject::tr("Guyana", "tz_names"), + QObject::tr("Halifax", "tz_names"), + QObject::tr("Harare", "tz_names"), + QObject::tr("Havana", "tz_names"), + QObject::tr("Hebron", "tz_names"), + QObject::tr("Helsinki", "tz_names"), + QObject::tr("Hermosillo", "tz_names"), + QObject::tr("Ho Chi Minh", "tz_names"), + QObject::tr("Hobart", "tz_names"), + QObject::tr("Hong Kong", "tz_names"), + QObject::tr("Honolulu", "tz_names"), + QObject::tr("Hovd", "tz_names"), + QObject::tr("Indiana/Indianapolis", "tz_names"), + QObject::tr("Indiana/Knox", "tz_names"), + QObject::tr("Indiana/Marengo", "tz_names"), + QObject::tr("Indiana/Petersburg", "tz_names"), + QObject::tr("Indiana/Tell City", "tz_names"), + QObject::tr("Indiana/Vevay", "tz_names"), + QObject::tr("Indiana/Vincennes", "tz_names"), + QObject::tr("Indiana/Winamac", "tz_names"), + QObject::tr("Inuvik", "tz_names"), + QObject::tr("Iqaluit", "tz_names"), + QObject::tr("Irkutsk", "tz_names"), + QObject::tr("Isle of Man", "tz_names"), + QObject::tr("Istanbul", "tz_names"), + QObject::tr("Jakarta", "tz_names"), + QObject::tr("Jamaica", "tz_names"), + QObject::tr("Jayapura", "tz_names"), + QObject::tr("Jersey", "tz_names"), + QObject::tr("Jerusalem", "tz_names"), + QObject::tr("Johannesburg", "tz_names"), + QObject::tr("Juba", "tz_names"), + QObject::tr("Juneau", "tz_names"), + QObject::tr("Kabul", "tz_names"), + QObject::tr("Kaliningrad", "tz_names"), + QObject::tr("Kamchatka", "tz_names"), + QObject::tr("Kampala", "tz_names"), + QObject::tr("Karachi", "tz_names"), + QObject::tr("Kathmandu", "tz_names"), + QObject::tr("Kentucky/Louisville", "tz_names"), + QObject::tr("Kentucky/Monticello", "tz_names"), + QObject::tr("Kerguelen", "tz_names"), + QObject::tr("Khandyga", "tz_names"), + QObject::tr("Khartoum", "tz_names"), + QObject::tr("Kiev", "tz_names"), + QObject::tr("Kigali", "tz_names"), + QObject::tr("Kinshasa", "tz_names"), + QObject::tr("Kiritimati", "tz_names"), + QObject::tr("Kirov", "tz_names"), + QObject::tr("Kolkata", "tz_names"), + QObject::tr("Kosrae", "tz_names"), + QObject::tr("Kralendijk", "tz_names"), + QObject::tr("Krasnoyarsk", "tz_names"), + QObject::tr("Kuala Lumpur", "tz_names"), + QObject::tr("Kuching", "tz_names"), + QObject::tr("Kuwait", "tz_names"), + QObject::tr("Kwajalein", "tz_names"), + QObject::tr("La Paz", "tz_names"), + QObject::tr("Lagos", "tz_names"), + QObject::tr("Libreville", "tz_names"), + QObject::tr("Lima", "tz_names"), + QObject::tr("Lindeman", "tz_names"), + QObject::tr("Lisbon", "tz_names"), + QObject::tr("Ljubljana", "tz_names"), + QObject::tr("Lome", "tz_names"), + QObject::tr("London", "tz_names"), + QObject::tr("Longyearbyen", "tz_names"), + QObject::tr("Lord Howe", "tz_names"), + QObject::tr("Los Angeles", "tz_names"), + QObject::tr("Lower Princes", "tz_names"), + QObject::tr("Luanda", "tz_names"), + QObject::tr("Lubumbashi", "tz_names"), + QObject::tr("Lusaka", "tz_names"), + QObject::tr("Luxembourg", "tz_names"), + QObject::tr("Macau", "tz_names"), + QObject::tr("Maceio", "tz_names"), + QObject::tr("Macquarie", "tz_names"), + QObject::tr("Madeira", "tz_names"), + QObject::tr("Madrid", "tz_names"), + QObject::tr("Magadan", "tz_names"), + QObject::tr("Mahe", "tz_names"), + QObject::tr("Majuro", "tz_names"), + QObject::tr("Makassar", "tz_names"), + QObject::tr("Malabo", "tz_names"), + QObject::tr("Maldives", "tz_names"), + QObject::tr("Malta", "tz_names"), + QObject::tr("Managua", "tz_names"), + QObject::tr("Manaus", "tz_names"), + QObject::tr("Manila", "tz_names"), + QObject::tr("Maputo", "tz_names"), + QObject::tr("Mariehamn", "tz_names"), + QObject::tr("Marigot", "tz_names"), + QObject::tr("Marquesas", "tz_names"), + QObject::tr("Martinique", "tz_names"), + QObject::tr("Maseru", "tz_names"), + QObject::tr("Matamoros", "tz_names"), + QObject::tr("Mauritius", "tz_names"), + QObject::tr("Mawson", "tz_names"), + QObject::tr("Mayotte", "tz_names"), + QObject::tr("Mazatlan", "tz_names"), + QObject::tr("Mbabane", "tz_names"), + QObject::tr("McMurdo", "tz_names"), + QObject::tr("Melbourne", "tz_names"), + QObject::tr("Menominee", "tz_names"), + QObject::tr("Merida", "tz_names"), + QObject::tr("Metlakatla", "tz_names"), + QObject::tr("Mexico City", "tz_names"), + QObject::tr("Midway", "tz_names"), + QObject::tr("Minsk", "tz_names"), + QObject::tr("Miquelon", "tz_names"), + QObject::tr("Mogadishu", "tz_names"), + QObject::tr("Monaco", "tz_names"), + QObject::tr("Moncton", "tz_names"), + QObject::tr("Monrovia", "tz_names"), + QObject::tr("Monterrey", "tz_names"), + QObject::tr("Montevideo", "tz_names"), + QObject::tr("Montserrat", "tz_names"), + QObject::tr("Moscow", "tz_names"), + QObject::tr("Muscat", "tz_names"), + QObject::tr("Nairobi", "tz_names"), + QObject::tr("Nassau", "tz_names"), + QObject::tr("Nauru", "tz_names"), + QObject::tr("Ndjamena", "tz_names"), + QObject::tr("New York", "tz_names"), + QObject::tr("Niamey", "tz_names"), + QObject::tr("Nicosia", "tz_names"), + QObject::tr("Nipigon", "tz_names"), + QObject::tr("Niue", "tz_names"), + QObject::tr("Nome", "tz_names"), + QObject::tr("Norfolk", "tz_names"), + QObject::tr("Noronha", "tz_names"), + QObject::tr("North Dakota/Beulah", "tz_names"), + QObject::tr("North Dakota/Center", "tz_names"), + QObject::tr("North Dakota/New Salem", "tz_names"), + QObject::tr("Nouakchott", "tz_names"), + QObject::tr("Noumea", "tz_names"), + QObject::tr("Novokuznetsk", "tz_names"), + QObject::tr("Novosibirsk", "tz_names"), + QObject::tr("Ojinaga", "tz_names"), + QObject::tr("Omsk", "tz_names"), + QObject::tr("Oral", "tz_names"), + QObject::tr("Oslo", "tz_names"), + QObject::tr("Ouagadougou", "tz_names"), + QObject::tr("Pago Pago", "tz_names"), + QObject::tr("Palau", "tz_names"), + QObject::tr("Palmer", "tz_names"), + QObject::tr("Panama", "tz_names"), + QObject::tr("Pangnirtung", "tz_names"), + QObject::tr("Paramaribo", "tz_names"), + QObject::tr("Paris", "tz_names"), + QObject::tr("Perth", "tz_names"), + QObject::tr("Phnom Penh", "tz_names"), + QObject::tr("Phoenix", "tz_names"), + QObject::tr("Pitcairn", "tz_names"), + QObject::tr("Podgorica", "tz_names"), + QObject::tr("Pohnpei", "tz_names"), + QObject::tr("Pontianak", "tz_names"), + QObject::tr("Port Moresby", "tz_names"), + QObject::tr("Port of Spain", "tz_names"), + QObject::tr("Port-au-Prince", "tz_names"), + QObject::tr("Porto Velho", "tz_names"), + QObject::tr("Porto-Novo", "tz_names"), + QObject::tr("Prague", "tz_names"), + QObject::tr("Puerto Rico", "tz_names"), + QObject::tr("Punta Arenas", "tz_names"), + QObject::tr("Pyongyang", "tz_names"), + QObject::tr("Qatar", "tz_names"), + QObject::tr("Qostanay", "tz_names"), + QObject::tr("Qyzylorda", "tz_names"), + QObject::tr("Rainy River", "tz_names"), + QObject::tr("Rankin Inlet", "tz_names"), + QObject::tr("Rarotonga", "tz_names"), + QObject::tr("Recife", "tz_names"), + QObject::tr("Regina", "tz_names"), + QObject::tr("Resolute", "tz_names"), + QObject::tr("Reunion", "tz_names"), + QObject::tr("Reykjavik", "tz_names"), + QObject::tr("Riga", "tz_names"), + QObject::tr("Rio Branco", "tz_names"), + QObject::tr("Riyadh", "tz_names"), + QObject::tr("Rome", "tz_names"), + QObject::tr("Rothera", "tz_names"), + QObject::tr("Saipan", "tz_names"), + QObject::tr("Sakhalin", "tz_names"), + QObject::tr("Samara", "tz_names"), + QObject::tr("Samarkand", "tz_names"), + QObject::tr("San Marino", "tz_names"), + QObject::tr("Santarem", "tz_names"), + QObject::tr("Santiago", "tz_names"), + QObject::tr("Santo Domingo", "tz_names"), + QObject::tr("Sao Paulo", "tz_names"), + QObject::tr("Sao Tome", "tz_names"), + QObject::tr("Sarajevo", "tz_names"), + QObject::tr("Saratov", "tz_names"), + QObject::tr("Scoresbysund", "tz_names"), + QObject::tr("Seoul", "tz_names"), + QObject::tr("Shanghai", "tz_names"), + QObject::tr("Simferopol", "tz_names"), + QObject::tr("Singapore", "tz_names"), + QObject::tr("Sitka", "tz_names"), + QObject::tr("Skopje", "tz_names"), + QObject::tr("Sofia", "tz_names"), + QObject::tr("South Georgia", "tz_names"), + QObject::tr("Srednekolymsk", "tz_names"), + QObject::tr("St Barthelemy", "tz_names"), + QObject::tr("St Helena", "tz_names"), + QObject::tr("St Johns", "tz_names"), + QObject::tr("St Kitts", "tz_names"), + QObject::tr("St Lucia", "tz_names"), + QObject::tr("St Thomas", "tz_names"), + QObject::tr("St Vincent", "tz_names"), + QObject::tr("Stanley", "tz_names"), + QObject::tr("Stockholm", "tz_names"), + QObject::tr("Swift Current", "tz_names"), + QObject::tr("Sydney", "tz_names"), + QObject::tr("Syowa", "tz_names"), + QObject::tr("Tahiti", "tz_names"), + QObject::tr("Taipei", "tz_names"), + QObject::tr("Tallinn", "tz_names"), + QObject::tr("Tarawa", "tz_names"), + QObject::tr("Tashkent", "tz_names"), + QObject::tr("Tbilisi", "tz_names"), + QObject::tr("Tegucigalpa", "tz_names"), + QObject::tr("Tehran", "tz_names"), + QObject::tr("Thimphu", "tz_names"), + QObject::tr("Thule", "tz_names"), + QObject::tr("Thunder Bay", "tz_names"), + QObject::tr("Tijuana", "tz_names"), + QObject::tr("Tirane", "tz_names"), + QObject::tr("Tokyo", "tz_names"), + QObject::tr("Tomsk", "tz_names"), + QObject::tr("Tongatapu", "tz_names"), + QObject::tr("Toronto", "tz_names"), + QObject::tr("Tortola", "tz_names"), + QObject::tr("Tripoli", "tz_names"), + QObject::tr("Troll", "tz_names"), + QObject::tr("Tunis", "tz_names"), + QObject::tr("Ulaanbaatar", "tz_names"), + QObject::tr("Ulyanovsk", "tz_names"), + QObject::tr("Urumqi", "tz_names"), + QObject::tr("Ust-Nera", "tz_names"), + QObject::tr("Uzhgorod", "tz_names"), + QObject::tr("Vaduz", "tz_names"), + QObject::tr("Vancouver", "tz_names"), + QObject::tr("Vatican", "tz_names"), + QObject::tr("Vienna", "tz_names"), + QObject::tr("Vientiane", "tz_names"), + QObject::tr("Vilnius", "tz_names"), + QObject::tr("Vladivostok", "tz_names"), + QObject::tr("Volgograd", "tz_names"), + QObject::tr("Vostok", "tz_names"), + QObject::tr("Wake", "tz_names"), + QObject::tr("Wallis", "tz_names"), + QObject::tr("Warsaw", "tz_names"), + QObject::tr("Whitehorse", "tz_names"), + QObject::tr("Windhoek", "tz_names"), + QObject::tr("Winnipeg", "tz_names"), + QObject::tr("Yakutat", "tz_names"), + QObject::tr("Yakutsk", "tz_names"), + QObject::tr("Yangon", "tz_names"), + QObject::tr("Yekaterinburg", "tz_names"), + QObject::tr("Yellowknife", "tz_names"), + QObject::tr("Yerevan", "tz_names"), + QObject::tr("Zagreb", "tz_names"), + QObject::tr("Zaporozhye", "tz_names"), + QObject::tr("Zurich", "tz_names"), + QString() + }; +} + diff --git a/src/libcalamares/locale/cldr-extractor.py b/src/libcalamares/locale/cldr-extractor.py index 4e279337b..aae71ed1d 100644 --- a/src/libcalamares/locale/cldr-extractor.py +++ b/src/libcalamares/locale/cldr-extractor.py @@ -225,12 +225,14 @@ cpp_header_comment = """/* GENERATED FILE DO NOT EDIT * Unicode Data Files ("DATA FILES") include all data files under the directories: * https://www.unicode.org/Public/ * C. Terms of Use -* 2. Any person is hereby authorized, without fee, to view, use, reproduce, -* and distribute all documents and files, subject to the Terms and +* 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. */ // BEGIN Generated from CLDR data +// *INDENT-OFF* +// clang-format off """ diff --git a/src/libcalamares/locale/zone-extractor.py b/src/libcalamares/locale/zone-extractor.py new file mode 100644 index 000000000..92165d824 --- /dev/null +++ b/src/libcalamares/locale/zone-extractor.py @@ -0,0 +1,108 @@ +#! /usr/bin/env python3 +# +# === This file is part of Calamares - === +# +# Python3 script to scrape some data out of zoneinfo/zone.tab. +# +### 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 zoneinfo/zone.tab. + +To use this script, you must have a zone.tab in a standard location, +/usr/share/zoneinfo/zone.tab (this is usual on FreeBSD and Linux). + +Prints out a few tables of zone names for use in translations. +""" + +def scrape_file(file, regionset, zoneset): + for line in file.readlines(): + if line.startswith("#"): + continue + parts = line.split("\t") + if len(parts) < 3: + continue + + zoneid = parts[2] + if not "/" in zoneid: + continue + + region, zone = zoneid.split("/", 1) + + zone = zone.strip().replace("_", " ") + + regionset.add(region) + assert(zone not in zoneset) + zoneset.add(zone) + +def write_set(file, label, set): + file.write("/* This returns a reference to local, which is a terrible idea.\n * Good thing it's not meant to be compiled.\n */\n") + # Note {{ is an escaped { for Python string formatting + file.write("static const QStringList& {!s}_table()\n{{\n\treturn QStringList {{\n".format(label)) + for x in sorted(set): + file.write("""\t\tQObject::tr("{!s}", "{!s}"),\n""".format(x, label)) + file.write("\t\tQString()\n\t};\n}\n\n") + +cpp_header_comment = """/* GENERATED FILE DO NOT EDIT +* +* === This file is part of Calamares - === +* +* This file is derived from zone.tab, which has its own copyright statement: +* +* This file is in the public domain, so clarified as of +* 2009-05-17 by Arthur David Olson. +* +* From Paul Eggert (2018-06-27): +* This file is intended as a backward-compatibility aid for older programs. +* New programs should use zone1970.tab. This file is like zone1970.tab (see +* zone1970.tab's comments), but with the following additional restrictions: +* +* 1. This file contains only ASCII characters. +* 2. The first data column contains exactly one country code. +* +*/ + +/** THIS FILE EXISTS ONLY FOR TRANSLATIONS PURPOSES **/ + +// *INDENT-OFF* +// clang-format off +""" + +if __name__ == "__main__": + regions=set() + zones=set() + with open("/usr/share/zoneinfo/zone.tab", "r") as f: + scrape_file(f, regions, zones) + with open("ZoneData_p.cpp", "w") as f: + f.write(cpp_header_comment) + write_set(f, "tz_regions", regions) + write_set(f, "tz_names", zones) + diff --git a/src/libcalamares/modulesystem/Actions.h b/src/libcalamares/modulesystem/Actions.h index 069937235..e1be0b867 100644 --- a/src/libcalamares/modulesystem/Actions.h +++ b/src/libcalamares/modulesystem/Actions.h @@ -22,13 +22,16 @@ namespace Calamares { +namespace ModuleSystem +{ -enum class ModuleAction : char +enum class Action : char { Show, Exec }; -} // namespace +} // namespace ModuleSystem +} // namespace Calamares #endif diff --git a/src/libcalamares/modulesystem/InstanceKey.h b/src/libcalamares/modulesystem/InstanceKey.h new file mode 100644 index 000000000..ad0fae0e7 --- /dev/null +++ b/src/libcalamares/modulesystem/InstanceKey.h @@ -0,0 +1,115 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014-2015, Teo Mrnjavac + * Copyright 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 . + */ +#ifndef MODULESYSTEM_INSTANCEKEY_H +#define MODULESYSTEM_INSTANCEKEY_H + +#include +#include +#include +#include + +namespace Logger +{ +class CLog; +} + +namespace Calamares +{ +namespace ModuleSystem +{ + +/** @brief A module instance's key (`module@id`) + * + * A module instance is identified by both the module's name + * (a Calamares module, e.g. `users`) and an instance id. + * Usually, the instance id is the same as the module name + * and the whole module instance key is `users@users`, but + * it is possible to use the same module more than once + * and then you distinguish those module instances by their + * secondary id (e.g. `users@one`). + * + * This is supported by the *instances* configuration entry + * in `settings.conf`. + */ +class InstanceKey : public QPair< QString, QString > +{ +public: + /// @brief Create an instance key from explicit module and id. + InstanceKey( const QString& module, const QString& id ) + : QPair( module, id ) + { + if ( second.isEmpty() ) + { + second = first; + } + validate(); + } + + /// @brief Create unusual, invalid instance key + InstanceKey() + : QPair( QString(), QString() ) + { + } + + /// @brief A valid module has both name and id + bool isValid() const { return !first.isEmpty() && !second.isEmpty(); } + + /// @brief A custom module has a non-default id + bool isCustom() const { return first != second; } + + QString module() const { return first; } + QString id() const { return second; } + + /// @brief Create instance key from stringified version + static InstanceKey fromString( const QString& s ) + { + QStringList moduleEntrySplit = s.split( '@' ); + if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 ) + { + return InstanceKey(); + } + // For length 1, first == last + return InstanceKey( moduleEntrySplit.first(), moduleEntrySplit.last() ); + } + + QString toString() const + { + if ( isValid() ) + { + return first + '@' + second; + } + return QString(); + } + +private: + /** @brief Check validity and reset module and id if needed. */ + void validate() + { + if ( first.contains( '@' ) || second.contains( '@' ) ) + { + first = QString(); + second = QString(); + } + } +}; + +} // namespace ModuleSystem +} // namespace Calamares + +#endif diff --git a/src/libcalamares/modulesystem/Tests.cpp b/src/libcalamares/modulesystem/Tests.cpp new file mode 100644 index 000000000..e7301a0be --- /dev/null +++ b/src/libcalamares/modulesystem/Tests.cpp @@ -0,0 +1,141 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "modulesystem/InstanceKey.h" + +#include + +using Calamares::ModuleSystem::InstanceKey; + +class ModuleSystemTests : public QObject +{ + Q_OBJECT +public: + ModuleSystemTests() {} + virtual ~ModuleSystemTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testEmptyInstanceKey(); + void testCustomInstanceKey(); + void testFromStringInstanceKey(); + + void testBadSimpleCases(); + void testBadFromStringCases(); +}; + +void +ModuleSystemTests::initTestCase() +{ +} + +void +assert_is_invalid( const InstanceKey& k ) +{ + QVERIFY( !k.isValid() ); + QVERIFY( !k.isCustom() ); + QVERIFY( k.module().isEmpty() ); + QVERIFY( k.id().isEmpty() ); + if ( k.toString().isEmpty() ) + { + QVERIFY( k.toString().isEmpty() ); + } + else + { + QCOMPARE( k.toString(), QString() ); + } +} + +void +ModuleSystemTests::testEmptyInstanceKey() +{ + InstanceKey k0; + assert_is_invalid( k0 ); +} + +void +ModuleSystemTests::testCustomInstanceKey() +{ + InstanceKey k0( "derp", "derp" ); + QVERIFY( k0.isValid() ); + QVERIFY( !k0.isCustom() ); + QCOMPARE( k0.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k0.id(), QStringLiteral( "derp" ) ); + QCOMPARE( k0.toString(), QStringLiteral( "derp@derp" ) ); + + InstanceKey k1( "derp", "horse" ); + QVERIFY( k1.isValid() ); + QVERIFY( k1.isCustom() ); + QCOMPARE( k1.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k1.id(), QStringLiteral( "horse" ) ); + QCOMPARE( k1.toString(), QStringLiteral( "derp@horse" ) ); + + InstanceKey k4( "derp", QString() ); + QVERIFY( k4.isValid() ); + QVERIFY( !k4.isCustom() ); + QCOMPARE( k4.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k4.id(), QStringLiteral( "derp" ) ); + QCOMPARE( k4.toString(), QStringLiteral( "derp@derp" ) ); +} + +void +ModuleSystemTests::testFromStringInstanceKey() +{ + InstanceKey k0 = InstanceKey::fromString( "derp@derp" ); + QVERIFY( k0.isValid() ); + QVERIFY( !k0.isCustom() ); + QCOMPARE( k0.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k0.id(), QStringLiteral( "derp" ) ); + + InstanceKey k1 = InstanceKey::fromString( "derp@horse" ); + QVERIFY( k1.isValid() ); + QVERIFY( k1.isCustom() ); + QCOMPARE( k1.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k1.id(), QStringLiteral( "horse" ) ); + + InstanceKey k2 = InstanceKey::fromString( "derp" ); + QVERIFY( k2.isValid() ); + QVERIFY( !k2.isCustom() ); + QCOMPARE( k2.module(), QStringLiteral( "derp" ) ); + QCOMPARE( k2.id(), QStringLiteral( "derp" ) ); +} + +/// @brief These are expected to fail since they show bugs in the code +void +ModuleSystemTests::testBadSimpleCases() +{ + InstanceKey k4( "derp", "derp@derp" ); + assert_is_invalid( k4 ); +} + +void +ModuleSystemTests::testBadFromStringCases() +{ + InstanceKey k0 = InstanceKey::fromString( QString() ); + assert_is_invalid( k0 ); + + k0 = InstanceKey::fromString( "derp@derp@derp" ); + assert_is_invalid( k0 ); +} + + +QTEST_GUILESS_MAIN( ModuleSystemTests ) + +#include "utils/moc-warnings.h" +#include "Tests.moc" diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp new file mode 100644 index 000000000..6243b03b3 --- /dev/null +++ b/src/libcalamares/network/Manager.cpp @@ -0,0 +1,289 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Manager.h" + +#include "utils/Logger.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace CalamaresUtils +{ +namespace Network +{ +void +RequestOptions::applyToRequest( QNetworkRequest* request ) const +{ + if ( m_flags & Flag::FollowRedirect ) + { + // Follows all redirects except unsafe ones (https to http). + request->setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); + } + + if ( m_flags & Flag::FakeUserAgent ) + { + // Not everybody likes the default User Agent used by this class (looking at you, + // sourceforge.net), so let's set a more descriptive one. + request->setRawHeader( "User-Agent", "Mozilla/5.0 (compatible; Calamares)" ); + } +} + +class Manager::Private : public QObject +{ + Q_OBJECT +private: + std::unique_ptr< QNetworkAccessManager > m_nam; + + using ThreadNam = QPair< QThread*, QNetworkAccessManager* >; + QVector< ThreadNam > m_perThreadNams; + +public slots: + void cleanupNam(); + +public: + QUrl m_hasInternetUrl; + bool m_hasInternet; + + Private(); + + QNetworkAccessManager* nam(); +}; + +Manager::Private::Private() + : m_nam( std::make_unique< QNetworkAccessManager >() ) + , m_hasInternet( false ) +{ + m_perThreadNams.reserve( 20 ); + m_perThreadNams.append( qMakePair( QThread::currentThread(), m_nam.get() ) ); +} + +static QMutex* +namMutex() +{ + static QMutex namMutex; + return &namMutex; +} + +QNetworkAccessManager* +Manager::Private::nam() +{ + QMutexLocker lock( namMutex() ); + + auto* thread = QThread::currentThread(); + int index = 0; + for ( const auto& n : m_perThreadNams ) + { + if ( n.first == thread ) + { + return n.second; + } + ++index; + } + + // Need a new NAM for this thread + QNetworkAccessManager* nam = new QNetworkAccessManager(); + m_perThreadNams.append( qMakePair( thread, nam ) ); + QObject::connect( thread, &QThread::finished, this, &Manager::Private::cleanupNam ); + + return nam; +} + +void +Manager::Private::cleanupNam() +{ + QMutexLocker lock( namMutex() ); + + auto* thread = QThread::currentThread(); + bool cleanupFound = false; + int cleanupIndex = 0; + for ( const auto& n : m_perThreadNams ) + { + if ( n.first == thread ) + { + cleanupFound = true; + delete n.second; + break; + } + ++cleanupIndex; + } + if ( cleanupFound ) + { + m_perThreadNams.remove( cleanupIndex ); + } +} + + +Manager::Manager() + : d( std::make_unique< Private >() ) +{ +} + +Manager::~Manager() {} + +Manager& +Manager::instance() +{ + static auto* s_manager = new Manager(); + return *s_manager; +} + +bool +Manager::hasInternet() +{ + return d->m_hasInternet; +} + +bool +Manager::checkHasInternet() +{ + bool hasInternet = d->nam()->networkAccessible() == QNetworkAccessManager::Accessible; + + if ( !hasInternet && ( d->nam()->networkAccessible() == QNetworkAccessManager::UnknownAccessibility ) ) + { + hasInternet = synchronousPing( d->m_hasInternetUrl ); + } + d->m_hasInternet = hasInternet; + return hasInternet; +} + +void +Manager::setCheckHasInternetUrl( const QUrl& url ) +{ + d->m_hasInternetUrl = url; +} + +/** @brief Does a request asynchronously, returns the (pending) reply + * + * The extra options for the request are taken from @p options, + * including the timeout setting. A timeout will cause the reply + * to abort. The reply is **not** scheduled for deletion. + * + * On failure, returns nullptr (e.g. bad URL, timeout). + */ +static QNetworkReply* +asynchronousRun( QNetworkAccessManager* nam, const QUrl& url, const RequestOptions& options ) +{ + QNetworkRequest request = QNetworkRequest( url ); + options.applyToRequest( &request ); + + QNetworkReply* reply = nam->get( request ); + QTimer* timer = nullptr; + + // Bail out early if the request is bad + if ( reply->error() ) + { + reply->deleteLater(); + return nullptr; + } + + if ( options.hasTimeout() ) + { + timer = new QTimer( reply ); + timer->setSingleShot( true ); + QObject::connect( timer, &QTimer::timeout, reply, &QNetworkReply::abort ); + timer->start( options.timeout() ); + } + + return reply; +} + +/** @brief Does a request synchronously, returns the request itself + * + * The extra options for the request are taken from @p options, + * including the timeout setting. + * + * On failure, returns nullptr (e.g. bad URL, timeout). The request + * is marked for later automatic deletion, so don't store the pointer. + */ +static QPair< RequestStatus, QNetworkReply* > +synchronousRun( QNetworkAccessManager* nam, const QUrl& url, const RequestOptions& options ) +{ + auto* reply = asynchronousRun( nam, url, options ); + if ( !reply ) + { + return qMakePair( RequestStatus( RequestStatus::Failed ), nullptr ); + } + + QEventLoop loop; + QObject::connect( reply, &QNetworkReply::finished, &loop, &QEventLoop::quit ); + loop.exec(); + reply->deleteLater(); + if ( reply->isRunning() ) + { + return qMakePair( RequestStatus( RequestStatus::Timeout ), nullptr ); + } + else if ( reply->error() != QNetworkReply::NoError ) + { + return qMakePair( RequestStatus( RequestStatus::Timeout ), nullptr ); + } + else + { + return qMakePair( RequestStatus( RequestStatus::Ok ), reply ); + } +} + +RequestStatus +Manager::synchronousPing( const QUrl& url, const RequestOptions& options ) +{ + if ( !url.isValid() ) + { + return RequestStatus::Failed; + } + + auto reply = synchronousRun( d->nam(), url, options ); + if ( reply.first ) + { + return reply.second->bytesAvailable() ? RequestStatus::Ok : RequestStatus::Empty; + } + else + { + return reply.first; + } +} + +QByteArray +Manager::synchronousGet( const QUrl& url, const RequestOptions& options ) +{ + if ( !url.isValid() ) + { + return QByteArray(); + } + + auto reply = synchronousRun( d->nam(), url, options ); + return reply.first ? reply.second->readAll() : QByteArray(); +} + +QNetworkReply* +Manager::asynchronouseGet( const QUrl& url, const CalamaresUtils::Network::RequestOptions& options ) +{ + return asynchronousRun( d->nam(), url, options ); +} + + +} // namespace Network +} // namespace CalamaresUtils + +#include "utils/moc-warnings.h" +#include "Manager.moc" diff --git a/src/libcalamares/network/Manager.h b/src/libcalamares/network/Manager.h new file mode 100644 index 000000000..ddd42f27b --- /dev/null +++ b/src/libcalamares/network/Manager.h @@ -0,0 +1,157 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef LIBCALAMARES_NETWORK_MANAGER_H +#define LIBCALAMARES_NETWORK_MANAGER_H + +#include "DllMacro.h" + +#include +#include +#include + +#include +#include + +class QNetworkReply; +class QNetworkRequest; + +namespace CalamaresUtils +{ +namespace Network +{ +class DLLEXPORT RequestOptions +{ +public: + using milliseconds = std::chrono::milliseconds; + + enum Flag + { + FollowRedirect = 0x1, + FakeUserAgent = 0x100 + }; + Q_DECLARE_FLAGS( Flags, Flag ) + + RequestOptions() + : m_flags( Flags() ) + , m_timeout( -1 ) + { + } + + RequestOptions( Flags f, milliseconds timeout = milliseconds( -1 ) ) + : m_flags( f ) + , m_timeout( timeout ) + { + } + + void applyToRequest( QNetworkRequest* ) const; + + bool hasTimeout() const { return m_timeout > milliseconds( 0 ); } + auto timeout() const { return m_timeout; } + +private: + Flags m_flags; + milliseconds m_timeout; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS( RequestOptions::Flags ); + +struct RequestStatus +{ + enum State + { + Ok, + Timeout, // Timeout exceeded + Failed, // bad Url + Empty // for ping(), response is empty + }; + + RequestStatus( State s = Ok ) + : status( s ) + { + } + operator bool() const { return status == Ok; } + + State status; +}; + +class DLLEXPORT Manager : QObject +{ + Q_OBJECT + + Manager(); + +public: + /** @brief Gets the single Manager instance. + * + * Typical code will use `auto& nam = Manager::instance();` + * to keep the reference. + */ + static Manager& instance(); + virtual ~Manager(); + + /** @brief Checks if the given @p url returns data. + * + * Returns a RequestStatus, which converts to @c true if the ping + * was successful. Other status reasons convert to @c false, + * typically because of no data, a Url error or no network access. + * + * May return Empty if the request was successful but returned + * no data at all. + */ + RequestStatus synchronousPing( const QUrl& url, const RequestOptions& options = RequestOptions() ); + + /** @brief Downloads the data from a given @p url + * + * Returns the data as a QByteArray, or an empty + * array if any error occurred (or no data was returned). + */ + QByteArray synchronousGet( const QUrl& url, const RequestOptions& options = RequestOptions() ); + + /// @brief Set the URL which is used for the general "is there internet" check. + void setCheckHasInternetUrl( const QUrl& url ); + /** @brief Do an explicit check for internet connectivity. + * + * This **may** do a ping to the configured check URL, but can also + * use other mechanisms. + */ + bool checkHasInternet(); + /** @brief Is there internet connectivity? + * + * This returns the result of the last explicit check, or if there + * is other information about the state of the internet connection, + * whatever is known. @c true means you can expect (all) internet + * connectivity to be present. + */ + bool hasInternet(); + + /** @brief Do a network request asynchronously. + * + * Returns a pointer to the reply-from-the-request. + * This may be a nullptr if an error occurs immediately. + * The caller is responsible for cleaning up the reply (eventually). + */ + QNetworkReply* asynchronouseGet( const QUrl& url, const RequestOptions& options = RequestOptions() ); + +private: + class Private; + std::unique_ptr< Private > d; +}; +} // namespace Network +} // namespace CalamaresUtils +#endif // LIBCALAMARES_NETWORK_MANAGER_H diff --git a/src/libcalamares/network/Tests.cpp b/src/libcalamares/network/Tests.cpp new file mode 100644 index 000000000..559a955fe --- /dev/null +++ b/src/libcalamares/network/Tests.cpp @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Tests.h" + +#include "Manager.h" + +#include + +QTEST_GUILESS_MAIN( NetworkTests ) + +NetworkTests::NetworkTests() {} + +NetworkTests::~NetworkTests() {} + +void +NetworkTests::initTestCase() +{ +} + +void +NetworkTests::testInstance() +{ + auto& nam = CalamaresUtils::Network::Manager::instance(); + QVERIFY( !nam.hasInternet() ); +} + +void +NetworkTests::testPing() +{ + auto& nam = CalamaresUtils::Network::Manager::instance(); + QVERIFY( nam.synchronousPing( QUrl( "https://www.kde.org" ) ) ); +} diff --git a/src/libcalamares/network/Tests.h b/src/libcalamares/network/Tests.h new file mode 100644 index 000000000..b63f7eff0 --- /dev/null +++ b/src/libcalamares/network/Tests.h @@ -0,0 +1,38 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef LIBCALAMARES_NETWORK_TESTS_H +#define LIBCALAMARES_NETWORK_TESTS_H + +#include + +class NetworkTests : public QObject +{ + Q_OBJECT +public: + NetworkTests(); + ~NetworkTests() override; + +private Q_SLOTS: + void initTestCase(); + + void testInstance(); + void testPing(); +}; + +#endif diff --git a/src/libcalamares/partition/PartitionSize.cpp b/src/libcalamares/partition/PartitionSize.cpp index 3f4463f3c..fc8d72582 100644 --- a/src/libcalamares/partition/PartitionSize.cpp +++ b/src/libcalamares/partition/PartitionSize.cpp @@ -29,12 +29,22 @@ namespace Partition static const NamedEnumTable< SizeUnit >& unitSuffixes() { + // *INDENT-OFF* + // clang-format off static const NamedEnumTable< SizeUnit > names { - { QStringLiteral( "%" ), SizeUnit::Percent }, { QStringLiteral( "K" ), SizeUnit::KiB }, - { QStringLiteral( "KiB" ), SizeUnit::KiB }, { QStringLiteral( "M" ), SizeUnit::MiB }, - { QStringLiteral( "MiB" ), SizeUnit::MiB }, { QStringLiteral( "G" ), SizeUnit::GiB }, - { QStringLiteral( "GiB" ), SizeUnit::GiB } + { QStringLiteral( "%" ), SizeUnit::Percent }, + { QStringLiteral( "K" ), SizeUnit::KiB }, + { QStringLiteral( "KiB" ), SizeUnit::KiB }, + { QStringLiteral( "M" ), SizeUnit::MiB }, + { QStringLiteral( "MiB" ), SizeUnit::MiB }, + { QStringLiteral( "G" ), SizeUnit::GiB }, + { QStringLiteral( "GiB" ), SizeUnit::GiB }, + { QStringLiteral( "KB" ), SizeUnit::KB }, + { QStringLiteral( "MB" ), SizeUnit::MB }, + { QStringLiteral( "GB" ), SizeUnit::GB } }; + // clang-format on + // *INDENT-ON* return names; } @@ -50,7 +60,7 @@ PartitionSize::PartitionSize( const QString& s ) if ( m_unit == SizeUnit::None ) { - m_value = s.toInt(); + m_value = s.toLongLong(); if ( m_value > 0 ) { m_unit = SizeUnit::Byte; @@ -90,8 +100,11 @@ PartitionSize::toSectors( qint64 totalSectors, qint64 sectorSize ) const return totalSectors * value() / 100; } case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return CalamaresUtils::bytesToSectors( toBytes(), sectorSize ); } @@ -125,8 +138,11 @@ PartitionSize::toBytes( qint64 totalSectors, qint64 sectorSize ) const return totalSectors * value() / 100; } case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return toBytes(); } @@ -161,8 +177,11 @@ PartitionSize::toBytes( qint64 totalBytes ) const return totalBytes * value() / 100; } case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return toBytes(); } @@ -186,10 +205,16 @@ PartitionSize::toBytes() const return -1; case SizeUnit::Byte: return value(); + case SizeUnit::KB: + return CalamaresUtils::KBtoBytes( static_cast< unsigned long long >( value() ) ); case SizeUnit::KiB: return CalamaresUtils::KiBtoBytes( static_cast< unsigned long long >( value() ) ); + case SizeUnit::MB: + return CalamaresUtils::MBtoBytes( static_cast< unsigned long long >( value() ) ); case SizeUnit::MiB: return CalamaresUtils::MiBtoBytes( static_cast< unsigned long long >( value() ) ); + case SizeUnit::GB: + return CalamaresUtils::GBtoBytes( static_cast< unsigned long long >( value() ) ); case SizeUnit::GiB: return CalamaresUtils::GiBtoBytes( static_cast< unsigned long long >( value() ) ); } @@ -211,8 +236,11 @@ PartitionSize::operator<( const PartitionSize& other ) const case SizeUnit::Percent: return ( m_value < other.m_value ); case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return ( toBytes() < other.toBytes() ); } @@ -234,8 +262,11 @@ PartitionSize::operator>( const PartitionSize& other ) const case SizeUnit::Percent: return ( m_value > other.m_value ); case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return ( toBytes() > other.toBytes() ); } @@ -257,8 +288,11 @@ PartitionSize::operator==( const PartitionSize& other ) const case SizeUnit::Percent: return ( m_value == other.m_value ); case SizeUnit::Byte: + case SizeUnit::KB: case SizeUnit::KiB: + case SizeUnit::MB: case SizeUnit::MiB: + case SizeUnit::GB: case SizeUnit::GiB: return ( toBytes() == other.toBytes() ); } diff --git a/src/libcalamares/partition/PartitionSize.h b/src/libcalamares/partition/PartitionSize.h index 44cedbffe..b22698e55 100644 --- a/src/libcalamares/partition/PartitionSize.h +++ b/src/libcalamares/partition/PartitionSize.h @@ -36,8 +36,11 @@ enum class SizeUnit None, Percent, Byte, + KB, KiB, + MB, MiB, + GB, GiB }; diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index 540555e8b..5a20c17d2 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -19,10 +19,10 @@ #include "CalamaresUtilsSystem.h" -#include "utils/Logger.h" #include "GlobalStorage.h" #include "JobQueue.h" #include "Settings.h" +#include "utils/Logger.h" #include #include @@ -34,8 +34,11 @@ #endif #ifdef Q_OS_FREEBSD +// clang-format off +// these includes need to stay in-order (that's a FreeBSD thing) #include #include +// clang-format on #endif /** @brief When logging commands, don't log everything. @@ -48,12 +51,12 @@ struct RedactedList { RedactedList( const QStringList& l ) - : list(l) + : list( l ) { } const QStringList& list; -} ; +}; QDebug& operator<<( QDebug& s, const RedactedList& l ) @@ -63,12 +66,18 @@ operator<<( QDebug& s, const RedactedList& l ) { for ( const auto& item : l.list ) if ( item.startsWith( "$6$" ) ) + { s << ""; + } else + { s << item; + } } else + { s << l.list; + } return s; } @@ -85,13 +94,14 @@ System::System( bool doChroot, QObject* parent ) { Q_ASSERT( !s_instance ); s_instance = this; - if ( !doChroot ) + if ( !doChroot && Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() ) + { Calamares::JobQueue::instance()->globalStorage()->insert( "rootMountPoint", "/" ); + } } -System::~System() -{} +System::~System() {} System* @@ -108,19 +118,18 @@ System::instance() ProcessResult -System::runCommand( - System::RunLocation location, - const QStringList& args, - const QString& workingPath, - const QString& stdInput, - int timeoutSec ) +System::runCommand( System::RunLocation location, + const QStringList& args, + const QString& workingPath, + const QString& stdInput, + std::chrono::seconds timeoutSec ) { QString output; - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; + Calamares::GlobalStorage* gs + = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; - if ( ( location == System::RunLocation::RunInTarget ) && - ( !gs || !gs->contains( "rootMountPoint" ) ) ) + if ( ( location == System::RunLocation::RunInTarget ) && ( !gs || !gs->contains( "rootMountPoint" ) ) ) { cWarning() << "No rootMountPoint in global storage"; return ProcessResult::Code::NoWorkingDirectory; @@ -156,7 +165,9 @@ System::runCommand( if ( !workingPath.isEmpty() ) { if ( QDir( workingPath ).exists() ) + { process.setWorkingDirectory( QDir( workingPath ).absolutePath() ); + } else { cWarning() << "Invalid working directory:" << workingPath; @@ -178,10 +189,11 @@ System::runCommand( } process.closeWriteChannel(); - if ( !process.waitForFinished( timeoutSec ? ( timeoutSec * 1000 ) : -1 ) ) + if ( !process.waitForFinished( timeoutSec > std::chrono::seconds::zero() + ? ( static_cast< int >( std::chrono::milliseconds( timeoutSec ).count() ) ) + : -1 ) ) { - cWarning().noquote().nospace() << "Timed out. Output so far:\n" << - process.readAllStandardOutput(); + cWarning().noquote().nospace() << "Timed out. Output so far:\n" << process.readAllStandardOutput(); return ProcessResult::Code::TimedOut; } @@ -201,32 +213,100 @@ System::runCommand( cDebug() << "Target cmd:" << RedactedList( args ); cDebug().noquote().nospace() << "Target output:\n" << output; } - return ProcessResult(r, output); + return ProcessResult( r, output ); +} + +QString +System::targetPath( const QString& path ) const +{ + QString completePath; + + if ( doChroot() ) + { + Calamares::GlobalStorage* gs + = Calamares::JobQueue::instance() ? Calamares::JobQueue::instance()->globalStorage() : nullptr; + + if ( !gs || !gs->contains( "rootMountPoint" ) ) + { + cWarning() << "No rootMountPoint in global storage, cannot create target file" << path; + return QString(); + } + + completePath = gs->value( "rootMountPoint" ).toString() + '/' + path; + } + else + { + completePath = QStringLiteral( "/" ) + path; + } + + return completePath; +} + +QString +System::createTargetFile( const QString& path, const QByteArray& contents ) const +{ + QString completePath = targetPath( path ); + if ( completePath.isEmpty() ) + { + return QString(); + } + + QFile f( completePath ); + if ( f.exists() ) + { + return QString(); + } + + QIODevice::OpenMode m = +#if QT_VERSION >= QT_VERSION_CHECK( 5, 11, 0 ) + // New flag from Qt 5.11, implies WriteOnly + QIODevice::NewOnly | +#endif + QIODevice::WriteOnly | QIODevice::Truncate; + + if ( !f.open( m ) ) + { + return QString(); + } + + if ( f.write( contents ) != contents.size() ) + { + f.close(); + f.remove(); + return QString(); + } + + f.close(); + return QFileInfo( f ).canonicalFilePath(); } -QPair +QPair< quint64, float > System::getTotalMemoryB() const { #ifdef Q_OS_LINUX struct sysinfo i; int r = sysinfo( &i ); - if (r) - return qMakePair(0, 0.0); + if ( r ) + { + return qMakePair( 0, 0.0 ); + } - return qMakePair(quint64( i.mem_unit ) * quint64( i.totalram ), 1.1); + return qMakePair( quint64( i.mem_unit ) * quint64( i.totalram ), 1.1 ); #elif defined( Q_OS_FREEBSD ) unsigned long memsize; - size_t s = sizeof(memsize); + size_t s = sizeof( memsize ); - int r = sysctlbyname("vm.kmem_size", &memsize, &s, NULL, 0); - if (r) - return qMakePair(0, 0.0); + int r = sysctlbyname( "vm.kmem_size", &memsize, &s, NULL, 0 ); + if ( r ) + { + return qMakePair( 0, 0.0 ); + } - return qMakePair(memsize, 1.01); + return qMakePair( memsize, 1.01 ); #else - return qMakePair(0, 0.0); // Unsupported + return qMakePair( 0, 0.0 ); // Unsupported #endif } @@ -237,14 +317,14 @@ System::getCpuDescription() const QString model; #ifdef Q_OS_LINUX - QFile file("/proc/cpuinfo"); - if ( file.open(QIODevice::ReadOnly | QIODevice::Text) ) + QFile file( "/proc/cpuinfo" ); + if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) ) while ( !file.atEnd() ) { QByteArray line = file.readLine(); - if ( line.startsWith( "model name" ) && (line.indexOf( ':' ) > 0) ) + if ( line.startsWith( "model name" ) && ( line.indexOf( ':' ) > 0 ) ) { - model = QString::fromLatin1( line.right(line.length() - line.indexOf( ':' ) ) ); + model = QString::fromLatin1( line.right( line.length() - line.indexOf( ':' ) ) ); break; } } @@ -267,45 +347,50 @@ System::doChroot() const } Calamares::JobResult -ProcessResult::explainProcess( int ec, const QString& command, const QString& output, int timeout ) +ProcessResult::explainProcess( int ec, const QString& command, const QString& output, std::chrono::seconds timeout ) { using Calamares::JobResult; if ( ec == 0 ) + { return JobResult::ok(); + } QString outputMessage = output.isEmpty() - ? QCoreApplication::translate( "ProcessResult", "\nThere was no output from the command.") - : (QCoreApplication::translate( "ProcessResult", "\nOutput:\n") + output); + ? QCoreApplication::translate( "ProcessResult", "\nThere was no output from the command." ) + : ( QCoreApplication::translate( "ProcessResult", "\nOutput:\n" ) + output ); - if ( ec == static_cast(ProcessResult::Code::Crashed) ) //Crash! - return JobResult::error( QCoreApplication::translate( "ProcessResult", "External command crashed." ), - QCoreApplication::translate( "ProcessResult", "Command %1 crashed." ) - .arg( command ) - + outputMessage ); + if ( ec == static_cast< int >( ProcessResult::Code::Crashed ) ) //Crash! + return JobResult::error( + QCoreApplication::translate( "ProcessResult", "External command crashed." ), + QCoreApplication::translate( "ProcessResult", "Command %1 crashed." ).arg( command ) + + outputMessage ); - if ( ec == static_cast(ProcessResult::Code::FailedToStart) ) - return JobResult::error( QCoreApplication::translate( "ProcessResult", "External command failed to start." ), - QCoreApplication::translate( "ProcessResult", "Command %1 failed to start." ) - .arg( command ) ); + if ( ec == static_cast< int >( ProcessResult::Code::FailedToStart ) ) + return JobResult::error( + QCoreApplication::translate( "ProcessResult", "External command failed to start." ), + QCoreApplication::translate( "ProcessResult", "Command %1 failed to start." ).arg( command ) ); - if ( ec == static_cast(ProcessResult::Code::NoWorkingDirectory) ) - return JobResult::error( QCoreApplication::translate( "ProcessResult", "Internal error when starting command." ), - QCoreApplication::translate( "ProcessResult", "Bad parameters for process job call." ) ); + if ( ec == static_cast< int >( ProcessResult::Code::NoWorkingDirectory ) ) + return JobResult::error( + QCoreApplication::translate( "ProcessResult", "Internal error when starting command." ), + QCoreApplication::translate( "ProcessResult", "Bad parameters for process job call." ) ); - if ( ec == static_cast(ProcessResult::Code::TimedOut) ) - return JobResult::error( QCoreApplication::translate( "ProcessResult", "External command failed to finish." ), - QCoreApplication::translate( "ProcessResult", "Command %1 failed to finish in %2 seconds." ) - .arg( command ) - .arg( timeout ) - + outputMessage ); + if ( ec == static_cast< int >( ProcessResult::Code::TimedOut ) ) + return JobResult::error( + QCoreApplication::translate( "ProcessResult", "External command failed to finish." ), + QCoreApplication::translate( "ProcessResult", "Command %1 failed to finish in %2 seconds." ) + .arg( command ) + .arg( timeout.count() ) + + outputMessage ); //Any other exit code - return JobResult::error( QCoreApplication::translate( "ProcessResult", "External command finished with errors." ), - QCoreApplication::translate( "ProcessResult", "Command %1 finished with exit code %2." ) - .arg( command ) - .arg( ec ) - + outputMessage ); + return JobResult::error( + QCoreApplication::translate( "ProcessResult", "External command finished with errors." ), + QCoreApplication::translate( "ProcessResult", "Command %1 finished with exit code %2." ) + .arg( command ) + .arg( ec ) + + outputMessage ); } -} // namespace +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h index 2355f3455..476d6f4ce 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.h +++ b/src/libcalamares/utils/CalamaresUtilsSystem.h @@ -27,6 +27,8 @@ #include #include +#include + namespace CalamaresUtils { class ProcessResult : public QPair< int, QString > @@ -34,15 +36,21 @@ class ProcessResult : public QPair< int, QString > public: enum class Code : int { - Crashed = -1, // Must match special return values from QProcess + Crashed = -1, // Must match special return values from QProcess FailedToStart = -2, // Must match special return values from QProcess NoWorkingDirectory = -3, TimedOut = -4 - } ; + }; /** @brief Implicit one-argument constructor has no output, only a return code */ - ProcessResult( Code r ) : QPair< int, QString >( static_cast(r), QString() ) {} - ProcessResult( int r, QString s ) : QPair< int, QString >( r, s ) {} + ProcessResult( Code r ) + : QPair< int, QString >( static_cast< int >( r ), QString() ) + { + } + ProcessResult( int r, QString s ) + : QPair< int, QString >( r, s ) + { + } int getExitCode() const { return first; } QString getOutput() const { return second; } @@ -60,20 +68,21 @@ public: * @param timeout Timeout passed to the process runner, for explaining * error code -4 (timeout). */ - static Calamares::JobResult explainProcess( int errorCode, const QString& command, const QString& output, int timeout ); + static Calamares::JobResult + explainProcess( int errorCode, const QString& command, const QString& output, std::chrono::seconds timeout ); /// @brief Convenience wrapper for explainProcess() - inline Calamares::JobResult explainProcess( const QString& command, int timeout ) const + inline Calamares::JobResult explainProcess( const QString& command, std::chrono::seconds timeout ) const { return explainProcess( getExitCode(), command, getOutput(), timeout ); } /// @brief Convenience wrapper for explainProcess() - inline Calamares::JobResult explainProcess( const QStringList& command, int timeout ) const + inline Calamares::JobResult explainProcess( const QStringList& command, std::chrono::seconds timeout ) const { return explainProcess( getExitCode(), command.join( ' ' ), getOutput(), timeout ); } -} ; +}; /** * @brief The System class is a singleton with utility functions that perform @@ -97,7 +106,11 @@ public: /** (Typed) Boolean describing where a particular command should be run, * whether in the host (live) system or in the (chroot) target system. */ - enum class RunLocation { RunInHost, RunInTarget }; + enum class RunLocation + { + RunInHost, + RunInTarget + }; /** * Runs the specified command in the chroot of the target system. @@ -116,12 +129,11 @@ public: * NoWorkingDirectory = bad arguments * TimedOut = QProcess timeout */ - static DLLEXPORT ProcessResult runCommand( - RunLocation location, - const QStringList &args, - const QString& workingPath = QString(), - const QString& stdInput = QString(), - int timeoutSec = 0 ); + static DLLEXPORT ProcessResult runCommand( RunLocation location, + const QStringList& args, + const QString& workingPath = QString(), + const QString& stdInput = QString(), + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ); /** @brief Convenience wrapper for runCommand() * @@ -140,25 +152,20 @@ public: * doChroot(), which is what you usually want for running commands * during installation. */ - inline ProcessResult targetEnvCommand( - const QStringList &args, - const QString& workingPath = QString(), - const QString& stdInput = QString(), - int timeoutSec = 0 ) + inline ProcessResult targetEnvCommand( const QStringList& args, + const QString& workingPath = QString(), + const QString& stdInput = QString(), + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ) { return runCommand( - m_doChroot ? RunLocation::RunInTarget : RunLocation::RunInHost, - args, - workingPath, - stdInput, - timeoutSec ); + m_doChroot ? RunLocation::RunInTarget : RunLocation::RunInHost, args, workingPath, stdInput, timeoutSec ); } /** @brief Convenience wrapper for targetEnvCommand() which returns only the exit code */ inline int targetEnvCall( const QStringList& args, const QString& workingPath = QString(), const QString& stdInput = QString(), - int timeoutSec = 0 ) + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ) { return targetEnvCommand( args, workingPath, stdInput, timeoutSec ).first; } @@ -167,9 +174,9 @@ public: inline int targetEnvCall( const QString& command, const QString& workingPath = QString(), const QString& stdInput = QString(), - int timeoutSec = 0 ) + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ) { - return targetEnvCall( QStringList{ command }, workingPath, stdInput, timeoutSec ); + return targetEnvCall( QStringList { command }, workingPath, stdInput, timeoutSec ); } /** @brief Convenience wrapper for targetEnvCommand() which returns only the exit code @@ -177,10 +184,10 @@ public: * Places the called program's output in the @p output string. */ int targetEnvOutput( const QStringList& args, - QString& output, - const QString& workingPath = QString(), - const QString& stdInput = QString(), - int timeoutSec = 0 ) + QString& output, + const QString& workingPath = QString(), + const QString& stdInput = QString(), + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ) { auto r = targetEnvCommand( args, workingPath, stdInput, timeoutSec ); output = r.second; @@ -195,11 +202,45 @@ public: QString& output, const QString& workingPath = QString(), const QString& stdInput = QString(), - int timeoutSec = 0 ) + std::chrono::seconds timeoutSec = std::chrono::seconds( 0 ) ) { - return targetEnvOutput( QStringList{ command }, output, workingPath, stdInput, timeoutSec ); + return targetEnvOutput( QStringList { command }, output, workingPath, stdInput, timeoutSec ); } + + /** @brief Gets a path to a file in the target system, from the host. + * + * @param path Path to the file; this is interpreted + * from the root of the target system (whatever that may be, + * but / in the chroot, or / in OEM modes). + * + * @return The complete path to the target file, from + * the root of the host system, or empty on failure. + * + * For instance, during installation where the target root is + * mounted on /tmp/calamares-something, asking for targetPath("/etc/passwd") + * will give you /tmp/calamares-something/etc/passwd. + * + * No attempt is made to canonicalize anything, since paths might not exist. + */ + DLLEXPORT QString targetPath( const QString& path ) const; + + /** @brief Create a (small-ish) file in the target system. + * + * @param path Path to the file; this is interpreted + * from the root of the target system (whatever that may be, + * but / in the chroot, or / in OEM modes). + * @param contents Actual content of the file. + * + * Will not overwrite files. Returns an empty string if the + * target file already exists. + * + * @return The complete canonical path to the target file from the + * root of the host system, or empty on failure. (Here, it is + * possible to be canonical because the file exists). + */ + DLLEXPORT QString createTargetFile( const QString& path, const QByteArray& contents ) const; + /** * @brief getTotalMemoryB returns the total main memory, in bytes. * @@ -214,7 +255,7 @@ public: * * @return size, guesstimate-factor */ - DLLEXPORT QPair getTotalMemoryB() const; + DLLEXPORT QPair< quint64, float > getTotalMemoryB() const; /** * @brief getCpuDescription returns a string describing the CPU. @@ -238,6 +279,6 @@ private: bool m_doChroot; }; -} // namespace +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp index 9916c71fe..8a2f3835b 100644 --- a/src/libcalamares/utils/CommandList.cpp +++ b/src/libcalamares/utils/CommandList.cpp @@ -32,86 +32,107 @@ namespace CalamaresUtils { -static CommandLine get_variant_object( const QVariantMap& m ) +static CommandLine +get_variant_object( const QVariantMap& m ) { QString command = CalamaresUtils::getString( m, "command" ); - int timeout = CalamaresUtils::getInteger( m, "timeout", CommandLine::TimeoutNotSet ); + qint64 timeout = CalamaresUtils::getInteger( m, "timeout", -1 ); if ( !command.isEmpty() ) - return CommandLine( command, timeout ); + { + return CommandLine( command, timeout >= 0 ? std::chrono::seconds( timeout ) : CommandLine::TimeoutNotSet() ); + } cWarning() << "Bad CommandLine element" << m; return CommandLine(); } -static CommandList_t get_variant_stringlist( const QVariantList& l ) +static CommandList_t +get_variant_stringlist( const QVariantList& l ) { CommandList_t retl; unsigned int count = 0; for ( const auto& v : l ) { if ( v.type() == QVariant::String ) - retl.append( CommandLine( v.toString(), CommandLine::TimeoutNotSet ) ); + { + retl.append( CommandLine( v.toString(), CommandLine::TimeoutNotSet() ) ); + } else if ( v.type() == QVariant::Map ) { auto command( get_variant_object( v.toMap() ) ); if ( command.isValid() ) + { retl.append( command ); + } // Otherwise warning is already given } else + { cWarning() << "Bad CommandList element" << count << v.type() << v; + } ++count; } return retl; } -CommandList::CommandList( bool doChroot, int timeout ) +CommandList::CommandList( bool doChroot, std::chrono::seconds timeout ) : m_doChroot( doChroot ) , m_timeout( timeout ) { } -CommandList::CommandList::CommandList( const QVariant& v, bool doChroot, int timeout ) +CommandList::CommandList::CommandList( const QVariant& v, bool doChroot, std::chrono::seconds timeout ) : CommandList( doChroot, timeout ) { if ( v.type() == QVariant::List ) { const auto v_list = v.toList(); if ( v_list.count() ) + { append( get_variant_stringlist( v_list ) ); + } else + { cWarning() << "Empty CommandList"; + } } else if ( v.type() == QVariant::String ) + { append( v.toString() ); + } else if ( v.type() == QVariant::Map ) { auto c( get_variant_object( v.toMap() ) ); if ( c.isValid() ) + { append( c ); + } // Otherwise warning is already given } else + { cWarning() << "CommandList does not understand variant" << v.type(); + } } -CommandList::~CommandList() -{ -} +CommandList::~CommandList() {} static inline bool findInCommands( const CommandList& l, const QString& needle ) { for ( CommandList::const_iterator i = l.cbegin(); i != l.cend(); ++i ) if ( i->command().contains( needle ) ) + { return true; + } return false; } -Calamares::JobResult CommandList::run() +Calamares::JobResult +CommandList::run() { - QLatin1Literal rootMagic( "@@ROOT@@" ); - QLatin1Literal userMagic( "@@USER@@" ); + QLatin1String rootMagic( "@@ROOT@@" ); + QLatin1String userMagic( "@@USER@@" ); System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost; @@ -125,8 +146,11 @@ Calamares::JobResult CommandList::run() if ( !gs || !gs->contains( "rootMountPoint" ) ) { cError() << "No rootMountPoint defined."; - return Calamares::JobResult::error( QCoreApplication::translate( "CommandList", "Could not run command." ), - QCoreApplication::translate( "CommandList", "The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined." ) ); + return Calamares::JobResult::error( + QCoreApplication::translate( "CommandList", "Could not run command." ), + QCoreApplication::translate( "CommandList", + "The command runs in the host environment and needs to know the root " + "path, but no rootMountPoint is defined." ) ); } root = gs->value( "rootMountPoint" ).toString(); } @@ -137,7 +161,8 @@ Calamares::JobResult CommandList::run() cError() << "No username defined."; return Calamares::JobResult::error( QCoreApplication::translate( "CommandList", "Could not run command." ), - QCoreApplication::translate( "CommandList", "The command needs to know the user's name, but no username is defined." ) ); + QCoreApplication::translate( "CommandList", + "The command needs to know the user's name, but no username is defined." ) ); } QString user = gs->value( "username" ).toString(); // may be blank if unset @@ -155,16 +180,19 @@ Calamares::JobResult CommandList::run() QStringList shell_cmd { "/bin/sh", "-c" }; shell_cmd << processed_cmd; - int timeout = i->timeout() >= 0 ? i->timeout() : m_timeout; - ProcessResult r = System::runCommand( - location, shell_cmd, QString(), QString(), timeout ); + std::chrono::seconds timeout = i->timeout() >= std::chrono::seconds::zero() ? i->timeout() : m_timeout; + ProcessResult r = System::runCommand( location, shell_cmd, QString(), QString(), timeout ); if ( r.getExitCode() != 0 ) { if ( suppress_result ) + { cDebug() << "Error code" << r.getExitCode() << "ignored by CommandList configuration."; + } else + { return r.explainProcess( processed_cmd, timeout ); + } } } @@ -177,4 +205,4 @@ CommandList::append( const QString& s ) append( CommandLine( s, m_timeout ) ); } -} // namespace +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/CommandList.h b/src/libcalamares/utils/CommandList.h index 3dccdec6a..71a5a483c 100644 --- a/src/libcalamares/utils/CommandList.h +++ b/src/libcalamares/utils/CommandList.h @@ -24,6 +24,8 @@ #include #include +#include + namespace CalamaresUtils { @@ -31,41 +33,32 @@ namespace CalamaresUtils * Each command can have an associated timeout in seconds. The timeout * defaults to 10 seconds. Provide some convenience naming and construction. */ -struct CommandLine : public QPair< QString, int > +struct CommandLine : public QPair< QString, std::chrono::seconds > { - enum { TimeoutNotSet = -1 }; + static inline constexpr std::chrono::seconds TimeoutNotSet() { return std::chrono::seconds( -1 ); } /// An invalid command line CommandLine() - : QPair< QString, int >( QString(), TimeoutNotSet ) + : QPair( QString(), TimeoutNotSet() ) { } CommandLine( const QString& s ) - : QPair< QString, int >( s, TimeoutNotSet ) + : QPair( s, TimeoutNotSet() ) { } - CommandLine( const QString& s, int t ) - : QPair< QString, int >( s, t) + CommandLine( const QString& s, std::chrono::seconds t ) + : QPair( s, t ) { } - QString command() const - { - return first; - } + QString command() const { return first; } - int timeout() const - { - return second; - } + std::chrono::seconds timeout() const { return second; } - bool isValid() const - { - return !first.isEmpty(); - } -} ; + bool isValid() const { return !first.isEmpty(); } +}; /** @brief Abbreviation, used internally. */ using CommandList_t = QList< CommandLine >; @@ -82,23 +75,20 @@ class CommandList : protected CommandList_t { public: /** @brief empty command-list with timeout to apply to entries. */ - CommandList( bool doChroot = true, int timeout = 10 ); - CommandList( const QVariant& v, bool doChroot = true, int timeout = 10 ); + CommandList( bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); + CommandList( const QVariant& v, bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); ~CommandList(); - bool doChroot() const - { - return m_doChroot; - } + bool doChroot() const { return m_doChroot; } Calamares::JobResult run(); - using CommandList_t::isEmpty; - using CommandList_t::count; + using CommandList_t::at; using CommandList_t::cbegin; using CommandList_t::cend; using CommandList_t::const_iterator; - using CommandList_t::at; + using CommandList_t::count; + using CommandList_t::isEmpty; protected: using CommandList_t::append; @@ -106,8 +96,8 @@ protected: private: bool m_doChroot; - int m_timeout; -} ; + std::chrono::seconds m_timeout; +}; -} // namespace +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/Dirs.cpp b/src/libcalamares/utils/Dirs.cpp index 1fd309584..ca569490f 100644 --- a/src/libcalamares/utils/Dirs.cpp +++ b/src/libcalamares/utils/Dirs.cpp @@ -101,16 +101,24 @@ mungeEnvironment( QStringList& l, const char* name, const char* defaultDirs ) QStringList dirs = QString( qgetenv( name ) ).split( ':' ); if ( dirs.isEmpty() ) + { dirs = QString( defaultDirs ).split( ':' ); + } for ( auto s : dirs ) { if ( s.isEmpty() ) + { continue; + } if ( s.endsWith( '/' ) ) + { l << ( s + calamaresSubdir ) << s; + } else + { l << ( s + '/' + calamaresSubdir ) << ( s + '/' ); + } } } @@ -127,7 +135,9 @@ QStringList extraConfigDirs() { if ( s_haveExtraDirs ) + { return s_extraConfigDirs; + } return QStringList(); } @@ -135,7 +145,9 @@ QStringList extraDataDirs() { if ( s_haveExtraDirs ) + { return s_extraDataDirs; + } return QStringList(); } @@ -173,12 +185,16 @@ appLogDir() QString path = QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); QDir dir( path ); if ( isWritableDir( dir ) ) + { return dir; + } cerr << "warning: Could not find a standard writable location for log dir, falling back to $HOME\n"; dir = QDir::home(); if ( isWritableDir( dir ) ) + { return dir; + } cerr << "warning: Found no writable location for log dir, falling back to the temp dir\n"; return QDir::temp(); @@ -191,4 +207,4 @@ setQmlModulesDir( const QDir& dir ) s_qmlModulesDir = dir; } -} // namespace +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Dirs.h b/src/libcalamares/utils/Dirs.h index 5532cb79b..a63e679da 100644 --- a/src/libcalamares/utils/Dirs.h +++ b/src/libcalamares/utils/Dirs.h @@ -31,43 +31,43 @@ namespace CalamaresUtils { - DLLEXPORT QDir qmlModulesDir(); +DLLEXPORT QDir qmlModulesDir(); - /** - * @brief appDataDir returns the directory with common application data. - * Defaults to CMAKE_INSTALL_FULL_DATADIR (usually /usr/share/calamares). - */ - DLLEXPORT QDir appDataDir(); +/** + * @brief appDataDir returns the directory with common application data. + * Defaults to CMAKE_INSTALL_FULL_DATADIR (usually /usr/share/calamares). + */ +DLLEXPORT QDir appDataDir(); - /** - * @brief appLogDir returns the directory for Calamares logs. - * Defaults to QStandardPaths::CacheLocation (usually ~/.cache/Calamares). - */ - DLLEXPORT QDir appLogDir(); +/** + * @brief appLogDir returns the directory for Calamares logs. + * Defaults to QStandardPaths::CacheLocation (usually ~/.cache/Calamares). + */ +DLLEXPORT QDir appLogDir(); - /** - * @brief systemLibDir returns the system's lib directory. - * Defaults to CMAKE_INSTALL_FULL_LIBDIR (usually /usr/lib64 or /usr/lib). - */ - DLLEXPORT QDir systemLibDir(); +/** + * @brief systemLibDir returns the system's lib directory. + * Defaults to CMAKE_INSTALL_FULL_LIBDIR (usually /usr/lib64 or /usr/lib). + */ +DLLEXPORT QDir systemLibDir(); - /** - * Override app data dir. Only for testing purposes. - */ - DLLEXPORT void setAppDataDir( const QDir& dir ); - DLLEXPORT bool isAppDataDirOverridden(); +/** + * Override app data dir. Only for testing purposes. + */ +DLLEXPORT void setAppDataDir( const QDir& dir ); +DLLEXPORT bool isAppDataDirOverridden(); - DLLEXPORT void setQmlModulesDir( const QDir& dir ); +DLLEXPORT void setQmlModulesDir( const QDir& dir ); - /** @brief Setup extra config and data dirs from the XDG variables. - */ - DLLEXPORT void setXdgDirs(); - /** @brief Are any extra directories configured? */ - DLLEXPORT bool haveExtraDirs(); - /** @brief XDG_CONFIG_DIRS, each guaranteed to end with / */ - DLLEXPORT QStringList extraConfigDirs(); - /** @brief XDG_DATA_DIRS, each guaranteed to end with / */ - DLLEXPORT QStringList extraDataDirs(); -} // namespace +/** @brief Setup extra config and data dirs from the XDG variables. + */ +DLLEXPORT void setXdgDirs(); +/** @brief Are any extra directories configured? */ +DLLEXPORT bool haveExtraDirs(); +/** @brief XDG_CONFIG_DIRS, each guaranteed to end with / */ +DLLEXPORT QStringList extraConfigDirs(); +/** @brief XDG_DATA_DIRS, each guaranteed to end with / */ +DLLEXPORT QStringList extraDataDirs(); +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 433e01fbb..0e207fa02 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -20,8 +20,8 @@ #include "Logger.h" -#include #include +#include #include #include @@ -30,17 +30,17 @@ #include #include -#include "utils/Dirs.h" #include "CalamaresVersion.h" +#include "utils/Dirs.h" #define LOGFILE_SIZE 1024 * 256 static std::ofstream logfile; static unsigned int s_threshold = #ifdef QT_NO_DEBUG - Logger::LOG_DISABLE; + Logger::LOG_DISABLE; #else - Logger::LOGEXTRA + 1; // Comparison is < in log() function + Logger::LOGEXTRA + 1; // Comparison is < in log() function #endif static QMutex s_mutex; @@ -48,15 +48,17 @@ namespace Logger { void -setupLogLevel(unsigned int level) +setupLogLevel( unsigned int level ) { if ( level > LOGVERBOSE ) + { level = LOGVERBOSE; + } s_threshold = level + 1; // Comparison is < in log() function } bool -logLevelEnabled(unsigned int level) +logLevelEnabled( unsigned int level ) { return level < s_threshold; } @@ -77,11 +79,9 @@ log( const char* msg, unsigned int debugLevel ) // If we don't format the date as a Qt::ISODate then we get a crash when // logging at exit as Qt tries to use QLocale to format, but QLocale is // on its way out. - logfile << QDate::currentDate().toString( Qt::ISODate ).toUtf8().data() - << " - " - << QTime::currentTime().toString().toUtf8().data() - << " [" << QString::number( debugLevel ).toUtf8().data() << "]: " - << msg << std::endl; + logfile << QDate::currentDate().toString( Qt::ISODate ).toUtf8().data() << " - " + << QTime::currentTime().toString().toUtf8().data() << " [" + << QString::number( debugLevel ).toUtf8().data() << "]: " << msg << std::endl; logfile.flush(); } @@ -90,9 +90,8 @@ log( const char* msg, unsigned int debugLevel ) { QMutexLocker lock( &s_mutex ); - std::cout << QTime::currentTime().toString().toUtf8().data() - << " [" << QString::number( debugLevel ).toUtf8().data() << "]: " - << msg << std::endl; + std::cout << QTime::currentTime().toString().toUtf8().data() << " [" + << QString::number( debugLevel ).toUtf8().data() << "]: " << msg << std::endl; std::cout.flush(); } } @@ -107,21 +106,21 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext&, const QString& m const char* message = ba.constData(); QMutexLocker locker( &s_mutex ); - switch( type ) + switch ( type ) { - case QtDebugMsg: - log( message, LOGVERBOSE ); - break; + case QtDebugMsg: + log( message, LOGVERBOSE ); + break; - case QtInfoMsg: - log( message, 1 ); - break; + case QtInfoMsg: + log( message, 1 ); + break; - case QtCriticalMsg: - case QtWarningMsg: - case QtFatalMsg: - log( message, 0 ); - break; + case QtCriticalMsg: + case QtWarningMsg: + case QtFatalMsg: + log( message, 0 ); + break; } } @@ -161,11 +160,13 @@ setupLogfile() // Lock while (re-)opening the logfile { - QMutexLocker lock( &s_mutex ); - logfile.open( logFile().toLocal8Bit(), std::ios::app ); - if ( logfile.tellp() ) - logfile << "\n\n" << std::endl; - logfile << "=== START CALAMARES " << CALAMARES_VERSION << std::endl; + QMutexLocker lock( &s_mutex ); + logfile.open( logFile().toLocal8Bit(), std::ios::app ); + if ( logfile.tellp() ) + { + logfile << "\n\n" << std::endl; + } + logfile << "=== START CALAMARES " << CALAMARES_VERSION << std::endl; } qInstallMessageHandler( CalamaresLogHandler ); @@ -183,14 +184,13 @@ CLog::~CLog() log( m_msg.toUtf8().data(), m_debugLevel ); } -CDebug::~CDebug() -{ -} +CDebug::~CDebug() {} const char Continuation[] = "\n "; const char SubEntry[] = " .. "; -QString toString( const QVariant& v ) +QString +toString( const QVariant& v ) { auto t = v.type(); @@ -199,11 +199,15 @@ QString toString( const QVariant& v ) QStringList s; auto l = v.toList(); for ( auto lit = l.constBegin(); lit != l.constEnd(); ++lit ) + { s << lit->toString(); - return s.join(", "); + } + return s.join( ", " ); } else + { return v.toString(); + } } -} // namespace +} // namespace Logger diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 4d1534e4b..643b3059b 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -27,169 +27,181 @@ namespace Logger { - DLLEXPORT extern const char Continuation[]; - DLLEXPORT extern const char SubEntry[]; +DLLEXPORT extern const char Continuation[]; +DLLEXPORT extern const char SubEntry[]; - enum +enum +{ + LOG_DISABLE = 0, + LOGERROR = 1, + LOGWARNING = 2, + LOGINFO = 3, + LOGEXTRA = 5, + LOGDEBUG = 6, + LOGVERBOSE = 8 +}; + +class DLLEXPORT CLog : public QDebug +{ +public: + explicit CLog( unsigned int debugLevel ); + virtual ~CLog(); + +private: + QString m_msg; + unsigned int m_debugLevel; +}; + +class DLLEXPORT CDebug : public CLog +{ +public: + CDebug( unsigned int debugLevel = LOGDEBUG ) + : CLog( debugLevel ) { - LOG_DISABLE = 0, - LOGERROR = 1, - LOGWARNING = 2, - LOGINFO = 3, - LOGEXTRA = 5, - LOGDEBUG = 6, - LOGVERBOSE = 8 - } ; - - class DLLEXPORT CLog : public QDebug - { - public: - explicit CLog( unsigned int debugLevel ); - virtual ~CLog(); - - private: - QString m_msg; - unsigned int m_debugLevel; - }; - - class DLLEXPORT CDebug : public CLog - { - public: - CDebug( unsigned int debugLevel = LOGDEBUG ) : CLog( debugLevel ) + if ( debugLevel <= LOGERROR ) { - if ( debugLevel <= LOGERROR ) - *this << "ERROR:"; - else if ( debugLevel <= LOGWARNING ) - *this << "WARNING:"; + *this << "ERROR:"; } - virtual ~CDebug(); - }; + else if ( debugLevel <= LOGWARNING ) + { + *this << "WARNING:"; + } + } + virtual ~CDebug(); +}; - /** - * @brief The full path of the log file. - */ - DLLEXPORT QString logFile(); +/** + * @brief The full path of the log file. + */ +DLLEXPORT QString logFile(); - /** - * @brief Start logging to the log file. - * - * Call this (once) to start logging to the log file (usually - * ~/.cache/calamares/session.log ). An existing log file is - * rolled over if it is too large. - */ - DLLEXPORT void setupLogfile(); +/** + * @brief Start logging to the log file. + * + * Call this (once) to start logging to the log file (usually + * ~/.cache/calamares/session.log ). An existing log file is + * rolled over if it is too large. + */ +DLLEXPORT void setupLogfile(); - /** - * @brief Set a log level for future logging. - * - * Pass in a value from the LOG* enum, above. Use 0 to - * disable logging. Values greater than LOGVERBOSE are - * limited to LOGVERBOSE, which will log everything. - * - * Practical values are 0, 1, 2, and 6. - */ - DLLEXPORT void setupLogLevel( unsigned int level ); +/** + * @brief Set a log level for future logging. + * + * Pass in a value from the LOG* enum, above. Use 0 to + * disable logging. Values greater than LOGVERBOSE are + * limited to LOGVERBOSE, which will log everything. + * + * Practical values are 0, 1, 2, and 6. + */ +DLLEXPORT void setupLogLevel( unsigned int level ); - /** @brief Return the configured log-level. */ - DLLEXPORT unsigned int logLevel(); +/** @brief Return the configured log-level. */ +DLLEXPORT unsigned int logLevel(); - /** @brief Would the given @p level really be logged? */ - DLLEXPORT bool logLevelEnabled( unsigned int level ); +/** @brief Would the given @p level really be logged? */ +DLLEXPORT bool logLevelEnabled( unsigned int level ); - /** - * @brief Row-oriented formatted logging. - * - * Use DebugRow to produce multiple rows of 2-column output - * in a debugging statement. For instance, - * cDebug() << DebugRow(1,12) - * << DebugRow(2,24) - * will produce a single timestamped debug line with continuations. - * Each DebugRow produces one line of output, with the two values. - */ - template - struct DebugRow +/** + * @brief Row-oriented formatted logging. + * + * Use DebugRow to produce multiple rows of 2-column output + * in a debugging statement. For instance, + * cDebug() << DebugRow(1,12) + * << DebugRow(2,24) + * will produce a single timestamped debug line with continuations. + * Each DebugRow produces one line of output, with the two values. + */ +template < typename T, typename U > +struct DebugRow +{ +public: + explicit DebugRow( const T& t, const U& u ) + : first( t ) + , second( u ) { - public: - explicit DebugRow(const T& t, const U& u) - : first(t) - , second(u) - {} - - const T& first; - const U& second; - } ; - - /** - * @brief List-oriented formatted logging. - * - * Use DebugList to produce multiple rows of output in a debugging - * statement. For instance, - * cDebug() << DebugList( QStringList() << "foo" << "bar" ) - * will produce a single timestamped debug line with continuations. - * Each element of the list of strings will be logged on a separate line. - */ - struct DebugList - { - explicit DebugList( const QStringList& l ) - : list(l) - {} - - const QStringList& list; - } ; - - /** - * @brief Map-oriented formatted logging. - * - * Use DebugMap to produce multiple rows of output in a debugging - * statement from a map. The output is intentionally a bit-yaml-ish. - * cDebug() << DebugMap( map ) - * will produce a single timestamped debug line with continuations. - * The continued lines will have a key (from the map) and a value - * on each line. - */ - struct DebugMap - { - public: - explicit DebugMap(const QVariantMap& m) - : map( m ) - {} - - const QVariantMap& map; - } ; - - /** @brief output operator for DebugRow */ - template - inline QDebug& - operator <<( QDebug& s, const DebugRow& t ) - { - s << Continuation << t.first << ':' << ' ' << t.second; - return s; } - /** @brief output operator for DebugList */ - inline QDebug& - operator <<( QDebug& s, const DebugList& c ) + const T& first; + const U& second; +}; + +/** + * @brief List-oriented formatted logging. + * + * Use DebugList to produce multiple rows of output in a debugging + * statement. For instance, + * cDebug() << DebugList( QStringList() << "foo" << "bar" ) + * will produce a single timestamped debug line with continuations. + * Each element of the list of strings will be logged on a separate line. + */ +struct DebugList +{ + explicit DebugList( const QStringList& l ) + : list( l ) { - for( const auto& i : c.list ) - s << Continuation << i; - return s; } - /** @brief supporting method for outputting a DebugMap */ - QString toString( const QVariant& v ); + const QStringList& list; +}; - /** @brief output operator for DebugMap */ - inline QDebug& - operator <<( QDebug& s, const DebugMap& t ) +/** + * @brief Map-oriented formatted logging. + * + * Use DebugMap to produce multiple rows of output in a debugging + * statement from a map. The output is intentionally a bit-yaml-ish. + * cDebug() << DebugMap( map ) + * will produce a single timestamped debug line with continuations. + * The continued lines will have a key (from the map) and a value + * on each line. + */ +struct DebugMap +{ +public: + explicit DebugMap( const QVariantMap& m ) + : map( m ) { - for ( auto it = t.map.constBegin(); it != t.map.constEnd(); ++it ) - s << Continuation << it.key().toUtf8().constData() << ':' << ' ' << toString( it.value() ).toUtf8().constData(); - return s; } -} // namespace + + const QVariantMap& map; +}; + +/** @brief output operator for DebugRow */ +template < typename T, typename U > +inline QDebug& +operator<<( QDebug& s, const DebugRow< T, U >& t ) +{ + s << Continuation << t.first << ':' << ' ' << t.second; + return s; +} + +/** @brief output operator for DebugList */ +inline QDebug& +operator<<( QDebug& s, const DebugList& c ) +{ + for ( const auto& i : c.list ) + { + s << Continuation << i; + } + return s; +} + +/** @brief supporting method for outputting a DebugMap */ +QString toString( const QVariant& v ); + +/** @brief output operator for DebugMap */ +inline QDebug& +operator<<( QDebug& s, const DebugMap& t ) +{ + for ( auto it = t.map.constBegin(); it != t.map.constEnd(); ++it ) + { + s << Continuation << it.key().toUtf8().constData() << ':' << ' ' << toString( it.value() ).toUtf8().constData(); + } + return s; +} +} // namespace Logger #define cDebug Logger::CDebug -#define cWarning() Logger::CDebug(Logger::LOGWARNING) -#define cError() Logger::CDebug(Logger::LOGERROR) +#define cWarning() Logger::CDebug( Logger::LOGWARNING ) +#define cError() Logger::CDebug( Logger::LOGERROR ) #endif diff --git a/src/libcalamares/utils/NamedEnum.h b/src/libcalamares/utils/NamedEnum.h index 5ff62f54c..76c8ed3bb 100644 --- a/src/libcalamares/utils/NamedEnum.h +++ b/src/libcalamares/utils/NamedEnum.h @@ -31,12 +31,12 @@ #include -#include -#include #include +#include +#include /** @brief Type for collecting parts of a named enum. */ -template +template < typename T > struct NamedEnumTable { using string_t = QString; @@ -53,7 +53,11 @@ struct NamedEnumTable * * static const NamedEnumTable c{ {"red", Colors::Red } }; */ - NamedEnumTable( const std::initializer_list< pair_t >& v ) : table( v ) { /* static_assert( v.size() > 0 ); */ } + NamedEnumTable( const std::initializer_list< pair_t >& v ) + : table( v ) + { + /* static_assert( v.size() > 0 ); */ + } /** @brief Find a name @p s in the table. * @@ -89,8 +93,8 @@ struct NamedEnumTable { ok = false; - for ( const auto &p : table ) - if ( s == p.second) + for ( const auto& p : table ) + if ( s == p.second ) { ok = true; return p.first; @@ -99,13 +103,14 @@ struct NamedEnumTable // ok is still false return string_t(); } -} ; +}; /** @brief Smashes an enum value to its underlying type. */ -template -constexpr typename std::underlying_type::type smash( const E e ) +template < typename E > +constexpr typename std::underlying_type< E >::type +smash( const E e ) { - return static_cast::type>( e ); + return static_cast< typename std::underlying_type< E >::type >( e ); } #endif diff --git a/src/libcalamares/utils/NamedSuffix.h b/src/libcalamares/utils/NamedSuffix.h index f58277698..8ad52edea 100644 --- a/src/libcalamares/utils/NamedSuffix.h +++ b/src/libcalamares/utils/NamedSuffix.h @@ -42,7 +42,7 @@ #include "NamedEnum.h" /** @brief Template that takes the enum type to work with and a special none-enum. */ -template +template < typename T, T _none > class NamedSuffix { public: @@ -52,13 +52,13 @@ public: /** @brief Empty value. */ NamedSuffix() - : m_value(0) + : m_value( 0 ) , m_unit( none ) { } /** @brief Specific value and unit. */ - NamedSuffix( int value, unit_t unit ) + NamedSuffix( qint64 value, unit_t unit ) : m_value( value ) , m_unit( unit ) { @@ -69,13 +69,13 @@ public: * This parses the given string @p s by comparing with the suffixes * in @p table and uses the first matching suffix as the unit. */ - NamedSuffix( const NamedEnumTable& table, const QString& s ) + NamedSuffix( const NamedEnumTable< T >& table, const QString& s ) : NamedSuffix() { - for( const auto& suffix : table.table ) + for ( const auto& suffix : table.table ) if ( s.endsWith( suffix.first ) ) { - m_value = s.left( s.length() - suffix.first.length() ).toInt(); + m_value = s.left( s.length() - suffix.first.length() ).toLongLong(); m_unit = suffix.second; break; } @@ -89,7 +89,7 @@ public: */ NamedSuffix( const QString& s ); - int value() const { return m_value; } + qint64 value() const { return m_value; } unit_t unit() const { return m_unit; } /** @brief Check that a value-unit combination is valid. @@ -100,7 +100,7 @@ public: bool isValid() const; protected: - int m_value; + qint64 m_value; unit_t m_unit; }; diff --git a/src/libcalamares/utils/PluginFactory.cpp b/src/libcalamares/utils/PluginFactory.cpp index 124af16f4..50b88ebfd 100644 --- a/src/libcalamares/utils/PluginFactory.cpp +++ b/src/libcalamares/utils/PluginFactory.cpp @@ -1,124 +1,9 @@ /* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * Copyright 2019, Adriaan de Groot * - * Based on KPluginFactory from KCoreAddons, KDE project - * Copyright 2007, Matthias Kretz - * Copyright 2007, Bernhard Loos - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . */ #include "PluginFactory.h" -#include "PluginFactory_p.h" -#include -#include - -Q_GLOBAL_STATIC( QObjectCleanupHandler, factorycleanup ) - -namespace Calamares -{ - -PluginFactory::PluginFactory() - : pd_ptr( new PluginFactoryPrivate ) -{ - pd_ptr->q_ptr = this; - - factorycleanup()->add( this ); -} - -PluginFactory::PluginFactory( PluginFactoryPrivate& d ) - : pd_ptr( &d ) -{ - factorycleanup()->add( this ); -} - -PluginFactory::~PluginFactory() -{ - delete pd_ptr; -} - -void PluginFactory::doRegisterPlugin( const QString& keyword, const QMetaObject* metaObject, CreateInstanceFunction instanceFunction ) -{ - Q_ASSERT( metaObject ); - - // we allow different interfaces to be registered without keyword - if ( !keyword.isEmpty() ) - { - if ( pd_ptr->createInstanceHash.contains( keyword ) ) - qWarning() << "A plugin with the keyword" << keyword << "was already registered. A keyword must be unique!"; - pd_ptr->createInstanceHash.insert( keyword, PluginFactoryPrivate::Plugin( metaObject, instanceFunction ) ); - } - else - { - const QList clashes( pd_ptr->createInstanceHash.values( keyword ) ); - const QMetaObject* superClass = metaObject->superClass(); - if ( superClass ) - { - for ( const PluginFactoryPrivate::Plugin& plugin : clashes ) - { - for ( const QMetaObject* otherSuper = plugin.first->superClass(); otherSuper; - otherSuper = otherSuper->superClass() ) - { - if ( superClass == otherSuper ) - qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; - } - } - } - for ( const PluginFactoryPrivate::Plugin& plugin : clashes ) - { - superClass = plugin.first->superClass(); - if ( superClass ) - { - for ( const QMetaObject* otherSuper = metaObject->superClass(); otherSuper; - otherSuper = otherSuper->superClass() ) - { - if ( superClass == otherSuper ) - qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; - } - } - } - pd_ptr->createInstanceHash.insertMulti( keyword, PluginFactoryPrivate::Plugin( metaObject, instanceFunction ) ); - } -} - -QObject* PluginFactory::create( const char* iface, QWidget* parentWidget, QObject* parent, const QString& keyword ) -{ - QObject* obj = nullptr; - - const QList candidates( pd_ptr->createInstanceHash.values( keyword ) ); - // for !keyword.isEmpty() candidates.count() is 0 or 1 - - for ( const PluginFactoryPrivate::Plugin& plugin : candidates ) - { - for ( const QMetaObject* current = plugin.first; current; current = current->superClass() ) - { - if ( 0 == qstrcmp( iface, current->className() ) ) - { - if ( obj ) - qWarning() << "ambiguous interface requested from a DSO containing more than one plugin"; - obj = plugin.second( parentWidget, parent ); - break; - } - } - } - - if ( obj ) - emit objectCreated( obj ); - return obj; -} - -} +CalamaresPluginFactory::~CalamaresPluginFactory() {} diff --git a/src/libcalamares/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h index 1ab485779..65ee6eee9 100644 --- a/src/libcalamares/utils/PluginFactory.h +++ b/src/libcalamares/utils/PluginFactory.h @@ -24,295 +24,81 @@ #ifndef UTILS_PLUGINFACTORY_H #define UTILS_PLUGINFACTORY_H -#include "DllMacro.h" - -#include -#include -#include - -namespace Calamares -{ -class PluginFactoryPrivate; -} +#include #define CalamaresPluginFactory_iid "io.calamares.PluginFactory" -/** - * \relates PluginFactory +/** @brief Plugin factory for Calamares * - * CALAMARES_PLUGIN_FACTORY_DECLARATION declares the PluginFactory subclass. This macro - * can be used in a header file. + * Try to re-use KPluginFactory as much as possible (since the + * old code for PluginFactory was a fork of an old version of + * exactly that). * - * \param name The name of the PluginFactory derived class. - * - * \see CALAMARES_PLUGIN_FACTORY - * \see CALAMARES_PLUGIN_FACTORY_DEFINITION + * The current createInstance() method passes more arguments + * to the job and viewstep constructors than we want; chasing + * that change means modifying each Calamares module. This class + * implements a version of createInstance() with fewer arguments + * and overloads registerPlugin() to use that. */ -#define CALAMARES_PLUGIN_FACTORY_DECLARATION(name) \ - class name : public Calamares::PluginFactory \ - { \ - Q_OBJECT \ - Q_INTERFACES(Calamares::PluginFactory) \ - Q_PLUGIN_METADATA(IID CalamaresPluginFactory_iid) \ - public: \ - explicit name(); \ - ~name(); \ - private: \ - void init(); \ - }; - -/** - * \relates PluginFactory - * CALAMARES_PLUGIN_FACTORY_DEFINITION defines the PluginFactory subclass. This macro - * can not be used in a header file. - * - * \param name The name of the PluginFactory derived class. - * - * \param pluginRegistrations Code to be inserted into the constructor of the - * class. Usually a series of registerPlugin() calls. - * - * \see CALAMARES_PLUGIN_FACTORY - * \see CALAMARES_PLUGIN_FACTORY_DECLARATION - */ -#define CALAMARES_PLUGIN_FACTORY_DEFINITION(name, pluginRegistrations) \ - name::name() \ - { \ - pluginRegistrations \ - } \ - name::~name() {} - -namespace Calamares -{ - -/** - * \class PluginFactory PluginFactory.h - * - * PluginFactory provides a convenient way to provide factory-style plugins. - * Qt plugins provide a singleton object, but a common pattern is for plugins - * to generate as many objects of a particular type as the application requires. - * By using PluginFactory, you can avoid implementing the factory pattern - * yourself. - * - * PluginFactory also allows plugins to provide multiple different object - * types, indexed by keywords. - * - * The objects created by PluginFactory must inherit QObject, and must have a - * standard constructor pattern: - * \li if the object is a KPart::Part, it must be of the form - * \code - * T(QWidget *parentWidget, QObject *parent, const QVariantList &args) - * \endcode - * \li if it is a QWidget, it must be of the form - * \code - * T(QWidget *parent, const QVariantList &args) - * \endcode - * \li otherwise it must be of the form - * \code - * T(QObject *parent, const QVariantList &args) - * \endcode - * - * You should typically use CALAMARES_PLUGIN_FACTORY_DEFINITION() in your plugin code to - * create the factory. The pattern is - * - * \code - * #include "utils/PluginFactory.h" - * - * class MyPlugin : public PluginInterface - * { - * public: - * MyPlugin(QObject *parent, const QVariantList &args) - * : PluginInterface(parent) - * {} - * }; - * - * CALAMARES_PLUGIN_FACTORY_DEFINITION(MyPluginFactory, - * registerPlugin(); - * ) - * \endcode - * - * If you want to load a library use KPluginLoader. - * The application that wants to instantiate plugin classes can do the following: - * \code - * PluginFactory *factory = KPluginLoader("libraryname").factory(); - * if (factory) { - * PluginInterface *p1 = factory->create(parent); - * OtherInterface *p2 = factory->create(parent); - * NextInterface *p3 = factory->create("keyword1", parent); - * NextInterface *p3 = factory->create("keyword2", parent); - * } - * \endcode - * - * \author Matthias Kretz - * \author Bernhard Loos - */ -class DLLEXPORT PluginFactory : public QObject +class CalamaresPluginFactory : public KPluginFactory { Q_OBJECT - friend class PluginFactoryPrivate; public: - /** - * This constructor creates a factory for a plugin. - */ - explicit PluginFactory(); - - /** - * This destroys the PluginFactory. - */ - virtual ~PluginFactory(); - - /** - * Use this method to create an object. It will try to create an object which inherits - * \p T. If it has multiple choices, you will get a fatal error (kFatal()), so be careful - * to request a unique interface or use keywords. - * - * \tparam T The interface for which an object should be created. The object will inherit \p T. - * \param parent The parent of the object. If \p parent is a widget type, it will also passed - * to the parentWidget argument of the CreateInstanceFunction for the object. - * \returns A pointer to the created object is returned, or 0 if an error occurred. - */ - template - T* create( QObject* parent = nullptr ); - - /** - * Use this method to create an object. It will try to create an object which inherits - * \p T and was registered with \p keyword. - * - * \tparam T The interface for which an object should be created. The object will inherit \p T. - * \param keyword The keyword of the object. - * \param parent The parent of the object. If \p parent is a widget type, it will also passed - * to the parentWidget argument of the CreateInstanceFunction for the object. - * \returns A pointer to the created object is returned, or 0 if an error occurred. - */ - template - T* create( const QString& keyword, QObject* parent = nullptr ); - -Q_SIGNALS: - void objectCreated( QObject* object ); - -protected: - /** - * Function pointer type to a function that instantiates a plugin. - */ - typedef QObject* ( *CreateInstanceFunction )( QWidget*, QObject* ); - - /** - * This is used to detect the arguments need for the constructor of plugin classes. - * You can inherit it, if you want to add new classes and still keep support for the old ones. - */ - template - struct InheritanceChecker + explicit CalamaresPluginFactory() + : KPluginFactory() { - CreateInstanceFunction createInstanceFunction( QWidget* ) - { - return &createInstance; - } - CreateInstanceFunction createInstanceFunction( ... ) - { - return &createInstance; - } - }; - - explicit PluginFactory( PluginFactoryPrivate& dd ); - - /** - * Registers a plugin with the factory. Call this function from the constructor of the - * PluginFactory subclass to make the create function able to instantiate the plugin when asked - * for an interface the plugin implements. - * - * \tparam T the name of the plugin class - * - * \param keyword An optional keyword as unique identifier for the plugin. This allows you to - * put more than one plugin with the same interface into the same library using the same - * factory. X-KDE-PluginKeyword is a convenient way to specify the keyword in a desktop file. - * - * \param instanceFunction A function pointer to a function that creates an instance of the - * plugin. The default function that will be used depends on the type of interface. If the - * interface inherits from - * \li \c KParts::Part the function will call - * \code - * new T(QWidget *parentWidget, QObject *parent) - * \endcode - * \li \c QWidget the function will call - * \code - * new T(QWidget *parent) - * \endcode - * \li else the function will call - * \code - * new T(QObject *parent) - * \endcode - */ - template - void registerPlugin( const QString& keyword = QString(), - CreateInstanceFunction instanceFunction - = InheritanceChecker().createInstanceFunction( reinterpret_cast( 0 ) ) ) - { - doRegisterPlugin( keyword, &T::staticMetaObject, instanceFunction ); } + ~CalamaresPluginFactory() override; - PluginFactoryPrivate* const pd_ptr; - - /** - * This function is called when the factory asked to create an Object. + /** @brief Create an object from the factory. * - * You may reimplement it to provide a very flexible factory. This is especially useful to - * provide generic factories for plugins implemeted using a scripting language. - * - * \param iface The staticMetaObject::className() string identifying the plugin interface that - * was requested. E.g. for KCModule plugins this string will be "KCModule". - * \param parentWidget Only used if the requested plugin is a KPart. - * \param parent The parent object for the plugin object. - * \param keyword A string that uniquely identifies the plugin. If a KService is used this - * keyword is read from the X-KDE-PluginKeyword entry in the .desktop file. + * Ignores all the @p args since they are not used. Calls + * Calamares constructors for the Jobs and ViewSteps. */ - virtual QObject* create( const char* iface, QWidget* parentWidget, QObject* parent, const QString& keyword ); - - template - static QObject* createInstance( QWidget* parentWidget, QObject* parent ) + template < class impl, class ParentType > + static QObject* createInstance( QWidget* parentWidget, QObject* parent, const QVariantList& args ) { Q_UNUSED( parentWidget ) + Q_UNUSED( args ) ParentType* p = nullptr; if ( parent ) { - p = qobject_cast( parent ); + p = qobject_cast< ParentType* >( parent ); Q_ASSERT( p ); } return new impl( p ); } -private: - void doRegisterPlugin( const QString& keyword, const QMetaObject* metaObject, CreateInstanceFunction instanceFunction ); + /** @brief register a plugin + * + * The Calamares version doesn't accept keywords, and uses + * the Calamares createInstance() version which ignores + * the QVariantList of arguments. + */ + template < class T > + void registerPlugin() + { + KPluginFactory::registerPlugin< T >( QString(), &createInstance< T, QObject > ); + } }; -template -inline T* PluginFactory::create( QObject* parent ) -{ - QObject* o = create( T::staticMetaObject.className(), - parent && parent->isWidgetType() ? reinterpret_cast( parent ) : nullptr, - parent, - QString() ); - - T* t = qobject_cast( o ); - if ( !t ) - delete o; - return t; -} - -template -inline T* PluginFactory::create( const QString& keyword, QObject* parent ) -{ - QObject* o = create( T::staticMetaObject.className(), - parent && parent->isWidgetType() ? reinterpret_cast( parent ) : nullptr, - parent, - keyword ); - - T* t = qobject_cast( o ); - if ( !t ) - delete o; - return t; -} - -} // namespace - -Q_DECLARE_INTERFACE( Calamares::PluginFactory, CalamaresPluginFactory_iid ) +/** @brief declare a Calamares Plugin Factory + * + * This would be defined as K_PLUGIN_FACTORY_DECLARATION_WITH_BASEFACTORY, + * except that does not actually use the base factory class that is + * passed in. + */ +#define CALAMARES_PLUGIN_FACTORY_DECLARATION( name ) \ + class name : public CalamaresPluginFactory \ + { \ + Q_OBJECT \ + Q_INTERFACES( KPluginFactory ) \ + Q_PLUGIN_METADATA( IID CalamaresPluginFactory_iid ) \ + public: \ + explicit name(); \ + ~name(); \ + }; +#define CALAMARES_PLUGIN_FACTORY_DEFINITION( name, pluginRegistrations ) \ + K_PLUGIN_FACTORY_DEFINITION_WITH_BASEFACTORY( name, CalamaresPluginFactory, pluginRegistrations ) #endif diff --git a/src/libcalamares/utils/PluginFactory_p.h b/src/libcalamares/utils/PluginFactory_p.h deleted file mode 100644 index 7a6db217e..000000000 --- a/src/libcalamares/utils/PluginFactory_p.h +++ /dev/null @@ -1,54 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2015, Teo Mrnjavac - * - * Based on KPluginFactory from KCoreAddons, KDE project - * Copyright 2007, Matthias Kretz - * Copyright 2007, Bernhard Loos - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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_PLUGINFACTORY_P_H -#define UTILS_PLUGINFACTORY_P_H - -#include "PluginFactory.h" - -#include - -namespace Calamares -{ - -class PluginFactoryPrivate -{ - Q_DECLARE_PUBLIC(PluginFactory) -protected: - typedef QPair Plugin; - - PluginFactoryPrivate() - : catalogInitialized( false ) - , q_ptr( nullptr ) - {} - ~PluginFactoryPrivate() {} - - QHash createInstanceHash; - QString catalogName; - bool catalogInitialized; - - PluginFactory *q_ptr; -}; - -} // namespace - -#endif diff --git a/src/libcalamares/utils/Retranslator.cpp b/src/libcalamares/utils/Retranslator.cpp index 93560f4ae..4c7c3b3f5 100644 --- a/src/libcalamares/utils/Retranslator.cpp +++ b/src/libcalamares/utils/Retranslator.cpp @@ -25,92 +25,168 @@ #include #include - -namespace CalamaresUtils { -static QTranslator* s_brandingTranslator = nullptr; -static QTranslator* s_translator = nullptr; -static QString s_translatorLocaleName; - -void -installTranslator( const QLocale& locale, - const QString& brandingTranslationsPrefix, - QObject* parent ) +/** @brief Helper class for loading translations + * + * This is used by the loadSingletonTranslator() function to hand off + * work to translation-type specific code. + */ +struct TranslationLoader { - QString localeName = locale.name(); - localeName.replace( "-", "_" ); - - if ( localeName == "C" ) - localeName = "en"; - - // Special case of sr@latin - // - // See top-level CMakeLists.txt about special cases for translation loading. - if ( locale.language() == QLocale::Language::Serbian && locale.script() == QLocale::Script::LatinScript ) - localeName = QStringLiteral( "sr@latin" ); - - cDebug() << "Looking for translations for" << localeName; - - QTranslator* translator = nullptr; - - // Branding translations - if ( !brandingTranslationsPrefix.isEmpty() ) + static QString mungeLocaleName( const QLocale& locale ) { - QString brandingTranslationsDirPath( brandingTranslationsPrefix ); - brandingTranslationsDirPath.truncate( brandingTranslationsPrefix.lastIndexOf( - QDir::separator() ) ); - QDir brandingTranslationsDir( brandingTranslationsDirPath ); - if ( brandingTranslationsDir.exists() ) + QString localeName = locale.name(); + localeName.replace( "-", "_" ); + + if ( localeName == "C" ) { - QString filenameBase( brandingTranslationsPrefix ); - filenameBase.remove( 0, brandingTranslationsPrefix.lastIndexOf( - QDir::separator() ) + 1 ); - translator = new QTranslator( parent ); - if ( translator->load( locale, - filenameBase, - "_", - brandingTranslationsDir.absolutePath() ) ) - { - cDebug() << Logger::SubEntry << "Branding using locale:" << localeName; - } - else - { - cDebug() << Logger::SubEntry << "Branding using default, system locale not found:" << localeName; - translator->load( brandingTranslationsPrefix + "en" ); - } - - if ( s_brandingTranslator ) - { - QCoreApplication::removeTranslator( s_brandingTranslator ); - delete s_brandingTranslator; - } - - QCoreApplication::installTranslator( translator ); - s_brandingTranslator = translator; + localeName = "en"; } + + // Special case of sr@latin + // + // See top-level CMakeLists.txt about special cases for translation loading. + if ( locale.language() == QLocale::Language::Serbian && locale.script() == QLocale::Script::LatinScript ) + { + localeName = QStringLiteral( "sr@latin" ); + } + return localeName; } - // Calamares translations - translator = new QTranslator( parent ); - if ( translator->load( QString( ":/lang/calamares_" ) + localeName ) ) + TranslationLoader( const QLocale& locale ) + : m_locale( locale ) + , m_localeName( mungeLocaleName( locale ) ) { - cDebug() << Logger::SubEntry << "Calamares using locale:" << localeName; + } + + virtual ~TranslationLoader(); + /// @brief Loads @p translator with the specific translations of this type + virtual bool tryLoad( QTranslator* translator ) = 0; + + const QLocale& m_locale; + QString m_localeName; +}; + +/// @brief Loads translations for branding +struct BrandingLoader : public TranslationLoader +{ + BrandingLoader( const QLocale& locale, const QString& prefix ) + : TranslationLoader( locale ) + , m_prefix( prefix ) + { + } + + bool tryLoad( QTranslator* translator ) override; + + QString m_prefix; +}; + +/// @brief Loads regular Calamares translations (program text) +struct CalamaresLoader : public TranslationLoader +{ + using TranslationLoader::TranslationLoader; + bool tryLoad( QTranslator* translator ) override; +}; + +/// @brief Loads timezone name translations +struct TZLoader : public TranslationLoader +{ + using TranslationLoader::TranslationLoader; + bool tryLoad( QTranslator* translator ) override; +}; + +TranslationLoader::~TranslationLoader() {} + +bool +BrandingLoader::tryLoad( QTranslator* translator ) +{ + if ( m_prefix.isEmpty() ) + { + return false; + } + QString brandingTranslationsDirPath( m_prefix ); + brandingTranslationsDirPath.truncate( m_prefix.lastIndexOf( QDir::separator() ) ); + QDir brandingTranslationsDir( brandingTranslationsDirPath ); + if ( brandingTranslationsDir.exists() ) + { + QString filenameBase( m_prefix ); + filenameBase.remove( 0, m_prefix.lastIndexOf( QDir::separator() ) + 1 ); + if ( translator->load( m_locale, filenameBase, "_", brandingTranslationsDir.absolutePath() ) ) + { + cDebug() << Logger::SubEntry << "Branding using locale:" << m_localeName; + return true; + } + else + { + cDebug() << Logger::SubEntry << "Branding using default, system locale not found:" << m_localeName; + // TODO: this loads something completely different + return translator->load( m_prefix + "en" ); + } + } + return false; +} + +bool +CalamaresLoader::tryLoad( QTranslator* translator ) +{ + if ( translator->load( QString( ":/lang/calamares_" ) + m_localeName ) ) + { + cDebug() << Logger::SubEntry << "Calamares using locale:" << m_localeName; + return true; } else { - cDebug() << Logger::SubEntry << "Calamares using default, system locale not found:" << localeName; - translator->load( QString( ":/lang/calamares_en" ) ); + cDebug() << Logger::SubEntry << "Calamares using default, system locale not found:" << m_localeName; + return translator->load( QString( ":/lang/calamares_en" ) ); } +} - if ( s_translator ) +bool +TZLoader::tryLoad( QTranslator* translator ) +{ + if ( translator->load( QString( ":/lang/tz_" ) + m_localeName ) ) { - QCoreApplication::removeTranslator( s_translator ); - delete s_translator; + cDebug() << Logger::SubEntry << "Calamares Timezones using locale:" << m_localeName; + return true; + } + else + { + cDebug() << Logger::SubEntry << "Calamares Timezones using default, system locale not found:" << m_localeName; + return translator->load( QString( ":/lang/tz_en" ) ); + } +} + +static void +loadSingletonTranslator( TranslationLoader&& loader, QTranslator*& translator_p ) +{ + QTranslator* translator = new QTranslator(); + loader.tryLoad( translator ); + + if ( translator_p ) + { + QCoreApplication::removeTranslator( translator_p ); + delete translator_p; } QCoreApplication::installTranslator( translator ); - s_translator = translator; + translator_p = translator; +} - s_translatorLocaleName = localeName; +namespace CalamaresUtils +{ +static QTranslator* s_brandingTranslator = nullptr; +static QTranslator* s_translator = nullptr; +static QTranslator* s_tztranslator = nullptr; +static QString s_translatorLocaleName; + +void +installTranslator( const QLocale& locale, const QString& brandingTranslationsPrefix, QObject* ) +{ + loadSingletonTranslator( BrandingLoader( locale, brandingTranslationsPrefix ), s_brandingTranslator ); + loadSingletonTranslator( TZLoader( locale ), s_tztranslator ); + + CalamaresLoader l( locale ); // because we want the extracted localeName + loadSingletonTranslator( std::move( l ), s_translator ); + s_translatorLocaleName = l.m_localeName; } @@ -120,22 +196,26 @@ translatorLocaleName() return s_translatorLocaleName; } -void -Retranslator::attachRetranslator( QObject* parent, - std::function< void ( void ) > retranslateFunc ) +Retranslator* +Retranslator::retranslatorFor( QObject* parent ) { Retranslator* r = nullptr; for ( QObject* child : parent->children() ) { r = qobject_cast< Retranslator* >( child ); if ( r ) - break; + { + return r; + } } - if ( !r ) - r = new Retranslator( parent ); + return new Retranslator( parent ); +} - r->m_retranslateFuncList.append( retranslateFunc ); +void +Retranslator::attachRetranslator( QObject* parent, std::function< void( void ) > retranslateFunc ) +{ + retranslatorFor( parent )->m_retranslateFuncList.append( retranslateFunc ); retranslateFunc(); } @@ -155,7 +235,10 @@ Retranslator::eventFilter( QObject* obj, QEvent* e ) if ( e->type() == QEvent::LanguageChange ) { foreach ( std::function< void() > func, m_retranslateFuncList ) + { func(); + } + emit languageChange(); } } // pass the event on to the base @@ -163,4 +246,4 @@ Retranslator::eventFilter( QObject* obj, QEvent* e ) } -} // namespace CalamaresUtils +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Retranslator.h b/src/libcalamares/utils/Retranslator.h index e06630630..58c60b761 100644 --- a/src/libcalamares/utils/Retranslator.h +++ b/src/libcalamares/utils/Retranslator.h @@ -32,27 +32,31 @@ class QLocale; namespace CalamaresUtils { - /** - * @brief installTranslator changes the application language. - * @param locale the new locale. - * @param brandingTranslationsPrefix the branding path prefix, from Calamares::Branding. - * @param parent the parent QObject. - */ - DLLEXPORT void installTranslator( const QLocale& locale, - const QString& brandingTranslationsPrefix, - QObject* parent ); +/** + * @brief installTranslator changes the application language. + * @param locale the new locale. + * @param brandingTranslationsPrefix the branding path prefix, from Calamares::Branding. + * @param parent the parent QObject. + */ +DLLEXPORT void installTranslator( const QLocale& locale, const QString& brandingTranslationsPrefix, QObject* parent ); - DLLEXPORT QString translatorLocaleName(); +DLLEXPORT QString translatorLocaleName(); class Retranslator : public QObject { Q_OBJECT public: - static void attachRetranslator( QObject* parent, - std::function< void( void ) > retranslateFunc ); + /// @brief Call @p retranslateFunc when the language changes + static void attachRetranslator( QObject* parent, std::function< void( void ) > retranslateFunc ); + /// @brief What retranslator belongs to @p parent (may create one) + static Retranslator* retranslatorFor( QObject* parent ); + /// @brief Call @p retranslateFunc when the language changes void addRetranslateFunc( std::function< void( void ) > retranslateFunc ); +signals: + void languageChange(); + protected: bool eventFilter( QObject* obj, QEvent* e ) override; @@ -63,11 +67,17 @@ private: }; -} // namespace +} // namespace CalamaresUtils -#define CALAMARES_RETRANSLATE(body) \ - CalamaresUtils::Retranslator::attachRetranslator( this, [=] { body } ); -#define CALAMARES_RETRANSLATE_WIDGET(widget,body) \ +#define CALAMARES_RETRANSLATE( body ) CalamaresUtils::Retranslator::attachRetranslator( this, [=] { body } ); +#define CALAMARES_RETRANSLATE_WIDGET( widget, body ) \ CalamaresUtils::Retranslator::attachRetranslator( widget, [=] { body } ); +#define CALAMARES_RETRANSLATE_SLOT( slotfunc ) \ + { \ + this->connect( CalamaresUtils::Retranslator::retranslatorFor( this ), \ + &CalamaresUtils::Retranslator::languageChange, \ + this, \ + slotfunc ); \ + } #endif diff --git a/src/libcalamares/utils/String.cpp b/src/libcalamares/utils/String.cpp index a39ebd8c7..e39132328 100644 --- a/src/libcalamares/utils/String.cpp +++ b/src/libcalamares/utils/String.cpp @@ -31,6 +31,11 @@ namespace CalamaresUtils QString removeDiacritics( const QString& string ) { + // *INDENT-OFF* + // clang-format off + // Map these extended-Latin characters to ASCII; keep the + // layout so that one line in *diacriticLetters* corresponds + // to one line of replacements in *noDiacriticLetters*. static const QString diacriticLetters = QString::fromUtf8( "ŠŒŽšœžŸ¥µÀ" "ÁÂÃÄÅÆÇÈÉÊ" @@ -65,9 +70,11 @@ removeDiacritics( const QString& string ) "r", "A", "a", "E", "e", "L", "l", "N", "n", "S", "s", "Z", "z", "Z", "z" }; + // clang-format on + // *INDENT-ON* QString output; - for ( const QChar &c : string ) + for ( const QChar& c : string ) { int i = diacriticLetters.indexOf( c ); if ( i < 0 ) @@ -112,14 +119,14 @@ QString obscure( const QString& string ) { QString result; - const QChar *unicode = string.unicode(); + const QChar* unicode = string.unicode(); for ( int i = 0; i < string.length(); ++i ) - // yes, no typo. can't encode ' ' or '!' because - // they're the unicode BOM. stupid scrambling. stupid. - result += ( unicode[ i ].unicode() <= 0x21 ) ? - unicode[ i ] : - QChar( 0x1001F - unicode[ i ].unicode() ); + // yes, no typo. can't encode ' ' or '!' because + // they're the unicode BOM. stupid scrambling. stupid. + { + result += ( unicode[ i ].unicode() <= 0x21 ) ? unicode[ i ] : QChar( 0x1001F - unicode[ i ].unicode() ); + } return result; } -} +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/String.h b/src/libcalamares/utils/String.h index 0a69bcf83..cdf7d0b41 100644 --- a/src/libcalamares/utils/String.h +++ b/src/libcalamares/utils/String.h @@ -34,20 +34,20 @@ */ namespace CalamaresUtils { - /** - * @brief removeDiacritics replaces letters with diacritics and ligatures with - * alternative forms and digraphs. - * @param string the string to transform. - * @return the output string with plain characters. - */ - DLLEXPORT QString removeDiacritics( const QString& string ); +/** + * @brief removeDiacritics replaces letters with diacritics and ligatures with + * alternative forms and digraphs. + * @param string the string to transform. + * @return the output string with plain characters. + */ +DLLEXPORT QString removeDiacritics( const QString& string ); - /** - * @brief obscure is a bidirectional obfuscation function, from KStringHandler. - * @param string the input string. - * @return the obfuscated string. - */ - DLLEXPORT QString obscure( const QString& string ); -} // namespace +/** + * @brief obscure is a bidirectional obfuscation function, from KStringHandler. + * @param string the input string. + * @return the obfuscated string. + */ +DLLEXPORT QString obscure( const QString& string ); +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/utils/Tests.cpp similarity index 66% rename from src/libcalamares/Tests.cpp rename to src/libcalamares/utils/Tests.cpp index 3b7624537..97edd0bc4 100644 --- a/src/libcalamares/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -18,23 +18,24 @@ #include "Tests.h" -#include "utils/CalamaresUtilsSystem.h" -#include "utils/Logger.h" -#include "utils/Yaml.h" +#include "CalamaresUtilsSystem.h" +#include "Logger.h" +#include "UMask.h" +#include "Yaml.h" #include #include +#include +#include +#include + QTEST_GUILESS_MAIN( LibCalamaresTests ) -LibCalamaresTests::LibCalamaresTests() -{ -} +LibCalamaresTests::LibCalamaresTests() {} -LibCalamaresTests::~LibCalamaresTests() -{ -} +LibCalamaresTests::~LibCalamaresTests() {} void LibCalamaresTests::initTestCase() @@ -46,9 +47,9 @@ LibCalamaresTests::testDebugLevels() { Logger::setupLogLevel( Logger::LOG_DISABLE ); - QCOMPARE( Logger::logLevel(), static_cast( Logger::LOG_DISABLE ) ); + QCOMPARE( Logger::logLevel(), static_cast< unsigned int >( Logger::LOG_DISABLE ) ); - for ( unsigned int level = 0; level <= Logger::LOGVERBOSE ; ++level ) + for ( unsigned int level = 0; level <= Logger::LOGVERBOSE; ++level ) { Logger::setupLogLevel( level ); QCOMPARE( Logger::logLevel(), level ); @@ -67,7 +68,9 @@ LibCalamaresTests::testLoadSaveYaml() QFile f( "settings.conf" ); // Find the nearest settings.conf to read for ( unsigned int up = 0; !f.exists() && ( up < 4 ); ++up ) + { f.setFileName( QString( "../" ) + f.fileName() ); + } cDebug() << QDir().absolutePath() << f.fileName() << f.exists(); QVERIFY( f.exists() ); @@ -75,7 +78,7 @@ LibCalamaresTests::testLoadSaveYaml() CalamaresUtils::saveYaml( "out.yaml", map ); auto other_map = CalamaresUtils::loadYaml( "out.yaml" ); - CalamaresUtils::saveYaml(" out2.yaml", other_map ); + CalamaresUtils::saveYaml( " out2.yaml", other_map ); QCOMPARE( map, other_map ); QFile::remove( "out.yaml" ); @@ -121,10 +124,7 @@ void LibCalamaresTests::testCommands() { using CalamaresUtils::System; - auto r = System::runCommand( - System::RunLocation::RunInHost, - { "/bin/ls", "/tmp" } - ); + auto r = System::runCommand( System::RunLocation::RunInHost, { "/bin/ls", "/tmp" } ); QVERIFY( r.getExitCode() == 0 ); @@ -136,25 +136,43 @@ LibCalamaresTests::testCommands() QVERIFY( !r.getOutput().contains( tfn.fileName() ) ); // Run ls again, now that the file exists - r = System::runCommand( - System::RunLocation::RunInHost, - { "/bin/ls", "/tmp" } - ); + r = System::runCommand( System::RunLocation::RunInHost, { "/bin/ls", "/tmp" } ); QVERIFY( r.getOutput().contains( tfn.fileName() ) ); // .. and without a working directory set, assume builddir != /tmp - r = System::runCommand( - System::RunLocation::RunInHost, - { "/bin/ls" } - ); + r = System::runCommand( System::RunLocation::RunInHost, { "/bin/ls" } ); QVERIFY( !r.getOutput().contains( tfn.fileName() ) ); - r = System::runCommand( - System::RunLocation::RunInHost, - { "/bin/ls" }, - "/tmp" - ); + r = System::runCommand( System::RunLocation::RunInHost, { "/bin/ls" }, "/tmp" ); QVERIFY( r.getOutput().contains( tfn.fileName() ) ); - - +} + +void +LibCalamaresTests::testUmask() +{ + struct stat mystat; + + QTemporaryFile ft; + QVERIFY( ft.open() ); + + // m gets the previous value of the mask (depends on the environment the + // test is run in, might be 002, might be 077), .. + mode_t m = CalamaresUtils::setUMask( 022 ); + QCOMPARE( CalamaresUtils::setUMask( m ), 022 ); // But now most recently set was 022 + + for ( mode_t i = 0; i <= 0777 /* octal! */; ++i ) + { + QByteArray name = ( ft.fileName() + QChar( '.' ) + QString::number( i, 8 ) ).toLatin1(); + CalamaresUtils::UMask um( i ); + int fd = creat( name, 0777 ); + QVERIFY( fd >= 0 ); + close( fd ); + QFileInfo fi( name ); + QVERIFY( fi.exists() ); + QCOMPARE( stat( name, &mystat ), 0 ); + QCOMPARE( mystat.st_mode & 0777, 0777 & ~i ); + QCOMPARE( unlink( name ), 0 ); + } + QCOMPARE( CalamaresUtils::setUMask( 022 ), m ); + QCOMPARE( CalamaresUtils::setUMask( m ), 022 ); } diff --git a/src/libcalamares/Tests.h b/src/libcalamares/utils/Tests.h similarity index 93% rename from src/libcalamares/Tests.h rename to src/libcalamares/utils/Tests.h index 5cdb3912b..d9140e0d0 100644 --- a/src/libcalamares/Tests.h +++ b/src/libcalamares/utils/Tests.h @@ -36,6 +36,9 @@ private Q_SLOTS: void testLoadSaveYamlExtended(); // Do a find() in the src dir void testCommands(); + + /** @brief Test that all the UMask objects work correctly. */ + void testUmask(); }; #endif diff --git a/src/libcalamares/utils/UMask.cpp b/src/libcalamares/utils/UMask.cpp new file mode 100644 index 000000000..358a52887 --- /dev/null +++ b/src/libcalamares/utils/UMask.cpp @@ -0,0 +1,44 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "UMask.h" + +#include +#include + +namespace CalamaresUtils +{ +mode_t +setUMask( mode_t u ) +{ + return umask( u ); +} + +UMask::UMask( mode_t u ) + : m_mode( setUMask( u ) ) +{ +} + +UMask::~UMask() +{ + setUMask( m_mode ); +} + +static_assert( UMask::Safe == ( S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH ), "Bad permissions." ); + +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/UMask.h b/src/libcalamares/utils/UMask.h new file mode 100644 index 000000000..752c8b066 --- /dev/null +++ b/src/libcalamares/utils/UMask.h @@ -0,0 +1,58 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef UTILS_UMASK_H +#define UTILS_UMASK_H + +#include "DllMacro.h" + +#include + +namespace CalamaresUtils +{ +/** @brief Wrapper for umask(2) + * + * Like umask(2), sets the umask and returns the previous value of the mask. + */ +DLLEXPORT mode_t setUMask( mode_t u ); + +/** @brief RAII for setting and re-setting umask. + * + * Create an object of this class to set the umask, + * and the umask is reset to its original value when + * the object goes out of scope. + */ +class DLLEXPORT UMask +{ +public: + UMask( mode_t u ); + ~UMask(); + + /** @brief a "safe" umask + * + * This umask will switch off group- and other- permissions for + * files, so that the file cannot be read, written, or executed + * except by the owner. + */ + static constexpr mode_t Safe = 077; // octal! +private: + mode_t m_mode; +}; +} // namespace CalamaresUtils + +#endif diff --git a/src/libcalamares/utils/Units.h b/src/libcalamares/utils/Units.h index 8fb34c3e0..b869d7dde 100644 --- a/src/libcalamares/utils/Units.h +++ b/src/libcalamares/utils/Units.h @@ -25,77 +25,143 @@ namespace CalamaresUtils { -/** User defined literals, 1_KiB is 1 KibiByte (= 2^10 bytes) */ -constexpr qint64 operator ""_KiB( unsigned long long m ) +/** User defined literals, 1_KB is 1 KiloByte (= 10^3 bytes) */ +constexpr qint64 operator""_KB( unsigned long long m ) { - return qint64(m) * 1024; + return qint64( m ) * 1000; +} + +/** User defined literals, 1_KiB is 1 KibiByte (= 2^10 bytes) */ +constexpr qint64 operator""_KiB( unsigned long long m ) +{ + return qint64( m ) * 1024; +} + +/** User defined literals, 1_MB is 1 MegaByte (= 10^6 bytes) */ +constexpr qint64 operator""_MB( unsigned long long m ) +{ + return operator""_KB(m)*1000; } /** User defined literals, 1_MiB is 1 MibiByte (= 2^20 bytes) */ -constexpr qint64 operator ""_MiB( unsigned long long m ) +constexpr qint64 operator""_MiB( unsigned long long m ) { - return operator ""_KiB(m) * 1024; + return operator""_KiB(m)*1024; +} + +/** User defined literals, 1_GB is 1 GigaByte (= 10^9 bytes) */ +constexpr qint64 operator""_GB( unsigned long long m ) +{ + return operator""_MB(m)*1000; } /** User defined literals, 1_GiB is 1 GibiByte (= 2^30 bytes) */ -constexpr qint64 operator ""_GiB( unsigned long long m ) +constexpr qint64 operator""_GiB( unsigned long long m ) { - return operator ""_MiB(m) * 1024; + return operator""_MiB(m)*1024; } -constexpr qint64 KiBtoBytes( unsigned long long m ) +constexpr qint64 +KBtoBytes( unsigned long long m ) { - return operator ""_KiB( m ); + return operator""_KB( m ); } -constexpr qint64 MiBtoBytes( unsigned long long m ) +constexpr qint64 +KiBtoBytes( unsigned long long m ) { - return operator ""_MiB( m ); + return operator""_KiB( m ); } -constexpr qint64 GiBtoBytes( unsigned long long m ) +constexpr qint64 +MBtoBytes( unsigned long long m ) { - return operator ""_GiB( m ); + return operator""_MB( m ); } -constexpr qint64 KiBtoBytes( double m ) +constexpr qint64 +MiBtoBytes( unsigned long long m ) { - return qint64(m * 1024); + return operator""_MiB( m ); } -constexpr qint64 MiBtoBytes( double m ) +constexpr qint64 +GBtoBytes( unsigned long long m ) { - return qint64(m * 1024 * 1024); + return operator""_GB( m ); } -constexpr qint64 GiBtoBytes( double m ) +constexpr qint64 +GiBtoBytes( unsigned long long m ) { - return qint64(m * 1024 * 1024 * 1024); + return operator""_GiB( m ); } -constexpr int BytesToMiB( qint64 b ) +constexpr qint64 +KBtoBytes( double m ) +{ + return qint64( m * 1000 ); +} + +constexpr qint64 +KiBtoBytes( double m ) +{ + return qint64( m * 1024 ); +} + +constexpr qint64 +MBtoBytes( double m ) +{ + return qint64( m * 1000 * 1000 ); +} + +constexpr qint64 +MiBtoBytes( double m ) +{ + return qint64( m * 1024 * 1024 ); +} + +constexpr qint64 +GBtoBytes( double m ) +{ + return qint64( m * 1000 * 1000 * 1000 ); +} + +constexpr qint64 +GiBtoBytes( double m ) +{ + return qint64( m * 1024 * 1024 * 1024 ); +} + +constexpr int +BytesToMiB( qint64 b ) { return int( b / 1024 / 1024 ); } -constexpr int BytesToGiB( qint64 b ) +constexpr int +BytesToGiB( qint64 b ) { return int( b / 1024 / 1024 / 1024 ); } -constexpr qint64 alignBytesToBlockSize( qint64 bytes, qint64 blocksize ) +constexpr qint64 +alignBytesToBlockSize( qint64 bytes, qint64 blocksize ) { qint64 blocks = bytes / blocksize; if ( blocks * blocksize != bytes ) + { ++blocks; + } return blocks * blocksize; } -constexpr qint64 bytesToSectors( qint64 bytes, qint64 blocksize ) +constexpr qint64 +bytesToSectors( qint64 bytes, qint64 blocksize ) { - return alignBytesToBlockSize( alignBytesToBlockSize( bytes, blocksize), MiBtoBytes(1ULL) ) / blocksize; + return alignBytesToBlockSize( alignBytesToBlockSize( bytes, blocksize ), MiBtoBytes( 1ULL ) ) / blocksize; } -} // namespace +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/Variant.cpp b/src/libcalamares/utils/Variant.cpp index f11853916..c56f9301a 100644 --- a/src/libcalamares/utils/Variant.cpp +++ b/src/libcalamares/utils/Variant.cpp @@ -39,33 +39,43 @@ getBool( const QVariantMap& map, const QString& key, bool d ) { auto v = map.value( key ); if ( v.type() == QVariant::Bool ) + { result = v.toBool(); + } } return result; } QString -getString(const QVariantMap& map, const QString& key) +getString( const QVariantMap& map, const QString& key ) { if ( map.contains( key ) ) { auto v = map.value( key ); if ( v.type() == QVariant::String ) + { return v.toString(); + } } return QString(); } -int -getInteger( const QVariantMap& map, const QString& key, int d ) +qint64 +getInteger( const QVariantMap& map, const QString& key, qint64 d ) { - int result = d; + qint64 result = d; if ( map.contains( key ) ) { auto v = map.value( key ); if ( v.type() == QVariant::Int ) + { result = v.toInt(); + } + else if ( v.type() == QVariant::LongLong ) + { + result = v.toLongLong(); + } } return result; @@ -79,9 +89,13 @@ getDouble( const QVariantMap& map, const QString& key, double d ) { auto v = map.value( key ); if ( v.type() == QVariant::Int ) + { result = v.toInt(); + } else if ( v.type() == QVariant::Double ) + { result = v.toDouble(); + } } return result; @@ -104,4 +118,4 @@ getSubMap( const QVariantMap& map, const QString& key, bool& success ) return QVariantMap(); } -} +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Variant.h b/src/libcalamares/utils/Variant.h index e60eccb4e..15f791b74 100644 --- a/src/libcalamares/utils/Variant.h +++ b/src/libcalamares/utils/Variant.h @@ -27,36 +27,36 @@ namespace CalamaresUtils { - /** - * Get a bool value from a mapping with a given key; returns the default - * if no value is stored in the map. - */ - DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d ); +/** + * Get a bool value from a mapping with a given key; returns the default + * if no value is stored in the map. + */ +DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d ); - /** - * Get a string value from a mapping; returns empty QString if no value. - */ - DLLEXPORT QString getString( const QVariantMap& map, const QString& key ); +/** + * Get a string value from a mapping; returns empty QString if no value. + */ +DLLEXPORT QString getString( const QVariantMap& map, const QString& key ); - /** - * Get an integer value from a mapping; returns @p d if no value. - */ - DLLEXPORT int getInteger( const QVariantMap& map, const QString& key, int d ); +/** + * Get an integer value from a mapping; returns @p d if no value. + */ +DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d ); - /** - * Get a double value from a mapping (integers are converted); returns @p d if no value. - */ - DLLEXPORT double getDouble( const QVariantMap& map, const QString& key, double d ); +/** + * Get a double value from a mapping (integers are converted); returns @p d if no value. + */ +DLLEXPORT double getDouble( const QVariantMap& map, const QString& key, double d ); - /** - * Returns a sub-map (i.e. a nested map) from the given mapping with the - * given key. @p success is set to true if the @p key exists - * in @p map and converts to a map, false otherwise. - * - * Returns an empty map if there is no such key or it is not a map-value. - * (e.g. if @p success is false). - */ - DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success ); -} // namespace +/** + * Returns a sub-map (i.e. a nested map) from the given mapping with the + * given key. @p success is set to true if the @p key exists + * in @p map and converts to a map, false otherwise. + * + * Returns an empty map if there is no such key or it is not a map-value. + * (e.g. if @p success is false). + */ +DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success ); +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/Yaml.cpp b/src/libcalamares/utils/Yaml.cpp index aa7ef6c2e..164c17a21 100644 --- a/src/libcalamares/utils/Yaml.cpp +++ b/src/libcalamares/utils/Yaml.cpp @@ -70,13 +70,21 @@ yamlScalarToVariant( const YAML::Node& scalarNode ) std::string stdScalar = scalarNode.as< std::string >(); QString scalarString = QString::fromStdString( stdScalar ); if ( _yamlScalarTrueValues.exactMatch( scalarString ) ) + { return QVariant( true ); + } if ( _yamlScalarFalseValues.exactMatch( scalarString ) ) + { return QVariant( false ); + } if ( QRegExp( "[-+]?\\d+" ).exactMatch( scalarString ) ) - return QVariant( scalarString.toInt() ); + { + return QVariant( scalarString.toLongLong() ); + } if ( QRegExp( "[-+]?\\d*\\.?\\d+" ).exactMatch( scalarString ) ) + { return QVariant( scalarString.toDouble() ); + } return QVariant( scalarString ); } @@ -85,8 +93,7 @@ QVariant yamlSequenceToVariant( const YAML::Node& sequenceNode ) { QVariantList vl; - for ( YAML::const_iterator it = sequenceNode.begin(); - it != sequenceNode.end(); ++it ) + for ( YAML::const_iterator it = sequenceNode.begin(); it != sequenceNode.end(); ++it ) { vl << yamlToVariant( *it ); } @@ -98,17 +105,15 @@ QVariant yamlMapToVariant( const YAML::Node& mapNode ) { QVariantMap vm; - for ( YAML::const_iterator it = mapNode.begin(); - it != mapNode.end(); ++it ) + for ( YAML::const_iterator it = mapNode.begin(); it != mapNode.end(); ++it ) { - vm.insert( QString::fromStdString( it->first.as< std::string >() ), - yamlToVariant( it->second ) ); + vm.insert( QString::fromStdString( it->first.as< std::string >() ), yamlToVariant( it->second ) ); } return vm; } QStringList -yamlToStringList(const YAML::Node& listNode) +yamlToStringList( const YAML::Node& listNode ) { QStringList l; listNode >> l; @@ -117,7 +122,7 @@ yamlToStringList(const YAML::Node& listNode) void -explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const char *label ) +explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const char* label ) { cWarning() << "YAML error " << e.what() << "in" << label << '.'; explainYamlException( e, yamlData ); @@ -142,7 +147,9 @@ explainYamlException( const YAML::Exception& e, const QByteArray& yamlData ) linestart = yamlData.indexOf( '\n', linestart ); // No more \ns found, weird if ( linestart < 0 ) + { break; + } linestart += 1; // Skip that \n } int lineend = linestart; @@ -150,34 +157,43 @@ explainYamlException( const YAML::Exception& e, const QByteArray& yamlData ) { lineend = yamlData.indexOf( '\n', linestart ); if ( lineend < 0 ) + { lineend = yamlData.length(); + } } int rangestart = linestart; int rangeend = lineend; // Adjust range (linestart..lineend) so it's not too long if ( ( linestart >= 0 ) && ( e.mark.column > 30 ) ) + { rangestart += ( e.mark.column - 30 ); + } if ( ( linestart >= 0 ) && ( rangeend - rangestart > 40 ) ) + { rangeend = rangestart + 40; + } if ( linestart >= 0 ) - cWarning() << "offending YAML data:" << yamlData.mid( rangestart, rangeend-rangestart ).constData(); - + { + cWarning() << "offending YAML data:" << yamlData.mid( rangestart, rangeend - rangestart ).constData(); + } } } QVariantMap -loadYaml(const QFileInfo& fi, bool* ok) +loadYaml( const QFileInfo& fi, bool* ok ) { return loadYaml( fi.absoluteFilePath(), ok ); } QVariantMap -loadYaml(const QString& filename, bool* ok) +loadYaml( const QString& filename, bool* ok ) { if ( ok ) + { *ok = false; + } QFile yamlFile( filename ); QVariant yamlContents; @@ -197,12 +213,12 @@ loadYaml(const QString& filename, bool* ok) } - if ( yamlContents.isValid() && - !yamlContents.isNull() && - yamlContents.type() == QVariant::Map ) + if ( yamlContents.isValid() && !yamlContents.isNull() && yamlContents.type() == QVariant::Map ) { if ( ok ) + { *ok = true; + } return yamlContents.toMap(); } @@ -214,7 +230,9 @@ static void writeIndent( QFile& f, int indent ) { while ( indent-- > 0 ) + { f.write( " " ); + } } // forward declaration @@ -229,7 +247,9 @@ static void dumpYamlElement( QFile& f, const QVariant& value, int indent ) { if ( value.type() == QVariant::Type::Bool ) + { f.write( value.toBool() ? "true" : "false" ); + } else if ( value.type() == QVariant::Type::String ) { f.write( quote ); @@ -251,17 +271,19 @@ dumpYamlElement( QFile& f, const QVariant& value, int indent ) { ++c; f.write( newline ); - writeIndent( f, indent+1 ); + writeIndent( f, indent + 1 ); f.write( "- " ); - dumpYamlElement( f, it, indent+1 ); + dumpYamlElement( f, it, indent + 1 ); } if ( !c ) // i.e. list was empty + { f.write( "[]" ); + } } else if ( value.type() == QVariant::Type::Map ) { f.write( newline ); - dumpYaml( f, value.toMap(), indent+1 ); + dumpYaml( f, value.toMap(), indent + 1 ); } else { @@ -293,12 +315,13 @@ saveYaml( const QString& filename, const QVariantMap& map ) { QFile f( filename ); if ( !f.open( QFile::WriteOnly ) ) + { return false; + } f.write( "# YAML dump\n---\n" ); return dumpYaml( f, map, 0 ); } - -} // namespace +} // namespace CalamaresUtils diff --git a/src/libcalamares/utils/Yaml.h b/src/libcalamares/utils/Yaml.h index 8755be336..fd6537be6 100644 --- a/src/libcalamares/utils/Yaml.h +++ b/src/libcalamares/utils/Yaml.h @@ -34,6 +34,7 @@ class QFileInfo; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" #pragma clang diagnostic ignored "-Wshadow" +#pragma clang diagnostic ignored "-Wfloat-equal" #endif #include @@ -73,10 +74,10 @@ bool saveYaml( const QString& filename, const QVariantMap& map ); * what is going on in terms of the data passed to the parser. * Uses @p label when labeling the data source (e.g. "netinstall data") */ -void explainYamlException( const YAML::Exception& e, const QByteArray& data, const char *label ); +void explainYamlException( const YAML::Exception& e, const QByteArray& data, const char* label ); void explainYamlException( const YAML::Exception& e, const QByteArray& data, const QString& label ); void explainYamlException( const YAML::Exception& e, const QByteArray& data ); -} // namespace +} // namespace CalamaresUtils #endif diff --git a/src/libcalamares/utils/boost-warnings.h b/src/libcalamares/utils/boost-warnings.h new file mode 100644 index 000000000..65a66b0f6 --- /dev/null +++ b/src/libcalamares/utils/boost-warnings.h @@ -0,0 +1,8 @@ +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#pragma clang diagnostic ignored "-Wold-style-cast" +#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" +#pragma clang diagnostic ignored "-Wextra-semi-stmt" +#pragma clang diagnostic ignored "-Wall" +#endif diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 876fdfa80..a5b6e5dce 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -52,6 +52,8 @@ Branding::instance() } +// *INDENT-OFF* +// clang-format off const QStringList Branding::s_stringEntryStrings = { "productName", @@ -82,15 +84,21 @@ const QStringList Branding::s_styleEntryStrings = "sidebarTextSelect", "sidebarTextHighlight" }; +// clang-format on +// *INDENT-ON* -const NamedEnumTable& +const NamedEnumTable< Branding::WindowDimensionUnit >& Branding::WindowDimension::suffixes() { using Unit = Branding::WindowDimensionUnit; + // *INDENT-OFF* + // clang-format off static const NamedEnumTable names{ {"px", Unit::Pixies}, {"em", Unit::Fonties} }; + // clang-format on + // *INDENT-ON* return names; } @@ -102,16 +110,23 @@ Branding::WindowDimension::suffixes() * the @p transform function, which may change strings. */ static void -loadStrings( QMap& map, const YAML::Node& doc, const std::string& key, const std::function< QString(const QString&) >& transform ) +loadStrings( QMap< QString, QString >& map, + const YAML::Node& doc, + const std::string& key, + const std::function< QString( const QString& ) >& transform ) { if ( !doc[ key ].IsMap() ) - throw YAML::Exception( YAML::Mark(), std::string("Branding configuration is not a map: ") + key ); + { + throw YAML::Exception( YAML::Mark(), std::string( "Branding configuration is not a map: " ) + key ); + } const auto& config = CalamaresUtils::yamlMapToVariant( doc[ key ] ).toMap(); map.clear(); for ( auto it = config.constBegin(); it != config.constEnd(); ++it ) + { map.insert( it.key(), transform( it.value().toString() ) ); + } } /** @brief Load the @p map with strings from @p config @@ -121,19 +136,20 @@ loadStrings( QMap& map, const YAML::Node& doc, const std::stri * documentation for details. */ -Branding::Branding( const QString& brandingFilePath, - QObject* parent ) +Branding::Branding( const QString& brandingFilePath, QObject* parent ) : QObject( parent ) , m_descriptorPath( brandingFilePath ) + , m_slideshowAPI( 1 ) , m_welcomeStyleCalamares( false ) , m_welcomeExpandingLogo( true ) - , m_slideshowAPI( 1 ) { cDebug() << "Using Calamares branding file at" << brandingFilePath; QDir componentDir( componentDirectory() ); if ( !componentDir.exists() ) + { bail( "Bad component directory path." ); + } QFile file( brandingFilePath ); if ( file.exists() && file.open( QFile::ReadOnly | QFile::Text ) ) @@ -145,8 +161,7 @@ Branding::Branding( const QString& brandingFilePath, YAML::Node doc = YAML::Load( ba.constData() ); Q_ASSERT( doc.IsMap() ); - m_componentName = QString::fromStdString( doc[ "componentName" ] - .as< std::string >() ); + m_componentName = QString::fromStdString( doc[ "componentName" ].as< std::string >() ); if ( m_componentName != componentDir.dirName() ) bail( "The branding component name should match the name of the " "component directory." ); @@ -157,8 +172,7 @@ Branding::Branding( const QString& brandingFilePath, // Copy the os-release information into a QHash for use by KMacroExpander. KOSRelease relInfo; - QHash< QString, QString > relMap{ - std::initializer_list< std::pair< QString, QString > > { + QHash< QString, QString > relMap { std::initializer_list< std::pair< QString, QString > > { { QStringLiteral( "NAME" ), relInfo.name() }, { QStringLiteral( "VERSION" ), relInfo.version() }, { QStringLiteral( "ID" ), relInfo.id() }, @@ -174,9 +188,10 @@ Branding::Branding( const QString& brandingFilePath, { QStringLiteral( "BUILD_ID" ), relInfo.buildId() }, { QStringLiteral( "VARIANT" ), relInfo.variant() }, { QStringLiteral( "VARIANT_ID" ), relInfo.variantId() }, - { QStringLiteral( "LOGO" ), relInfo.logo() } - } }; - auto expand = [&]( const QString& s ) -> QString { return KMacroExpander::expandMacros( s, relMap, QLatin1Char( '@' ) ); }; + { QStringLiteral( "LOGO" ), relInfo.logo() } } }; + auto expand = [&]( const QString& s ) -> QString { + return KMacroExpander::expandMacros( s, relMap, QLatin1Char( '@' ) ); + }; #else auto expand = []( const QString& s ) -> QString { return s; }; #endif @@ -184,26 +199,23 @@ Branding::Branding( const QString& brandingFilePath, // Massage the strings, images and style sections. loadStrings( m_strings, doc, "strings", expand ); - loadStrings( m_images, doc, "images", - [&]( const QString& s ) -> QString + loadStrings( m_images, doc, "images", [&]( const QString& s ) -> QString { + // See also image() + const QString imageName( expand( s ) ); + QFileInfo imageFi( componentDir.absoluteFilePath( imageName ) ); + if ( !imageFi.exists() ) { - // See also image() - const QString imageName( expand( s ) ); - QFileInfo imageFi( componentDir.absoluteFilePath( imageName ) ); - if ( !imageFi.exists() ) + const auto icon = QIcon::fromTheme( imageName ); + // Not found, bail out with the filename used + if ( icon.isNull() ) { - const auto icon = QIcon::fromTheme( imageName ); - // Not found, bail out with the filename used - if ( icon.isNull() ) - bail( QString( "Image file %1 does not exist." ).arg( imageFi.absoluteFilePath() ) ); - return imageName; // Not turned into a path + bail( QString( "Image file %1 does not exist." ).arg( imageFi.absoluteFilePath() ) ); } - return imageFi.absoluteFilePath(); + return imageName; // Not turned into a path } - ); - loadStrings( m_style, doc, "style", - []( const QString& s ) -> QString { return s; } - ); + return imageFi.absoluteFilePath(); + } ); + loadStrings( m_style, doc, "style", []( const QString& s ) -> QString { return s; } ); if ( doc[ "slideshow" ].IsSequence() ) { @@ -214,8 +226,9 @@ Branding::Branding( const QString& brandingFilePath, QString pathString = slideShowPictures[ i ]; QFileInfo imageFi( componentDir.absoluteFilePath( pathString ) ); if ( !imageFi.exists() ) - bail( QString( "Slideshow file %1 does not exist." ) - .arg( imageFi.absoluteFilePath() ) ); + { + bail( QString( "Slideshow file %1 does not exist." ).arg( imageFi.absoluteFilePath() ) ); + } slideShowPictures[ i ] = imageFi.absoluteFilePath(); } @@ -224,19 +237,19 @@ Branding::Branding( const QString& brandingFilePath, } else if ( doc[ "slideshow" ].IsScalar() ) { - QString slideshowPath = QString::fromStdString( doc[ "slideshow" ] - .as< std::string >() ); + QString slideshowPath = QString::fromStdString( doc[ "slideshow" ].as< std::string >() ); QFileInfo slideshowFi( componentDir.absoluteFilePath( slideshowPath ) ); - if ( !slideshowFi.exists() || - !slideshowFi.fileName().toLower().endsWith( ".qml" ) ) + if ( !slideshowFi.exists() || !slideshowFi.fileName().toLower().endsWith( ".qml" ) ) bail( QString( "Slideshow file %1 does not exist or is not a valid QML file." ) - .arg( slideshowFi.absoluteFilePath() ) ); + .arg( slideshowFi.absoluteFilePath() ) ); m_slideshowPath = slideshowFi.absoluteFilePath(); } else + { bail( "Syntax error in slideshow sequence." ); + } - int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as() : -1; + int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as< int >() : -1; if ( ( api < 1 ) || ( api > 2 ) ) { cWarning() << "Invalid or missing *slideshowAPI* in branding file."; @@ -252,11 +265,11 @@ Branding::Branding( const QString& brandingFilePath, QDir translationsDir( componentDir.filePath( "lang" ) ); if ( !translationsDir.exists() ) + { cWarning() << "the branding component" << componentDir.absolutePath() << "does not ship translations."; + } m_translationsPathPrefix = translationsDir.absolutePath(); - m_translationsPathPrefix.append( QString( "%1calamares-%2" ) - .arg( QDir::separator() ) - .arg( m_componentName ) ); + m_translationsPathPrefix.append( QString( "%1calamares-%2" ).arg( QDir::separator() ).arg( m_componentName ) ); } else { @@ -278,7 +291,7 @@ Branding::Branding( const QString& brandingFilePath, QString Branding::componentDirectory() const { - QFileInfo fi ( m_descriptorPath ); + QFileInfo fi( m_descriptorPath ); return fi.absoluteDir().absolutePath(); } @@ -317,7 +330,7 @@ Branding::image( Branding::ImageEntry imageEntry, const QSize& size ) const } else { - auto icon = QIcon::fromTheme(path); + auto icon = QIcon::fromTheme( path ); Q_ASSERT( !icon.isNull() ); return icon.pixmap( size ); @@ -325,7 +338,7 @@ Branding::image( Branding::ImageEntry imageEntry, const QSize& size ) const } QPixmap -Branding::image(const QString& imageName, const QSize& size) const +Branding::image( const QString& imageName, const QSize& size ) const { QDir componentDir( componentDirectory() ); QFileInfo imageFi( componentDir.absoluteFilePath( imageName ) ); @@ -334,7 +347,9 @@ Branding::image(const QString& imageName, const QSize& size) const const auto icon = QIcon::fromTheme( imageName ); // Not found, bail out with the filename used if ( icon.isNull() ) + { return QPixmap(); + } return icon.pixmap( size ); } return ImageRegistry::instance()->pixmap( imageFi.absoluteFilePath(), size ); @@ -352,7 +367,9 @@ Branding::stylesheet() const return stylesheetFile.readAll(); } else + { cWarning() << "The branding component" << fi.absoluteDir().absolutePath() << "does not ship stylesheet.qss."; + } return QString(); } @@ -361,7 +378,9 @@ Branding::setGlobals( GlobalStorage* globalStorage ) const { QVariantMap brandingMap; for ( const QString& key : s_stringEntryStrings ) + { brandingMap.insert( key, m_strings.value( key ) ); + } globalStorage->insert( "branding", brandingMap ); } @@ -376,26 +395,40 @@ Branding::WindowDimension::isValid() const static inline QString getString( const YAML::Node& doc, const char* key ) { - if ( doc[key] ) - return QString::fromStdString( doc[key].as< std::string >() ); + if ( doc[ key ] ) + { + return QString::fromStdString( doc[ key ].as< std::string >() ); + } return QString(); } void Branding::initSimpleSettings( const YAML::Node& doc ) { - static const NamedEnumTable< WindowExpansion > expansionNames{ + static const NamedEnumTable< WindowExpansion > expansionNames { { QStringLiteral( "normal" ), WindowExpansion::Normal }, { QStringLiteral( "fullscreen" ), WindowExpansion::Fullscreen }, { QStringLiteral( "noexpand" ), WindowExpansion::Fixed } }; + static const NamedEnumTable< WindowPlacement > placementNames { + { QStringLiteral( "free" ), WindowPlacement::Free }, { QStringLiteral( "center" ), WindowPlacement::Center } + }; bool ok = false; m_welcomeStyleCalamares = doc[ "welcomeStyleCalamares" ].as< bool >( false ); m_welcomeExpandingLogo = doc[ "welcomeExpandingLogo" ].as< bool >( true ); m_windowExpansion = expansionNames.find( getString( doc, "windowExpanding" ), ok ); if ( !ok ) - cWarning() << "Branding module-setting *windowExpanding* interpreted as" << expansionNames.find( m_windowExpansion, ok ); + { + cWarning() << "Branding module-setting *windowExpanding* interpreted as" + << expansionNames.find( m_windowExpansion, ok ); + } + m_windowPlacement = placementNames.find( getString( doc, "windowPlacement" ), ok ); + if ( !ok ) + { + cWarning() << "Branding module-setting *windowPlacement* interpreted as" + << placementNames.find( m_windowPlacement, ok ); + } QString windowSize = getString( doc, "windowSize" ); if ( !windowSize.isEmpty() ) @@ -403,24 +436,26 @@ Branding::initSimpleSettings( const YAML::Node& doc ) auto l = windowSize.split( ',' ); if ( l.count() == 2 ) { - m_windowWidth = WindowDimension( l[0] ); - m_windowHeight = WindowDimension( l[1] ); + m_windowWidth = WindowDimension( l[ 0 ] ); + m_windowHeight = WindowDimension( l[ 1 ] ); } } if ( !m_windowWidth.isValid() ) + { m_windowWidth = WindowDimension( CalamaresUtils::windowPreferredWidth, WindowDimensionUnit::Pixies ); + } if ( !m_windowHeight.isValid() ) + { m_windowHeight = WindowDimension( CalamaresUtils::windowPreferredHeight, WindowDimensionUnit::Pixies ); + } } [[noreturn]] void Branding::bail( const QString& message ) { - cError() << "FATAL in" - << m_descriptorPath - << "\n" + message; + cError() << "FATAL in" << m_descriptorPath << "\n" + message; ::exit( EXIT_FAILURE ); } -} +} // namespace Calamares diff --git a/src/libcalamaresui/Branding.h b/src/libcalamaresui/Branding.h index a3909bc00..30e8be846 100644 --- a/src/libcalamaresui/Branding.h +++ b/src/libcalamaresui/Branding.h @@ -25,13 +25,13 @@ #include "utils/NamedSuffix.h" +#include #include #include -#include namespace YAML { - class Node; +class Node; } namespace Calamares @@ -79,27 +79,46 @@ public: }; /** @brief Setting for how much the main window may expand. */ - enum class WindowExpansion { Normal, Fullscreen, Fixed } ; + enum class WindowExpansion + { + Normal, + Fullscreen, + Fixed + }; /** @brief Setting for the main window size. * * The units are pixels (Pixies) or something-based-on-fontsize (Fonties), which * we suffix as "em", e.g. "600px" or "32em". */ - enum class WindowDimensionUnit { None, Pixies, Fonties }; - class WindowDimension : public NamedSuffix + enum class WindowDimensionUnit + { + None, + Pixies, + Fonties + }; + class WindowDimension : public NamedSuffix< WindowDimensionUnit, WindowDimensionUnit::None > { public: - static const NamedEnumTable< WindowDimensionUnit >& suffixes(); + static const NamedEnumTable< WindowDimensionUnit >& suffixes(); bool isValid() const; using NamedSuffix::NamedSuffix; - WindowDimension( const QString& s ) : NamedSuffix( suffixes(), s ) {} - } ; + WindowDimension( const QString& s ) + : NamedSuffix( suffixes(), s ) + { + } + }; + /** @brief Placement of main window. + */ + enum class WindowPlacement + { + Center, + Free + }; static Branding* instance(); - explicit Branding( const QString& brandingFilePath, - QObject* parent = nullptr ); + explicit Branding( const QString& brandingFilePath, QObject* parent = nullptr ); /** @brief Complete path of the branding descriptor file. */ QString descriptorPath() const { return m_descriptorPath; } @@ -150,6 +169,7 @@ public: { return QPair< WindowDimension, WindowDimension >( m_windowWidth, m_windowHeight ); } + bool windowPlacementCentered() const { return m_windowPlacement == WindowPlacement::Center; } /** * Creates a map called "branding" in the global storage, and inserts an @@ -181,14 +201,18 @@ private: bool m_welcomeStyleCalamares; bool m_welcomeExpandingLogo; + WindowExpansion m_windowExpansion; - WindowDimension m_windowHeight, m_windowWidth; - + WindowPlacement m_windowPlacement; }; -template inline QString operator*(U e) { return Branding::instance()->string( e ); } - +template < typename U > +inline QString operator*( U e ) +{ + return Branding::instance()->string( e ); } -#endif // BRANDING_H +} // namespace Calamares + +#endif // BRANDING_H diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index f6c8c9ac7..a9d31c2c3 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -2,7 +2,7 @@ # view modules, view steps, widgets, and branding. # The UI libs use the non-UI library -include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares ) +include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares ${CMAKE_SOURCE_DIR} ) set( calamaresui_SOURCES modulesystem/CppJobModule.cpp @@ -14,19 +14,16 @@ set( calamaresui_SOURCES modulesystem/ViewModule.cpp utils/CalamaresUtilsGui.cpp - utils/DebugWindow.cpp utils/ImageRegistry.cpp - - utils/qjsonmodel.cpp - utils/qjsonitem.cpp + utils/Paste.cpp viewpages/BlankViewStep.cpp viewpages/ViewStep.cpp widgets/ClickableLabel.cpp widgets/FixedAspectRatioLabel.cpp - widgets/waitingspinnerwidget.cpp widgets/WaitingWidget.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp ExecutionViewStep.cpp Branding.cpp @@ -35,14 +32,9 @@ set( calamaresui_SOURCES # Don't warn about third-party sources mark_thirdparty_code( - utils/ImageRegistry.cpp - utils/qjsonitem.cpp - utils/qjsonmodel.cpp - widgets/waitingspinnerwidget.cpp -) - -set( calamaresui_UI - utils/DebugWindow.ui + ${CMAKE_SOURCE_DIR}/3rdparty/qjsonitem.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/qjsonmodel.cpp + ${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp ) if( WITH_PYTHON ) @@ -72,7 +64,6 @@ endif() calamares_add_library( calamaresui SOURCES ${calamaresui_SOURCES} - UI ${calamaresui_UI} EXPORT_MACRO UIDLLEXPORT_PRO LINK_PRIVATE_LIBRARIES ${OPTIONAL_PYTHON_LIBRARIES} @@ -84,8 +75,6 @@ calamares_add_library( calamaresui VERSION ${CALAMARES_VERSION_SHORT} ) -find_package( KF5CoreAddons 5.58 QUIET ) # If it's really new -if ( KF5CoreAddons_FOUND ) +if ( KF5CoreAddons_FOUND AND KF5CoreAddons_VERSION VERSION_GREATER_EQUAL 5.58 ) target_compile_definitions( calamaresui PRIVATE WITH_KOSRelease ) - target_link_libraries( calamaresui PRIVATE KF5::CoreAddons ) endif() diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index e242622a0..501995c07 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -23,10 +23,10 @@ #include "Branding.h" #include "Job.h" #include "JobQueue.h" -#include "modulesystem/Module.h" -#include "modulesystem/ModuleManager.h" #include "Settings.h" #include "ViewManager.h" +#include "modulesystem/Module.h" +#include "modulesystem/ModuleManager.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Dirs.h" @@ -56,7 +56,7 @@ callQMLFunction( QQuickItem* qmlObject, const char* method ) QByteArray methodSignature( method ); methodSignature.append( "()" ); - if ( qmlObject && qmlObject->metaObject()->indexOfMethod( methodSignature ) >= 0 ) + if ( qmlObject && qmlObject->metaObject()->indexOfMethod( methodSignature ) >= 0 ) { QVariant returnValue; QMetaObject::invokeMethod( qmlObject, method, Q_RETURN_ARG( QVariant, returnValue ) ); @@ -117,9 +117,7 @@ ExecutionViewStep::ExecutionViewStep( QObject* parent ) QString ExecutionViewStep::prettyName() const { - return Calamares::Settings::instance()->isSetupMode() - ? tr( "Set up" ) - : tr( "Install" ); + return Calamares::Settings::instance()->isSetupMode() ? tr( "Set up" ) : tr( "Install" ); } @@ -176,37 +174,92 @@ ExecutionViewStep::loadQmlV2() { m_qmlComponent = new QQmlComponent( m_qmlShow->engine(), QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ), - QQmlComponent::CompilationMode::Asynchronous - ); + QQmlComponent::CompilationMode::Asynchronous ); connect( m_qmlComponent, &QQmlComponent::statusChanged, this, &ExecutionViewStep::loadQmlV2Complete ); } } +/// @brief State-change of the slideshow, for changeSlideShowState() +enum class Slideshow +{ + Start, + Stop +}; + +/** @brief Tells the slideshow we activated or left the show. + * + * If @p state is @c Slideshow::Start, calls suitable activation procedures. + * If @p state is @c Slideshow::Stop, calls deactivation procedures. + * + * Applies V1 and V2 QML activation / deactivation: + * - V1 loads the QML in @p widget on activation. Sets root object property + * *activatedInCalamares* as appropriate. + * - V2 calls onActivate() or onLeave() in the QML as appropriate. Also + * sets the *activatedInCalamares* property. + */ +static void +changeSlideShowState( Slideshow state, QQuickItem* slideshow, QQuickWidget* widget ) +{ + bool activate = state == Slideshow::Start; + + if ( Branding::instance()->slideshowAPI() == 2 ) + { + // The QML was already loaded in the constructor, need to start it + callQMLFunction( slideshow, activate ? "onActivate" : "onLeave" ); + } + else if ( !Calamares::Branding::instance()->slideshowPath().isEmpty() ) + { + // API version 1 assumes onCompleted is the trigger + if ( activate ) + { + widget->setSource( QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ) ); + } + // needs the root object for property setting, below + slideshow = widget->rootObject(); + } + + // V1 API has picked up the root object for use, V2 passed it in. + if ( slideshow ) + { + static const char propertyName[] = "activatedInCalamares"; + auto property = slideshow->property( propertyName ); + if ( property.isValid() && ( property.type() == QVariant::Bool ) && ( property.toBool() != activate ) ) + { + slideshow->setProperty( propertyName, activate ); + } + } +} + void ExecutionViewStep::loadQmlV2Complete() { if ( m_qmlComponent && m_qmlComponent->isReady() && !m_qmlObject ) { - cDebug() << "QML loading complete, API 2"; + cDebug() << "QML component complete, API 2"; // Don't do this again disconnect( m_qmlComponent, &QQmlComponent::statusChanged, this, &ExecutionViewStep::loadQmlV2Complete ); QObject* o = m_qmlComponent->create(); m_qmlObject = qobject_cast< QQuickItem* >( o ); if ( !m_qmlObject ) + { delete o; + } else { + cDebug() << Logger::SubEntry << "Loading" << Calamares::Branding::instance()->slideshowPath(); + // setContent() is public API, but not documented publicly. // It is marked \internal in the Qt sources, but does exactly // what is needed: sets up visual parent by replacing the root // item, and handling resizes. - m_qmlShow->setContent( QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ), m_qmlComponent, m_qmlObject ); + m_qmlShow->setContent( + QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ), m_qmlComponent, m_qmlObject ); if ( ViewManager::instance()->currentStep() == this ) { // We're alreay visible! Must have been slow QML loading, and we // passed onActivate already. - callQMLFunction( m_qmlObject, "onActivate" ); + changeSlideShowState( Slideshow::Start, m_qmlObject, m_qmlShow ); } } } @@ -215,16 +268,7 @@ ExecutionViewStep::loadQmlV2Complete() void ExecutionViewStep::onActivate() { - if ( Branding::instance()->slideshowAPI() == 2 ) - { - // The QML was already loaded in the constructor, need to start it - callQMLFunction( m_qmlObject, "onActivate" ); - } - else if ( !Calamares::Branding::instance()->slideshowPath().isEmpty() ) - { - // API version 1 assumes onCompleted is the trigger - m_qmlShow->setSource( QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ) ); - } + changeSlideShowState( Slideshow::Start, m_qmlObject, m_qmlShow ); JobQueue* queue = JobQueue::instance(); foreach ( const QString& instanceKey, m_jobInstanceKeys ) @@ -235,8 +279,10 @@ ExecutionViewStep::onActivate() auto jl = module->jobs(); if ( module->isEmergency() ) { - for( auto& j : jl ) + for ( auto& j : jl ) + { j->setEmergency( true ); + } } queue->enqueue( jl ); } @@ -270,13 +316,13 @@ ExecutionViewStep::updateFromJobQueue( qreal percent, const QString& message ) void ExecutionViewStep::onLeave() { + changeSlideShowState( Slideshow::Stop, m_qmlObject, m_qmlShow ); // API version 2 is explicitly stopped; version 1 keeps running if ( Branding::instance()->slideshowAPI() == 2 ) { - callQMLFunction( m_qmlObject, "onLeave" ); delete m_qmlObject; m_qmlObject = nullptr; } } -} // namespace +} // namespace Calamares diff --git a/src/libcalamaresui/ExecutionViewStep.h b/src/libcalamaresui/ExecutionViewStep.h index c1183e110..8c4174cdb 100644 --- a/src/libcalamaresui/ExecutionViewStep.h +++ b/src/libcalamaresui/ExecutionViewStep.h @@ -69,14 +69,14 @@ private: QLabel* m_label; QQuickWidget* m_qmlShow; QQmlComponent* m_qmlComponent; - QQuickItem* m_qmlObject; //< The actual show + QQuickItem* m_qmlObject; ///< The actual show QStringList m_jobInstanceKeys; - void loadQmlV2(); //< Loads the slideshow QML (from branding) for API version 2 + void loadQmlV2(); ///< Loads the slideshow QML (from branding) for API version 2 void updateFromJobQueue( qreal percent, const QString& message ); }; -} +} // namespace Calamares #endif /* EXECUTIONVIEWSTEP_H */ diff --git a/src/libcalamaresui/UiDllMacro.h b/src/libcalamaresui/UiDllMacro.h index 35ad67453..3064ca68c 100644 --- a/src/libcalamaresui/UiDllMacro.h +++ b/src/libcalamaresui/UiDllMacro.h @@ -22,11 +22,11 @@ #include #ifndef UIDLLEXPORT -# if defined (UIDLLEXPORT_PRO) -# define UIDLLEXPORT Q_DECL_EXPORT -# else -# define UIDLLEXPORT Q_DECL_IMPORT -# endif +#if defined( UIDLLEXPORT_PRO ) +#define UIDLLEXPORT Q_DECL_EXPORT +#else +#define UIDLLEXPORT Q_DECL_IMPORT +#endif #endif #endif diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index 16c38b1bc..68d918971 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -21,17 +21,21 @@ #include "ViewManager.h" -#include "utils/Logger.h" #include "viewpages/BlankViewStep.h" #include "viewpages/ViewStep.h" + +#include "Branding.h" #include "ExecutionViewStep.h" #include "JobQueue.h" -#include "utils/Retranslator.h" -#include "Branding.h" #include "Settings.h" +#include "utils/Logger.h" +#include "utils/Paste.h" +#include "utils/Retranslator.h" + #include #include +#include #include #include @@ -71,24 +75,6 @@ setButtonIcon( QPushButton* button, const QString& name ) } } -/** @brief Creates a button with a given icon-name - * - * Creates a new button as child of @p parent. - * Sets the named icon, if it exists, onto the button. - * Returns the new button. - * - * There is a QPushButton constructor that takes an icon, - * but it also needs a text and we've got translations - * to worry about as well as state. - */ -static inline QPushButton* -makeButton( QWidget* parent, const QString& name ) -{ - QPushButton* button = new QPushButton( parent ); - setButtonIcon( button, name ); - return button; -} - ViewManager::ViewManager( QObject* parent ) : QObject( parent ) , m_currentStep( 0 ) @@ -104,13 +90,14 @@ ViewManager::ViewManager( QObject* parent ) mainLayout->addWidget( m_stack ); // Create buttons and sets an initial icon; the icons may change - m_back = makeButton( m_widget, "go-previous" ); - m_next = makeButton( m_widget, "go-next" ); - m_quit = makeButton( m_widget, "dialog-cancel" ); + m_back = new QPushButton( getButtonIcon( QStringLiteral( "go-previous" ) ), tr( "&Back" ), m_widget ); + m_back->setObjectName( "view-button-back" ); + m_next = new QPushButton( getButtonIcon( QStringLiteral( "go-next" ) ), tr( "&Next" ), m_widget ); + m_next->setObjectName( "view-button-next" ); + m_quit = new QPushButton( getButtonIcon( QStringLiteral( "dialog-cancel" ) ), tr( "&Cancel" ), m_widget ); + m_quit->setObjectName( "view-button-cancel" ); - CALAMARES_RETRANSLATE( - updateButtonLabels(); - ) + CALAMARES_RETRANSLATE_SLOT( &ViewManager::updateButtonLabels ) QBoxLayout* bottomLayout = new QHBoxLayout; mainLayout->addLayout( bottomLayout ); @@ -124,15 +111,21 @@ ViewManager::ViewManager( QObject* parent ) connect( m_back, &QPushButton::clicked, this, &ViewManager::back ); m_back->setEnabled( false ); - connect( m_quit, &QPushButton::clicked, this, - [this]() { if ( this->confirmCancelInstallation() ) qApp->quit(); } ); - connect( JobQueue::instance(), &JobQueue::failed, - this, &ViewManager::onInstallationFailed ); - connect( JobQueue::instance(), &JobQueue::finished, - this, &ViewManager::next ); + connect( m_quit, &QPushButton::clicked, this, [this]() { + if ( this->confirmCancelInstallation() ) + { + qApp->quit(); + } + } ); + connect( JobQueue::instance(), &JobQueue::failed, this, &ViewManager::onInstallationFailed ); + connect( JobQueue::instance(), &JobQueue::finished, this, &ViewManager::next ); - if (Calamares::Settings::instance()->disableCancel()) + if ( Calamares::Settings::instance()->disableCancel() ) + { m_quit->setVisible( false ); + } + + // onInstallationFailed( "Title of Failure", "Body of Failure"); // for testing paste functionality } @@ -156,7 +149,9 @@ ViewManager::addViewStep( ViewStep* step ) insertViewStep( m_steps.size(), step ); // If this is the first inserted view step, update status of "Next" button if ( m_steps.count() == 1 ) + { m_next->setEnabled( step->isNextEnabled() ); + } } @@ -166,18 +161,20 @@ ViewManager::insertViewStep( int before, ViewStep* step ) m_steps.insert( before, step ); QLayout* layout = step->widget()->layout(); if ( layout ) + { layout->setContentsMargins( 0, 0, 0, 0 ); + } m_stack->insertWidget( before, step->widget() ); connect( step, &ViewStep::enlarge, this, &ViewManager::enlarge ); - connect( step, &ViewStep::nextStatusChanged, - this, [this]( bool status ) - { + connect( step, &ViewStep::nextStatusChanged, this, [this]( bool status ) { ViewStep* vs = qobject_cast< ViewStep* >( sender() ); if ( vs ) { if ( vs == m_steps.at( m_currentStep ) ) + { m_next->setEnabled( status ); + } } } ); @@ -189,48 +186,86 @@ ViewManager::insertViewStep( int before, ViewStep* step ) void ViewManager::onInstallationFailed( const QString& message, const QString& details ) { + bool shouldOfferWebPaste = false; // TODO: config var + cError() << "Installation failed:"; cDebug() << "- message:" << message; cDebug() << "- details:" << details; - QString heading = Calamares::Settings::instance()->isSetupMode() - ? tr( "Setup Failed" ) - : tr( "Installation Failed" ); + QString heading + = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Failed" ) : tr( "Installation Failed" ); + QString pasteMsg = tr( "Would you like to paste the install log to the web?" ); + QString text = "

" + message + "

"; + if ( !details.isEmpty() ) + { + text += "

" + details + "

"; + } + if ( shouldOfferWebPaste ) + { + text += "

" + pasteMsg + "

"; + } + QMessageBox* msgBox = new QMessageBox(); msgBox->setIcon( QMessageBox::Critical ); msgBox->setWindowTitle( tr( "Error" ) ); msgBox->setText( "" + heading + "" ); - msgBox->setStandardButtons( QMessageBox::Close ); - msgBox->button( QMessageBox::Close )->setText( tr( "&Close" ) ); - - QString text = "

" + message + "

"; - if ( !details.isEmpty() ) - text += "

" + details + "

"; msgBox->setInformativeText( text ); - - connect( msgBox, &QMessageBox::buttonClicked, qApp, &QApplication::quit ); - cDebug() << "Calamares will quit when the dialog closes."; + if ( shouldOfferWebPaste ) + { + msgBox->setStandardButtons( QMessageBox::Yes | QMessageBox::No ); + msgBox->setDefaultButton( QMessageBox::No ); + msgBox->button( QMessageBox::Yes )->setText( tr( "&Yes" ) ); + msgBox->button( QMessageBox::No )->setText( tr( "&No" ) ); + } + else + { + msgBox->setStandardButtons( QMessageBox::Close ); + msgBox->setDefaultButton( QMessageBox::Close ); + msgBox->button( QMessageBox::Close )->setText( tr( "&Close" ) ); + } msgBox->show(); + + cDebug() << "Calamares will quit when the dialog closes."; + connect( msgBox, &QMessageBox::buttonClicked, [msgBox]( QAbstractButton* button ) { + if ( msgBox->buttonRole( button ) == QMessageBox::ButtonRole::YesRole ) + { + // TODO: host and port should be configurable + QString pasteUrlMsg = CalamaresUtils::sendLogToPastebin( msgBox, QStringLiteral( "termbin.com" ), 9999 ); + + QString pasteUrlTitle = tr( "Install Log Paste URL" ); + if ( pasteUrlMsg.isEmpty() ) + { + pasteUrlMsg = tr( "The upload was unsuccessful. No web-paste was done." ); + } + + // TODO: make the URL clickable, or copy it to the clipboard automatically + QMessageBox::critical( nullptr, pasteUrlTitle, pasteUrlMsg ); + } + QApplication::quit(); + } ); } void -ViewManager::onInitFailed( const QStringList& modules) +ViewManager::onInitFailed( const QStringList& modules ) { // Because this means the installer / setup program is broken by the distributor, // don't bother being precise about installer / setup wording. QString title( tr( "Calamares Initialization Failed" ) ); - QString description( tr( "%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." ) ); + QString description( tr( "%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." ) ); QString detailString; if ( modules.count() > 0 ) { description.append( tr( "
The following modules could not be loaded:" ) ); QStringList details; - details << QLatin1Literal("
    "); - for( const auto& m : modules ) - details << QLatin1Literal("
  • ") << m << QLatin1Literal("
  • "); - details << QLatin1Literal("
"); + details << QLatin1String( "
    " ); + for ( const auto& m : modules ) + { + details << QLatin1String( "
  • " ) << m << QLatin1String( "
  • " ); + } + details << QLatin1String( "
" ); detailString = details.join( QString() ); } @@ -265,10 +300,8 @@ ViewManager::currentStepIndex() const static inline bool stepIsExecute( const ViewStepList& steps, int index ) { - return - ( 0 <= index ) && - ( index < steps.count() ) && - ( qobject_cast< ExecutionViewStep* >( steps.at( index ) ) != nullptr ); + return ( 0 <= index ) && ( index < steps.count() ) + && ( qobject_cast< ExecutionViewStep* >( steps.at( index ) ) != nullptr ); } void @@ -283,11 +316,10 @@ ViewManager::next() // Special case when the user clicks next on the very last page in a view phase // and right before switching to an execution phase. // Depending on Calamares::Settings, we show an "are you sure" prompt or not. - if ( settings->showPromptBeforeExecution() && stepIsExecute( m_steps, m_currentStep+1 ) ) + if ( settings->showPromptBeforeExecution() && stepIsExecute( m_steps, m_currentStep + 1 ) ) { - QString title = settings->isSetupMode() - ? tr( "Continue with setup?" ) - : tr( "Continue with installation?" ); + QString title + = settings->isSetupMode() ? tr( "Continue with setup?" ) : tr( "Continue with installation?" ); QString question = settings->isSetupMode() ? tr( "The %1 setup program is about to make changes to your " "disk in order to set up %2.
You will not be able " @@ -295,21 +327,21 @@ ViewManager::next() : tr( "The %1 installer is about to make changes to your " "disk in order to install %2.
You will not be able " "to undo these changes." ); - QString confirm = settings->isSetupMode() - ? tr( "&Set up now" ) - : tr( "&Install now" ); + QString confirm = settings->isSetupMode() ? tr( "&Set up now" ) : tr( "&Install now" ); - int reply = - QMessageBox::question( m_widget, - title, - question.arg( *Calamares::Branding::ShortProductName, *Calamares::Branding::ShortVersionedName ), - confirm, - tr( "Go &back" ), - QString(), - 0, - 1 ); + int reply = QMessageBox::question( + m_widget, + title, + question.arg( *Calamares::Branding::ShortProductName, *Calamares::Branding::ShortVersionedName ), + confirm, + tr( "Go &back" ), + QString(), + 0 /* default first button, i.e. confirm */, + 1 /* escape is second button, i.e. cancel */ ); if ( reply == 1 ) + { return; + } } m_currentStep++; @@ -330,7 +362,7 @@ ViewManager::next() m_next->setEnabled( false ); m_back->setEnabled( false ); } - updateCancelEnabled( !settings->disableCancel() && !(executing && settings->disableCancelDuringExec() ) ); + updateCancelEnabled( !settings->disableCancel() && !( executing && settings->disableCancelDuringExec() ) ); } else { @@ -351,9 +383,7 @@ ViewManager::updateButtonLabels() { const auto* const settings = Calamares::Settings::instance(); - QString nextIsInstallationStep = settings->isSetupMode() - ? tr( "&Set up" ) - : tr( "&Install" ); + QString nextIsInstallationStep = settings->isSetupMode() ? tr( "&Set up" ) : tr( "&Install" ); QString quitOnCompleteTooltip = settings->isSetupMode() ? tr( "Setup is complete. Close the setup program." ) : tr( "The installation is complete. Close the installer." ); @@ -362,7 +392,7 @@ ViewManager::updateButtonLabels() : tr( "Cancel installation without changing the system." ); // If we're going into the execution step / install phase, other message - if ( stepIsExecute( m_steps, m_currentStep+1 ) ) + if ( stepIsExecute( m_steps, m_currentStep + 1 ) ) { m_next->setText( nextIsInstallationStep ); setButtonIcon( m_next, "run-install" ); @@ -388,8 +418,11 @@ ViewManager::updateButtonLabels() else { if ( settings->disableCancel() ) + { m_quit->setVisible( false ); // In case we went back from final - updateCancelEnabled( !settings->disableCancel() && !( stepIsExecute( m_steps, m_currentStep ) && settings->disableCancelDuringExec() ) ); + } + updateCancelEnabled( !settings->disableCancel() + && !( stepIsExecute( m_steps, m_currentStep ) && settings->disableCancelDuringExec() ) ); m_quit->setText( tr( "&Cancel" ) ); m_quit->setToolTip( cancelBeforeInstallationTooltip ); @@ -410,46 +443,53 @@ ViewManager::back() emit currentStepChanged(); } else if ( !step->isAtBeginning() ) + { step->back(); - else return; + } + else + { + return; + } m_next->setEnabled( m_steps.at( m_currentStep )->isNextEnabled() ); m_back->setEnabled( m_steps.at( m_currentStep )->isBackEnabled() ); if ( m_currentStep == 0 && m_steps.first()->isAtBeginning() ) + { m_back->setEnabled( false ); + } updateButtonLabels(); } -bool ViewManager::confirmCancelInstallation() +bool +ViewManager::confirmCancelInstallation() { const auto* const settings = Calamares::Settings::instance(); // When we're at the very end, then it's always OK to exit. if ( isAtVeryEnd() ) + { return true; + } // Not at the very end, cancel/quit might be disabled if ( settings->disableCancel() ) + { return false; + } if ( settings->disableCancelDuringExec() && stepIsExecute( m_steps, m_currentStep ) ) + { return false; + } // Otherwise, confirm cancel/quit. - QString title = settings->isSetupMode() - ? tr( "Cancel setup?" ) - : tr( "Cancel installation?" ); - QString question = settings->isSetupMode() - ? tr( "Do you really want to cancel the current setup process?\n" - "The setup program will quit and all changes will be lost." ) - : tr( "Do you really want to cancel the current install process?\n" - "The installer will quit and all changes will be lost." ); - QMessageBox mb( QMessageBox::Question, - title, - question, - QMessageBox::Yes | QMessageBox::No, - m_widget ); + QString title = settings->isSetupMode() ? tr( "Cancel setup?" ) : tr( "Cancel installation?" ); + QString question = settings->isSetupMode() ? tr( "Do you really want to cancel the current setup process?\n" + "The setup program will quit and all changes will be lost." ) + : tr( "Do you really want to cancel the current install process?\n" + "The installer will quit and all changes will be lost." ); + QMessageBox mb( QMessageBox::Question, title, question, QMessageBox::Yes | QMessageBox::No, m_widget ); mb.setDefaultButton( QMessageBox::No ); mb.button( QMessageBox::Yes )->setText( tr( "&Yes" ) ); mb.button( QMessageBox::No )->setText( tr( "&No" ) ); @@ -464,4 +504,4 @@ ViewManager::updateCancelEnabled( bool enabled ) emit cancelEnabled( enabled ); } -} // namespace +} // namespace Calamares diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index c9f554ee8..fca74a367 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -133,7 +133,8 @@ private: bool isAtVeryEnd() const { - return ( m_currentStep >= m_steps.count() ) || ( m_currentStep == m_steps.count() - 1 && m_steps.last()->isAtEnd() ); + return ( m_currentStep >= m_steps.count() ) + || ( m_currentStep == m_steps.count() - 1 && m_steps.last()->isAtEnd() ); } static ViewManager* s_instance; @@ -148,6 +149,6 @@ private: QPushButton* m_quit; }; -} +} // namespace Calamares -#endif // VIEWMANAGER_H +#endif // VIEWMANAGER_H diff --git a/src/libcalamaresui/libcalamaresui.qrc b/src/libcalamaresui/libcalamaresui.qrc index 79ae4e45f..eeb3fc490 100644 --- a/src/libcalamaresui/libcalamaresui.qrc +++ b/src/libcalamaresui/libcalamaresui.qrc @@ -7,6 +7,7 @@ ../../data/images/bugs.svg ../../data/images/help.svg ../../data/images/release.svg + ../../data/images/help-donate.svg ../../data/images/partition-disk.svg ../../data/images/partition-partition.svg ../../data/images/partition-alongside.svg diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp index 22d9a0524..c6571dbf6 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.cpp +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -19,9 +19,9 @@ #include "CppJobModule.h" -#include "utils/PluginFactory.h" -#include "utils/Logger.h" #include "CppJob.h" +#include "utils/Logger.h" +#include "utils/PluginFactory.h" #include #include @@ -49,7 +49,7 @@ CppJobModule::loadSelf() { if ( m_loader ) { - PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); + CalamaresPluginFactory* pf = qobject_cast< CalamaresPluginFactory* >( m_loader->instance() ); if ( !pf ) { cDebug() << Q_FUNC_INFO << m_loader->errorString(); @@ -62,10 +62,10 @@ CppJobModule::loadSelf() cDebug() << Q_FUNC_INFO << m_loader->errorString(); return; } -// cDebug() << "CppJobModule loading self for instance" << instanceKey() -// << "\nCppJobModule at address" << this -// << "\nCalamares::PluginFactory at address" << pf -// << "\nCppJob at address" << cppJob; + // cDebug() << "CppJobModule loading self for instance" << instanceKey() + // << "\nCppJobModule at address" << this + // << "\nCalamares::PluginFactory at address" << pf + // << "\nCppJob at address" << cppJob; cppJob->setModuleInstanceKey( instanceKey() ); cppJob->setConfigurationMap( m_configurationMap ); @@ -97,7 +97,7 @@ CppJobModule::initFrom( const QVariantMap& moduleDescriptor ) // If a load path is not specified, we look for a plugin to load in the directory. if ( load.isEmpty() || !QLibrary::isLibrary( load ) ) { - const QStringList ls = directory.entryList( QStringList{ "*.so" } ); + const QStringList ls = directory.entryList( QStringList { "*.so" } ); if ( !ls.isEmpty() ) { for ( QString entry : ls ) @@ -126,4 +126,4 @@ CppJobModule::~CppJobModule() delete m_loader; } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h index e3b232353..feb0f22bb 100644 --- a/src/libcalamaresui/modulesystem/CppJobModule.h +++ b/src/libcalamaresui/modulesystem/CppJobModule.h @@ -21,8 +21,8 @@ #ifndef CALAMARES_CPPJOBMODULE_H #define CALAMARES_CPPJOBMODULE_H -#include "UiDllMacro.h" #include "Module.h" +#include "UiDllMacro.h" class QPluginLoader; @@ -42,7 +42,7 @@ protected: void initFrom( const QVariantMap& moduleDescriptor ) override; private: - friend class Module; //so only the superclass can instantiate + friend class Module; //so only the superclass can instantiate explicit CppJobModule(); virtual ~CppJobModule() override; @@ -50,6 +50,6 @@ private: job_ptr m_job; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_CPPJOBMODULE_H +#endif // CALAMARES_CPPJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 44798b32b..799da941e 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -48,8 +48,7 @@ static const char EMERGENCY[] = "emergency"; namespace Calamares { -Module::~Module() -{} +Module::~Module() {} Module* Module::fromDescriptor( const QVariantMap& moduleDescriptor, @@ -57,7 +56,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, const QString& configFileName, const QString& moduleDirectory ) { - std::unique_ptr m; + std::unique_ptr< Module > m; QString typeString = moduleDescriptor.value( "type" ).toString(); QString intfString = moduleDescriptor.value( "interface" ).toString(); @@ -70,7 +69,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) { if ( intfString == "qtplugin" ) + { m.reset( new ViewModule() ); + } else if ( intfString == "pythonqt" ) { #ifdef WITH_PYTHONQT @@ -80,14 +81,20 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, #endif } else + { cError() << "Bad interface" << intfString << "for module type" << typeString; + } } else if ( typeString == "job" ) { if ( intfString == "qtplugin" ) + { m.reset( new CppJobModule() ); + } else if ( intfString == "process" ) + { m.reset( new ProcessJobModule() ); + } else if ( intfString == "python" ) { #ifdef WITH_PYTHON @@ -97,22 +104,27 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, #endif } else + { cError() << "Bad interface" << intfString << "for module type" << typeString; + } } else + { cError() << "Bad module type" << typeString; + } if ( !m ) { - cError() << "Bad module type (" << typeString - << ") or interface string (" << intfString - << ") for module " << instanceId; + cError() << "Bad module type (" << typeString << ") or interface string (" << intfString << ") for module " + << instanceId; return nullptr; } QDir moduleDir( moduleDirectory ); if ( moduleDir.exists() && moduleDir.isReadable() ) + { m->m_directory = moduleDir.absolutePath(); + } else { cError() << "Bad module directory" << moduleDirectory << "for" << instanceId; @@ -141,22 +153,32 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c QStringList paths; if ( CalamaresUtils::isAppDataDirOverridden() ) + { paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) ); + } else { // If an absolute path is given, in debug mode, look for it // first. The case contains('/'), below, will add the absolute // path a second time, though. if ( assumeBuildDir && configFileName.startsWith( '/' ) ) + { paths << configFileName; + } if ( assumeBuildDir ) - paths << QDir().absoluteFilePath(QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) ); + { + paths << QDir().absoluteFilePath( QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) ); + } if ( assumeBuildDir && configFileName.contains( '/' ) ) + { paths << QDir().absoluteFilePath( configFileName ); + } if ( CalamaresUtils::haveExtraDirs() ) for ( auto s : CalamaresUtils::extraConfigDirs() ) + { paths << ( s + QString( "modules/%1" ).arg( configFileName ) ); + } paths << QString( "/etc/calamares/modules/%1" ).arg( configFileName ); paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) ); @@ -165,10 +187,10 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c return paths; } -void -Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception +void Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception { - QStringList configCandidates = moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName ); + QStringList configCandidates + = moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName ); for ( const QString& path : configCandidates ) { QFile configFile( path ); @@ -192,9 +214,8 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex cDebug() << "Loaded module configuration" << path; m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap(); - m_emergency = m_maybe_emergency - && m_configurationMap.contains( EMERGENCY ) - && m_configurationMap[ EMERGENCY ].toBool(); + m_emergency = m_maybe_emergency && m_configurationMap.contains( EMERGENCY ) + && m_configurationMap[ EMERGENCY ].toBool(); return; } } @@ -235,7 +256,7 @@ Module::typeString() const { switch ( type() ) { - case Type::Job: + case Type::Job: return "Job Module"; case Type::View: return "View Module"; @@ -249,7 +270,7 @@ Module::interfaceString() const { switch ( interface() ) { - case Interface::Process: + case Interface::Process: return "External process"; case Interface::Python: return "Python (Boost.Python)"; @@ -271,7 +292,8 @@ Module::configurationMap() Module::Module() : m_loaded( false ) -{} +{ +} void @@ -279,7 +301,9 @@ Module::initFrom( const QVariantMap& moduleDescriptor ) { m_name = moduleDescriptor.value( "name" ).toString(); if ( moduleDescriptor.contains( EMERGENCY ) ) + { m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); + } } RequirementsList @@ -288,4 +312,4 @@ Module::checkRequirements() return RequirementsList(); } -} //ns +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 6da9c0ce4..e4101b767 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -28,13 +28,6 @@ #include -namespace Calamares -{ -class Module; -} - -void operator>>( const QVariantMap& moduleDescriptor, Calamares::Module* m ); - namespace Calamares { @@ -66,8 +59,8 @@ public: */ enum class Interface { - QtPlugin, // Jobs or Views - Python, // Jobs only + QtPlugin, // Jobs or Views + Python, // Jobs only Process, // Deprecated interface PythonQt // Views only, available as enum even if PythonQt isn't used }; @@ -141,10 +134,7 @@ public: * @brief isLoaded reports on the loaded status of a module. * @return true if the module's loading phase has finished, otherwise false. */ - bool isLoaded() const - { - return m_loaded; - } + bool isLoaded() const { return m_loaded; } /** * @brief loadSelf initialized the module. @@ -161,10 +151,7 @@ public: * are not run (in the common case where there is only * one exec block, this doesn't really matter). */ - bool isEmergency() const - { - return m_emergency; - } + bool isEmergency() const { return m_emergency; } /** * @brief jobs returns any jobs exposed by this module. @@ -194,16 +181,13 @@ protected: bool m_maybe_emergency = false; // Based on the module.desc private: - void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception + void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception QString m_name; QString m_directory; QString m_instanceId; - - friend void ::operator>>( const QVariantMap& moduleDescriptor, - Calamares::Module* m ); }; -} +} // namespace Calamares -#endif // CALAMARES_MODULE_H +#endif // CALAMARES_MODULE_H diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index a030e55cd..33b638e64 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -56,7 +56,9 @@ ModuleManager::~ModuleManager() { // The map is populated with Module::fromDescriptor(), which allocates on the heap. for ( auto moduleptr : m_loadedModulesByInstanceKey ) + { delete moduleptr; + } } @@ -89,15 +91,20 @@ ModuleManager::doInit() bool success = currentDir.cd( subdir ); if ( success ) { - QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc") ) ); + static const char bad_descriptor[] = "ModuleManager potential module descriptor is bad"; + QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1String( "module.desc" ) ) ); if ( !descriptorFileInfo.exists() ) { - cDebug() << "ModuleManager expected descriptor is missing:" << descriptorFileInfo.absoluteFilePath(); + cDebug() << bad_descriptor + << descriptorFileInfo.absoluteFilePath() + << "(missing)"; continue; } if ( !descriptorFileInfo.isReadable() ) { - cDebug() << "ModuleManager descriptor file is unreadable:" << descriptorFileInfo.absoluteFilePath(); + cDebug() << bad_descriptor + << descriptorFileInfo.absoluteFilePath() + << "(unreadable)"; continue; } @@ -105,8 +112,8 @@ ModuleManager::doInit() QVariantMap moduleDescriptorMap = CalamaresUtils::loadYaml( descriptorFileInfo, &ok ); QString moduleName = ok ? moduleDescriptorMap.value( "name" ).toString() : QString(); - if ( ok && ( moduleName == currentDir.dirName() ) && - !m_availableDescriptorsByModuleName.contains( moduleName ) ) + if ( ok && !moduleName.isEmpty() && ( moduleName == currentDir.dirName() ) + && !m_availableDescriptorsByModuleName.contains( moduleName ) ) { m_availableDescriptorsByModuleName.insert( moduleName, moduleDescriptorMap ); m_moduleDirectoriesByModuleName.insert( moduleName, @@ -124,8 +131,11 @@ ModuleManager::doInit() cDebug() << "ModuleManager module search path does not exist:" << path; } } - // At this point m_availableModules is filled with whatever was found in the - // search paths. + // 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"; emit initDone(); } @@ -133,7 +143,12 @@ ModuleManager::doInit() QStringList ModuleManager::loadedInstanceKeys() { - return m_loadedModulesByInstanceKey.keys(); + QStringList l; + for ( const auto& m : m_loadedModulesByInstanceKey.keys() ) + { + l << m.toString(); + } + return l; } @@ -146,7 +161,7 @@ ModuleManager::moduleDescriptor( const QString& name ) Module* ModuleManager::moduleInstance( const QString& instanceKey ) { - return m_loadedModulesByInstanceKey.value( instanceKey ); + return m_loadedModulesByInstanceKey.value( ModuleSystem::InstanceKey::fromString( instanceKey ) ); } @@ -155,16 +170,16 @@ ModuleManager::moduleInstance( const QString& instanceKey ) * * @return -1 on failure, otherwise index of the instance that matches. */ -static int findCustomInstance( const Settings::InstanceDescriptionList& customInstances, - const QString& module, - const QString& id ) +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.value( "module" ) == module && - thisInstance.value( "id" ) == id ) + if ( thisInstance.value( "module" ) == m.module() && thisInstance.value( "id" ) == m.id() ) + { return i; + } } return -1; } @@ -173,138 +188,135 @@ static int findCustomInstance( const Settings::InstanceDescriptionList& customIn void ModuleManager::loadModules() { - QTimer::singleShot( 0, this, [ this ]() + if (checkDependencies()) { - QStringList failedModules = checkDependencies(); - Settings::InstanceDescriptionList customInstances = - Settings::instance()->customModuleInstances(); + cWarning() << "Some installed modules have unmet dependencies."; + } + Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); - const auto modulesSequence = failedModules.isEmpty() ? Settings::instance()->modulesSequence() : Settings::ModuleSequence(); - for ( const auto& modulePhase : modulesSequence ) + QStringList failedModules; + const auto modulesSequence + = Settings::instance()->modulesSequence() ; + for ( const auto& modulePhase : modulesSequence ) + { + ModuleSystem::Action currentAction = modulePhase.first; + + foreach ( const QString& moduleEntry, modulePhase.second ) { - ModuleAction currentAction = modulePhase.first; - - foreach ( const QString& moduleEntry, - modulePhase.second ) + auto instanceKey = ModuleSystem::InstanceKey::fromString( moduleEntry ); + if ( !instanceKey.isValid() ) { - QStringList moduleEntrySplit = moduleEntry.split( '@' ); - QString moduleName; - QString instanceId; - QString configFileName; - if ( moduleEntrySplit.length() < 1 || - moduleEntrySplit.length() > 2 ) + cError() << "Wrong module entry format for module" << moduleEntry; + failedModules.append( moduleEntry ); + continue; + } + + + if ( !m_availableDescriptorsByModuleName.contains( instanceKey.module() ) + || m_availableDescriptorsByModuleName.value( instanceKey.module() ).isEmpty() ) + { + cError() << "Module" << instanceKey.toString() << "not found in module search paths." + << Logger::DebugList( m_paths ); + failedModules.append( instanceKey.toString() ); + continue; + } + + QString configFileName; + if ( instanceKey.isCustom() ) + { + int found = findCustomInstance( customInstances, instanceKey ); + + if ( found > -1 ) { - cError() << "Wrong module entry format for module" << moduleEntry; + configFileName = customInstances[ found ].value( "config" ); + } + else //ought to be a custom instance, but cannot find instance entry + { + cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; failedModules.append( moduleEntry ); continue; } - moduleName = moduleEntrySplit.first(); - instanceId = moduleEntrySplit.last(); - configFileName = QString( "%1.conf" ).arg( moduleName ); + } + else + { + configFileName = QString( "%1.conf" ).arg( instanceKey.module() ); + } - if ( !m_availableDescriptorsByModuleName.contains( moduleName ) || - m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() ) + // So now we can assume that the module entry is at least valid, + // that we have a descriptor on hand (and therefore that the + // module exists), and that the instance is either default or + // defined in the custom instances section. + // We still don't know whether the config file for the entry + // exists and is valid, but that's the only thing that could fail + // from this point on. -- Teo 8/2015 + Module* thisModule = m_loadedModulesByInstanceKey.value( instanceKey, nullptr ); + if ( thisModule && !thisModule->isLoaded() ) + { + cError() << "Module" << instanceKey.toString() << "exists but not loaded."; + failedModules.append( instanceKey.toString() ); + continue; + } + + if ( thisModule && thisModule->isLoaded() ) + { + cDebug() << "Module" << instanceKey.toString() << "already loaded."; + } + else + { + thisModule = Module::fromDescriptor( m_availableDescriptorsByModuleName.value( instanceKey.module() ), + instanceKey.id(), + configFileName, + m_moduleDirectoriesByModuleName.value( instanceKey.module() ) ); + if ( !thisModule ) { - cError() << "Module" << moduleName << "not found in module search paths." - << Logger::DebugList( m_paths ); - failedModules.append( moduleName ); + cError() << "Module" << instanceKey.toString() << "cannot be created from descriptor" << configFileName; + failedModules.append( instanceKey.toString() ); continue; } - if ( moduleName != instanceId ) //means this is a custom instance + if ( !checkModuleDependencies( *thisModule ) ) { - int found = findCustomInstance( customInstances, moduleName, instanceId ); - - if ( found > -1 ) - configFileName = customInstances[ found ].value( "config" ); - else //ought to be a custom instance, but cannot find instance entry - { - cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; - failedModules.append( moduleEntry ); - continue; - } - } - - // So now we can assume that the module entry is at least valid, - // that we have a descriptor on hand (and therefore that the - // module exists), and that the instance is either default or - // defined in the custom instances section. - // We still don't know whether the config file for the entry - // exists and is valid, but that's the only thing that could fail - // from this point on. -- Teo 8/2015 - - QString instanceKey = QString( "%1@%2" ) - .arg( moduleName ) - .arg( instanceId ); - - Module* thisModule = - m_loadedModulesByInstanceKey.value( instanceKey, nullptr ); - if ( thisModule && !thisModule->isLoaded() ) - { - cError() << "Module" << instanceKey << "exists but not loaded."; - failedModules.append( instanceKey ); + // Error message is already printed + failedModules.append( instanceKey.toString() ); continue; } - if ( thisModule && thisModule->isLoaded() ) - cDebug() << "Module" << instanceKey << "already loaded."; - else + // If it's a ViewModule, it also appends the ViewStep to the ViewManager. + thisModule->loadSelf(); + m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); + if ( !thisModule->isLoaded() ) { - thisModule = - Module::fromDescriptor( m_availableDescriptorsByModuleName.value( moduleName ), - instanceId, - configFileName, - m_moduleDirectoriesByModuleName.value( moduleName ) ); - if ( !thisModule ) - { - cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName; - failedModules.append( instanceKey ); - continue; - } - - if ( !checkDependencies( *thisModule ) ) - { - // Error message is already printed - failedModules.append( instanceKey ); - continue; - } - - // If it's a ViewModule, it also appends the ViewStep to the ViewManager. - thisModule->loadSelf(); - m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); - if ( !thisModule->isLoaded() ) - { - cError() << "Module" << instanceKey << "loading FAILED."; - failedModules.append( instanceKey ); - continue; - } - } - - // At this point we most certainly have a pointer to a loaded module in - // thisModule. We now need to enqueue jobs info into an EVS. - if ( currentAction == ModuleAction::Exec ) - { - ExecutionViewStep* evs = - qobject_cast< ExecutionViewStep* >( - Calamares::ViewManager::instance()->viewSteps().last() ); - if ( !evs ) // If the last step is not an EVS, we must create it. - { - evs = new ExecutionViewStep( ViewManager::instance() ); - ViewManager::instance()->addViewStep( evs ); - } - - evs->appendJobModuleInstanceKey( instanceKey ); + cError() << "Module" << instanceKey.toString() << "loading FAILED."; + failedModules.append( instanceKey.toString() ); + continue; } } + + // At this point we most certainly have a pointer to a loaded module in + // thisModule. We now need to enqueue jobs info into an EVS. + if ( currentAction == ModuleSystem::Action::Exec ) + { + ExecutionViewStep* evs + = qobject_cast< ExecutionViewStep* >( Calamares::ViewManager::instance()->viewSteps().last() ); + if ( !evs ) // If the last step is not an EVS, we must create it. + { + evs = new ExecutionViewStep( ViewManager::instance() ); + ViewManager::instance()->addViewStep( evs ); + } + + evs->appendJobModuleInstanceKey( instanceKey.toString() ); + } } - if ( !failedModules.isEmpty() ) - { - ViewManager::instance()->onInitFailed( failedModules ); - emit modulesFailed( failedModules ); - } - else - emit modulesLoaded(); - } ); + } + if ( !failedModules.isEmpty() ) + { + ViewManager::instance()->onInitFailed( failedModules ); + emit modulesFailed( failedModules ); + } + else + { + emit modulesLoaded(); + } } void @@ -314,12 +326,12 @@ ModuleManager::checkRequirements() QVector< Module* > modules( m_loadedModulesByInstanceKey.count() ); int count = 0; - for (const auto& module : m_loadedModulesByInstanceKey ) + for ( const auto& module : m_loadedModulesByInstanceKey ) { - modules[count++] = module; + modules[ count++ ] = module; } - RequirementsChecker *rq = new RequirementsChecker( modules, this ); + RequirementsChecker* rq = new RequirementsChecker( modules, this ); connect( rq, &RequirementsChecker::requirementsResult, this, &ModuleManager::requirementsResult ); connect( rq, &RequirementsChecker::requirementsComplete, this, &ModuleManager::requirementsComplete ); connect( rq, &RequirementsChecker::requirementsProgress, this, &ModuleManager::requirementsProgress ); @@ -332,19 +344,21 @@ static QStringList missingRequiredModules( const QStringList& required, const QMap< QString, QVariantMap >& available ) { QStringList l; - for( const QString& depName : required ) + for ( const QString& depName : required ) { if ( !available.contains( depName ) ) + { l.append( depName ); + } } return l; } -QStringList +size_t ModuleManager::checkDependencies() { - QStringList failed; + size_t numberRemoved = 0; bool somethingWasRemovedBecauseOfUnmetDependencies = false; // This goes through the map of available modules, and deletes those whose @@ -352,38 +366,38 @@ ModuleManager::checkDependencies() do { somethingWasRemovedBecauseOfUnmetDependencies = false; - for ( auto it = m_availableDescriptorsByModuleName.begin(); - it != m_availableDescriptorsByModuleName.end(); ++it ) + for ( auto it = m_availableDescriptorsByModuleName.begin(); it != m_availableDescriptorsByModuleName.end(); + ++it ) { - QStringList unmet = missingRequiredModules( it->value( "requiredModules" ).toStringList(), m_availableDescriptorsByModuleName ); + QStringList unmet = missingRequiredModules( it->value( "requiredModules" ).toStringList(), + m_availableDescriptorsByModuleName ); if ( unmet.count() > 0 ) { QString moduleName = it->value( "name" ).toString(); somethingWasRemovedBecauseOfUnmetDependencies = true; m_availableDescriptorsByModuleName.erase( it ); - failed << moduleName; - cWarning() << "Module" << moduleName << "requires modules" << Logger::DebugList( unmet ); - cWarning() << Logger::SubEntry << "but these are not available (listed in settings, or installed)."; + numberRemoved++; + cWarning() << "Module" << moduleName << "requires missing modules" << Logger::DebugList( unmet ); break; } } - } - while( somethingWasRemovedBecauseOfUnmetDependencies ); + } while ( somethingWasRemovedBecauseOfUnmetDependencies ); - return failed; + return numberRemoved; } bool -ModuleManager::checkDependencies( const Module& m ) +ModuleManager::checkModuleDependencies( const Module& m ) { bool allRequirementsFound = true; - QStringList requiredModules = m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList(); + QStringList requiredModules + = m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList(); for ( const QString& required : requiredModules ) { bool requirementFound = false; - for( const Module* v : m_loadedModulesByInstanceKey ) + for ( const Module* v : m_loadedModulesByInstanceKey ) if ( required == v->name() ) { requirementFound = true; @@ -399,4 +413,4 @@ ModuleManager::checkDependencies( const Module& m ) return allRequirementsFound; } -} // namespace +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index 64db75b6a..7adbb24e2 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -20,6 +20,8 @@ #ifndef MODULELOADER_H #define MODULELOADER_H +#include "modulesystem/InstanceKey.h" + #include "Requirement.h" #include @@ -77,8 +79,9 @@ public: Module* moduleInstance( const QString& instanceKey ); /** - * @brief loadModules initiates the asynchronous module loading operation. + * @brief loadModules does all of the module loading operation. * When this is done, the signal modulesLoaded is emitted. + * It is recommended to call this from a single-shot QTimer. */ void loadModules(); @@ -91,7 +94,7 @@ public: signals: void initDone(); void modulesLoaded(); /// All of the modules were loaded successfully - void modulesFailed( QStringList ); /// .. or not + void modulesFailed( QStringList ); /// .. or not // Below, see RequirementsChecker documentation void requirementsComplete( bool ); void requirementsResult( RequirementsList ); @@ -103,15 +106,17 @@ private slots: private: /** * Check in a general sense whether the dependencies between - * modules are valid. Returns a list of module names that - * do **not** have their requirements met. + * modules are valid. Returns the number of modules that + * have missing dependencies -- this is **not** a problem + * unless any of those modules are actually used. * - * Returns an empty list on success. + * Returns 0 on success. * * Also modifies m_availableDescriptorsByModuleName to remove - * all the entries that fail. + * all the entries that (so that later, when we try to look + * them up, they are not found). */ - QStringList checkDependencies(); + size_t checkDependencies(); /** * Check for this specific module if its required modules have @@ -119,16 +124,16 @@ private: * * Returns true if the requirements are met. */ - bool checkDependencies( const Module& ); + bool checkModuleDependencies( const Module& ); QMap< QString, QVariantMap > m_availableDescriptorsByModuleName; QMap< QString, QString > m_moduleDirectoriesByModuleName; - QMap< QString, Module* > m_loadedModulesByInstanceKey; + QMap< ModuleSystem::InstanceKey, Module* > m_loadedModulesByInstanceKey; const QStringList m_paths; static ModuleManager* s_instance; }; -} +} // namespace Calamares -#endif // MODULELOADER_H +#endif // MODULELOADER_H diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index 85bdfa4de..fc4b5f254 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -44,12 +44,11 @@ void ProcessJobModule::loadSelf() { if ( m_loaded ) + { return; + } - m_job = job_ptr( new ProcessJob( m_command, - m_workingPath, - m_runInChroot, - m_secondsTimeout ) ); + m_job = job_ptr( new ProcessJob( m_command, m_workingPath, m_runInChroot, m_secondsTimeout ) ); m_loaded = true; } @@ -69,29 +68,38 @@ ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "command" ).toString().isEmpty() ) + { m_command = moduleDescriptor.value( "command" ).toString(); + } - m_secondsTimeout = 30; - if ( moduleDescriptor.contains( "timeout" ) && - !moduleDescriptor.value( "timeout" ).isNull() ) - m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt(); + 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() ) + if ( moduleDescriptor.contains( "chroot" ) && !moduleDescriptor.value( "chroot" ).isNull() ) + { m_runInChroot = moduleDescriptor.value( "chroot" ).toBool(); + } } ProcessJobModule::ProcessJobModule() : Module() - , m_secondsTimeout( 30 ) + , m_secondsTimeout( std::chrono::seconds( 30 ) ) , m_runInChroot( false ) -{} +{ +} -ProcessJobModule::~ProcessJobModule() -{} +ProcessJobModule::~ProcessJobModule() {} -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h index 704f8a639..96fb2ed47 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.h +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h @@ -24,6 +24,8 @@ #include "UiDllMacro.h" +#include + namespace Calamares { @@ -46,11 +48,11 @@ private: QString m_command; QString m_workingPath; - int m_secondsTimeout; + std::chrono::seconds m_secondsTimeout; bool m_runInChroot; job_ptr m_job; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_PROCESSJOBMODULE_H +#endif // CALAMARES_PROCESSJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index e910a4c80..46ec1dff1 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -45,7 +45,9 @@ void PythonJobModule::loadSelf() { if ( m_loaded ) + { return; + } m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) ); m_loaded = true; @@ -67,17 +69,19 @@ PythonJobModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) + { m_scriptFileName = moduleDescriptor.value( "script" ).toString(); + } } PythonJobModule::PythonJobModule() : Module() -{} +{ +} -PythonJobModule::~PythonJobModule() -{} +PythonJobModule::~PythonJobModule() {} -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index 38b10be83..8fa137f71 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -48,6 +48,6 @@ private: job_ptr m_job; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_PYTHONJOBMODULE_H +#endif // CALAMARES_PYTHONJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index ec9f3c805..08e4c5c08 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -20,15 +20,15 @@ #include "PythonQtViewModule.h" -#include "utils/Logger.h" -#include "viewpages/ViewStep.h" -#include "viewpages/PythonQtViewStep.h" -#include "ViewManager.h" #include "CalamaresConfig.h" -#include "viewpages/PythonQtGlobalStorageWrapper.h" -#include "viewpages/PythonQtUtilsWrapper.h" #include "GlobalStorage.h" #include "JobQueue.h" +#include "ViewManager.h" +#include "utils/Logger.h" +#include "viewpages/PythonQtGlobalStorageWrapper.h" +#include "viewpages/PythonQtUtilsWrapper.h" +#include "viewpages/PythonQtViewStep.h" +#include "viewpages/ViewStep.h" #include #include @@ -65,11 +65,12 @@ PythonQtViewModule::loadSelf() if ( PythonQt::self() == nullptr ) { if ( Py_IsInitialized() ) - PythonQt::init( PythonQt::IgnoreSiteModule | - PythonQt::RedirectStdOut | - PythonQt::PythonAlreadyInitialized ); + PythonQt::init( PythonQt::IgnoreSiteModule | PythonQt::RedirectStdOut + | PythonQt::PythonAlreadyInitialized ); else + { PythonQt::init(); + } PythonQt_QtAll::init(); cDebug() << "Initializing PythonQt bindings." @@ -81,8 +82,7 @@ PythonQtViewModule::loadSelf() // We only do the following to force PythonQt to create a submodule // "calamares" for us to put our static objects in - PythonQt::self()->registerClass( &::GlobalStorage::staticMetaObject, - "calamares" ); + PythonQt::self()->registerClass( &::GlobalStorage::staticMetaObject, "calamares" ); // Get a PythonQtObjectPtr to the PythonQt.calamares submodule PythonQtObjectPtr pqtm = PythonQt::priv()->pythonQtModule(); @@ -90,39 +90,34 @@ PythonQtViewModule::loadSelf() // Prepare GlobalStorage object, in module PythonQt.calamares if ( !s_gs ) + { s_gs = new ::GlobalStorage( Calamares::JobQueue::instance()->globalStorage() ); + } cala.addObject( "global_storage", s_gs ); // Prepare Utils object, in module PythonQt.calamares if ( !s_utils ) + { s_utils = new ::Utils( Calamares::JobQueue::instance()->globalStorage() ); + } cala.addObject( "utils", s_utils ); // Append configuration object, in module PythonQt.calamares cala.addVariable( "configuration", m_configurationMap ); // Basic stdout/stderr handling - QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, - []( const QString& message ) - { - cDebug() << "PythonQt OUT>" << message; - } - ); - QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, - []( const QString& message ) - { - cDebug() << "PythonQt ERR>" << message; - } - ); + QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, []( const QString& message ) { + cDebug() << "PythonQt OUT>" << message; + } ); + QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, []( const QString& message ) { + cDebug() << "PythonQt ERR>" << message; + } ); } QDir workingDir( m_workingPath ); if ( !workingDir.exists() ) { - cDebug() << "Invalid working directory" - << m_workingPath - << "for module" - << name(); + cDebug() << "Invalid working directory" << m_workingPath << "for module" << name(); return; } @@ -130,27 +125,19 @@ PythonQtViewModule::loadSelf() QFileInfo scriptFileInfo( fullPath ); if ( !scriptFileInfo.isReadable() ) { - cDebug() << "Invalid main script file path" - << fullPath - << "for module" - << name(); + cDebug() << "Invalid main script file path" << fullPath << "for module" << name(); return; } // Construct empty Python module with the given name - PythonQtObjectPtr cxt = - PythonQt::self()-> - createModuleFromScript( name() ); + PythonQtObjectPtr cxt = PythonQt::self()->createModuleFromScript( name() ); if ( cxt.isNull() ) { - cDebug() << "Cannot load PythonQt context from file" - << fullPath - << "for module" - << name(); + cDebug() << "Cannot load PythonQt context from file" << fullPath << "for module" << name(); return; } - static const QLatin1Literal calamares_module_annotation( + static const QLatin1String calamares_module_annotation( "_calamares_module_typename = ''\n" "def calamares_module(viewmodule_type):\n" " global _calamares_module_typename\n" @@ -165,9 +152,8 @@ PythonQtViewModule::loadSelf() m_viewStep = new PythonQtViewStep( cxt ); - cDebug() << "PythonQtViewModule loading self for instance" << instanceKey() - << "\nPythonQtViewModule at address" << this - << "\nViewStep at address" << m_viewStep; + cDebug() << "PythonQtViewModule loading self for instance" << instanceKey() << "\nPythonQtViewModule at address" + << this << "\nViewStep at address" << m_viewStep; m_viewStep->setModuleInstanceKey( instanceKey() ); m_viewStep->setConfigurationMap( m_configurationMap ); @@ -193,7 +179,9 @@ PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor ) m_workingPath = directory.absolutePath(); if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) + { m_scriptFileName = moduleDescriptor.value( "script" ).toString(); + } } PythonQtViewModule::PythonQtViewModule() @@ -201,8 +189,6 @@ PythonQtViewModule::PythonQtViewModule() { } -PythonQtViewModule::~PythonQtViewModule() -{ -} +PythonQtViewModule::~PythonQtViewModule() {} -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h index cc6899599..6ebb5c433 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.h +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -19,8 +19,8 @@ #ifndef CALAMARES_PYTHONQTVIEWMODULE_H #define CALAMARES_PYTHONQTVIEWMODULE_H -#include "UiDllMacro.h" #include "Module.h" +#include "UiDllMacro.h" namespace Calamares { @@ -40,7 +40,7 @@ protected: void initFrom( const QVariantMap& moduleDescriptor ) override; private: - friend class Module; //so only the superclass can instantiate + friend class Module; //so only the superclass can instantiate explicit PythonQtViewModule(); virtual ~PythonQtViewModule(); @@ -50,6 +50,6 @@ private: QString m_workingPath; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_PYTHONQTVIEWMODULE_H +#endif // CALAMARES_PYTHONQTVIEWMODULE_H diff --git a/src/libcalamaresui/modulesystem/Requirement.cpp b/src/libcalamaresui/modulesystem/Requirement.cpp index 3347a2ae8..e4525e8d6 100644 --- a/src/libcalamaresui/modulesystem/Requirement.cpp +++ b/src/libcalamaresui/modulesystem/Requirement.cpp @@ -16,4 +16,3 @@ * along with Calamares. If not, see . */ #include "Requirement.h" - diff --git a/src/libcalamaresui/modulesystem/Requirement.h b/src/libcalamaresui/modulesystem/Requirement.h index 396fe852b..3f8d1a54b 100644 --- a/src/libcalamaresui/modulesystem/Requirement.h +++ b/src/libcalamaresui/modulesystem/Requirement.h @@ -62,6 +62,6 @@ using RequirementsList = QList< RequirementEntry >; } // namespace Calamares -Q_DECLARE_METATYPE(Calamares::RequirementEntry) +Q_DECLARE_METATYPE( Calamares::RequirementEntry ) #endif diff --git a/src/libcalamaresui/modulesystem/RequirementsChecker.cpp b/src/libcalamaresui/modulesystem/RequirementsChecker.cpp index f71c24b8b..41281c9b9 100644 --- a/src/libcalamaresui/modulesystem/RequirementsChecker.cpp +++ b/src/libcalamaresui/modulesystem/RequirementsChecker.cpp @@ -25,10 +25,10 @@ #include -#include #include #include #include +#include namespace Calamares @@ -54,12 +54,15 @@ registerMetatypes() } static void -check( Module * const &m, RequirementsChecker *c ) +check( Module* const& m, RequirementsChecker* c ) { RequirementsList l = m->checkRequirements(); if ( l.count() > 0 ) + { c->addCheckedRequirements( l ); - c->requirementsProgress( QObject::tr( "Requirements checking for module %1 is complete." ).arg( m->name() ) ); + } + c->requirementsProgress( + QObject::tr( "Requirements checking for module %1 is complete." ).arg( m->name() ) ); } RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* parent ) @@ -74,9 +77,7 @@ RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* p registerMetatypes(); } -RequirementsChecker::~RequirementsChecker() -{ -} +RequirementsChecker::~RequirementsChecker() {} void RequirementsChecker::run() @@ -85,10 +86,11 @@ RequirementsChecker::run() connect( m_progressTimer, &QTimer::timeout, this, &RequirementsChecker::reportProgress ); m_progressTimer->start( 1200 ); // msec - for (const auto& module : m_modules ) + for ( const auto& module : m_modules ) { - Watcher *watcher = new Watcher( this ); + Watcher* watcher = new Watcher( this ); watcher->setFuture( QtConcurrent::run( check, module, this ) ); + watcher->setObjectName( module->name() ); m_watchers.append( watcher ); connect( watcher, &Watcher::finished, this, &RequirementsChecker::finished ); } @@ -102,7 +104,9 @@ RequirementsChecker::finished() static QMutex finishedMutex; QMutexLocker lock( &finishedMutex ); - if ( m_progressTimer && std::all_of( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher *w ) { return w && w->isFinished(); } ) ) + if ( m_progressTimer && std::all_of( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher* w ) { + return w && w->isFinished(); + } ) ) { cDebug() << "All requirements have been checked."; if ( m_progressTimer ) @@ -125,7 +129,7 @@ RequirementsChecker::finished() } emit requirementsComplete( acceptable ); - QTimer::singleShot(0, this, &RequirementsChecker::done ); + QTimer::singleShot( 0, this, &RequirementsChecker::done ); } } @@ -146,16 +150,27 @@ RequirementsChecker::reportProgress() { m_progressTimeouts++; - auto remaining = std::count_if( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher *w ) { return w && !w->isFinished(); } ); + QStringList remainingNames; + auto remaining = std::count_if( m_watchers.cbegin(), m_watchers.cend(), [&]( const Watcher* w ) { + if ( w && !w->isFinished() ) + { + remainingNames << w->objectName(); + return true; + } + return false; + } ); if ( remaining > 0 ) { + cDebug() << "Remaining modules:" << remaining << Logger::DebugList( remainingNames ); unsigned int posInterval = ( m_progressTimer->interval() < 0 ) ? 1000 : uint( m_progressTimer->interval() ); QString waiting = tr( "Waiting for %n module(s).", "", remaining ); QString elapsed = tr( "(%n second(s))", "", m_progressTimeouts * posInterval / 1000 ); emit requirementsProgress( waiting + QString( " " ) + elapsed ); } else + { emit requirementsProgress( tr( "System-requirements checking is complete." ) ); + } } -} +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/RequirementsChecker.h b/src/libcalamaresui/modulesystem/RequirementsChecker.h index 6e681971c..2e1708016 100644 --- a/src/libcalamaresui/modulesystem/RequirementsChecker.h +++ b/src/libcalamaresui/modulesystem/RequirementsChecker.h @@ -78,10 +78,10 @@ private: RequirementsList m_collectedRequirements; - QTimer *m_progressTimer; + QTimer* m_progressTimer; unsigned m_progressTimeouts; -} ; +}; -} +} // namespace Calamares #endif diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 2789dcfe3..7506e5348 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -19,10 +19,10 @@ #include "ViewModule.h" -#include "utils/PluginFactory.h" -#include "utils/Logger.h" -#include "viewpages/ViewStep.h" #include "ViewManager.h" +#include "utils/Logger.h" +#include "utils/PluginFactory.h" +#include "viewpages/ViewStep.h" #include #include @@ -50,7 +50,7 @@ ViewModule::loadSelf() { if ( m_loader ) { - PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); + CalamaresPluginFactory* pf = qobject_cast< CalamaresPluginFactory* >( m_loader->instance() ); if ( !pf ) { cWarning() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); @@ -75,7 +75,9 @@ ViewModule::loadSelf() cDebug() << "ViewModule" << instanceKey() << "loading complete."; } else + { cWarning() << Q_FUNC_INFO << "No view step was created"; + } } @@ -100,7 +102,7 @@ ViewModule::initFrom( const QVariantMap& moduleDescriptor ) // If a load path is not specified, we look for a plugin to load in the directory. if ( load.isEmpty() || !QLibrary::isLibrary( load ) ) { - const QStringList ls = directory.entryList( QStringList{ "*.so" } ); + const QStringList ls = directory.entryList( QStringList { "*.so" } ); if ( !ls.isEmpty() ) { for ( QString entry : ls ) @@ -135,4 +137,4 @@ ViewModule::checkRequirements() return m_viewStep->checkRequirements(); } -} // namespace Calamares +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h index 7813130d0..e9db1347b 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.h +++ b/src/libcalamaresui/modulesystem/ViewModule.h @@ -20,8 +20,8 @@ #ifndef CALAMARES_VIEWMODULE_H #define CALAMARES_VIEWMODULE_H -#include "UiDllMacro.h" #include "Module.h" +#include "UiDllMacro.h" class QPluginLoader; @@ -45,7 +45,7 @@ protected: void initFrom( const QVariantMap& moduleDescriptor ) override; private: - friend class Module; //so only the superclass can instantiate + friend class Module; //so only the superclass can instantiate explicit ViewModule(); virtual ~ViewModule() override; @@ -53,6 +53,6 @@ private: ViewStep* m_viewStep = nullptr; }; -} // namespace Calamares +} // namespace Calamares -#endif // CALAMARES_VIEWMODULE_H +#endif // CALAMARES_VIEWMODULE_H diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 808c805cb..bd15d7a68 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -34,11 +34,10 @@ namespace CalamaresUtils { -static int s_defaultFontSize = 0; +static int s_defaultFontSize = 0; static int s_defaultFontHeight = 0; - QPixmap defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) { @@ -75,6 +74,10 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/release.svg", size ); break; + case Donate: + pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/donate.svg", size ); + break; + case PartitionDisk: pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/partition-disk.svg", size ); break; @@ -152,11 +155,15 @@ createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPc } if ( !height || !width ) + { return QPixmap(); + } QPixmap scaledAvatar = pixmap.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); if ( frameWidthPct == 0.00f ) + { return scaledAvatar; + } QPixmap frame( width, height ); frame.fill( Qt::transparent ); @@ -172,7 +179,8 @@ createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPc painter.setBrush( brush ); painter.setPen( pen ); - painter.drawRoundedRect( outerRect, qreal( frameWidthPct ) * 100.0, qreal( frameWidthPct ) * 100.0, Qt::RelativeSize ); + painter.drawRoundedRect( + outerRect, qreal( frameWidthPct ) * 100.0, qreal( frameWidthPct ) * 100.0, Qt::RelativeSize ); return frame; } @@ -189,7 +197,9 @@ unmarginLayout( QLayout* layout ) { QLayout* childLayout = layout->itemAt( i )->layout(); if ( childLayout ) + { unmarginLayout( childLayout ); + } } } @@ -255,13 +265,17 @@ clearLayout( QLayout* layout ) while ( QLayoutItem* item = layout->takeAt( 0 ) ) { if ( QWidget* widget = item->widget() ) + { widget->deleteLater(); + } if ( QLayout* childLayout = item->layout() ) + { clearLayout( childLayout ); + } delete item; } } -} // namespace +} // namespace CalamaresUtils diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index 72430a083..0c10dcc30 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -47,6 +47,7 @@ enum ImageType : int Bugs, Help, Release, + Donate, PartitionDisk, PartitionPartition, PartitionAlongside, @@ -56,7 +57,7 @@ enum ImageType : int PartitionTable, BootEnvironment, Squid, - StatusOk, // Icons for the requirements checker + StatusOk, // Icons for the requirements checker StatusWarning, StatusError }; @@ -94,9 +95,7 @@ UIDLLEXPORT QPixmap defaultPixmap( ImageType type, * @return the transformed pixmap. * This one is currently unused. */ -UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, - const QSize& size, - float frameWidthPct = 0.20f ); +UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, const QSize& size, float frameWidthPct = 0.20f ); /** * @brief unmarginLayout recursively walks the QLayout tree and removes all margins. @@ -112,8 +111,8 @@ UIDLLEXPORT void unmarginLayout( QLayout* layout ); UIDLLEXPORT void clearLayout( QLayout* layout ); UIDLLEXPORT void setDefaultFontSize( int points ); -UIDLLEXPORT int defaultFontSize(); // in points -UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific +UIDLLEXPORT int defaultFontSize(); // in points +UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific UIDLLEXPORT QFont defaultFont(); UIDLLEXPORT QFont largeFont(); UIDLLEXPORT QSize defaultIconSize(); @@ -128,4 +127,4 @@ constexpr int windowPreferredHeight = 520; } // namespace CalamaresUtils -#endif // CALAMARESUTILSGUI_H +#endif // CALAMARESUTILSGUI_H diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp index 96ea92bbb..1c3b9433e 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -2,6 +2,8 @@ * * SPDX-License-Identifier: GPLv3+ * License-Filename: LICENSES/GPLv3+-ImageRegistry + * + * Copyright 2019, Adriaan de Groot */ /* @@ -23,25 +25,22 @@ #include "ImageRegistry.h" -#include #include +#include #include static QHash< QString, QHash< int, QHash< qint64, QPixmap > > > s_cache; -ImageRegistry* ImageRegistry::s_instance = 0; ImageRegistry* ImageRegistry::instance() { + static ImageRegistry* s_instance = new ImageRegistry(); return s_instance; } -ImageRegistry::ImageRegistry() -{ - s_instance = this; -} +ImageRegistry::ImageRegistry() {} QIcon @@ -52,16 +51,20 @@ ImageRegistry::icon( const QString& image, CalamaresUtils::ImageMode mode ) qint64 -ImageRegistry::cacheKey( const QSize& size, float opacity, QColor tint ) +ImageRegistry::cacheKey( const QSize& size, qreal opacity, QColor tint ) { - return size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ) + tint.value(); + return size.width() * 100 + size.height() * 10 + static_cast< qint64 >( opacity * 100.0 ) + tint.value(); } QPixmap -ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, QColor tint ) +ImageRegistry::pixmap( const QString& image, + const QSize& size, + CalamaresUtils::ImageMode mode, + qreal opacity, + QColor tint ) { - Q_ASSERT( !(size.width() < 0 || size.height() < 0) ); + Q_ASSERT( !( size.width() < 0 || size.height() < 0 ) ); if ( size.width() < 0 || size.height() < 0 ) { return QPixmap(); @@ -110,23 +113,20 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: resultImage.setAlphaChannel( p.toImage().alphaChannel() ); p = QPixmap::fromImage( resultImage ); - } + } pixmap = p; } else + { pixmap = QPixmap( image ); + } if ( !pixmap.isNull() ) { - switch ( mode ) + if ( mode == CalamaresUtils::RoundedCorners ) { - case CalamaresUtils::RoundedCorners: - pixmap = CalamaresUtils::createRoundedImage( pixmap, size ); - break; - - default: - break; + pixmap = CalamaresUtils::createRoundedImage( pixmap, size ); } if ( !size.isNull() && pixmap.size() != size ) @@ -140,7 +140,9 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: pixmap = pixmap.scaledToWidth( size.width(), Qt::SmoothTransformation ); } else + { pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); + } } putInCache( image, size, mode, opacity, pixmap, tint ); @@ -151,7 +153,12 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: void -ImageRegistry::putInCache( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint ) +ImageRegistry::putInCache( const QString& image, + const QSize& size, + CalamaresUtils::ImageMode mode, + qreal opacity, + const QPixmap& pixmap, + QColor tint ) { QHash< qint64, QPixmap > subsubcache; QHash< int, QHash< qint64, QPixmap > > subcache; diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h index e35eaf74a..454cb500d 100644 --- a/src/libcalamaresui/utils/ImageRegistry.h +++ b/src/libcalamaresui/utils/ImageRegistry.h @@ -2,6 +2,8 @@ * * SPDX-License-Identifier: GPLv3+ * License-Filename: LICENSES/GPLv3+-ImageRegistry + * + * Copyright 2019, Adriaan de Groot */ /* @@ -26,8 +28,8 @@ #include -#include "utils/CalamaresUtilsGui.h" #include "UiDllMacro.h" +#include "utils/CalamaresUtilsGui.h" class UIDLLEXPORT ImageRegistry { @@ -37,13 +39,20 @@ public: explicit ImageRegistry(); QIcon icon( const QString& image, CalamaresUtils::ImageMode mode = CalamaresUtils::Original ); - QPixmap pixmap( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode = CalamaresUtils::Original, float opacity = 1.0, QColor tint = QColor( 0, 0, 0, 0 ) ); + QPixmap pixmap( const QString& image, + const QSize& size, + CalamaresUtils::ImageMode mode = CalamaresUtils::Original, + qreal opacity = 1.0, + QColor tint = QColor( 0, 0, 0, 0 ) ); private: - qint64 cacheKey( const QSize& size, float opacity, QColor tint ); - void putInCache( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint ); - - static ImageRegistry* s_instance; + qint64 cacheKey( const QSize& size, qreal opacity, QColor tint ); + void putInCache( const QString& image, + const QSize& size, + CalamaresUtils::ImageMode mode, + qreal opacity, + const QPixmap& pixmap, + QColor tint ); }; -#endif // IMAGE_REGISTRY_H +#endif // IMAGE_REGISTRY_H diff --git a/src/libcalamaresui/utils/Paste.cpp b/src/libcalamaresui/utils/Paste.cpp new file mode 100644 index 000000000..1b9ad4dfe --- /dev/null +++ b/src/libcalamaresui/utils/Paste.cpp @@ -0,0 +1,99 @@ +/* === This file is part of Calamares - === + * + * Copyright 2019, Bill Auger + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General 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 "Paste.h" + +#include "utils/Logger.h" + +#include +#include +#include +#include + +namespace CalamaresUtils +{ + +QString +sendLogToPastebin( QObject* parent, const QString& ficheHost, quint16 fichePort ) +{ + QString pasteUrlFmt = parent->tr( "Install log posted to:\n%1" ); + QFile pasteSourceFile( Logger::logFile() ); + if ( !pasteSourceFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + cError() << "Could not open log file"; + return QString(); + } + + QByteArray pasteData; + while ( !pasteSourceFile.atEnd() ) + { + pasteData += pasteSourceFile.readLine(); + } + + QTcpSocket* socket = new QTcpSocket( parent ); + socket->connectToHost( ficheHost, fichePort ); + + if ( !socket->waitForConnected() ) + { + cError() << "Could not connect to paste server"; + socket->close(); + return QString(); + } + + cDebug() << "Connected to paste server"; + + socket->write( pasteData ); + + if ( !socket->waitForBytesWritten() ) + { + cError() << "Could not write to paste server"; + socket->close(); + return QString(); + } + + cDebug() << "Paste data written to paste server"; + + if ( !socket->waitForReadyRead() ) + { + cError() << "No data from paste server"; + socket->close(); + return QString(); + } + + cDebug() << "Reading response from paste server"; + + char resp[ 1024 ]; + resp[ 0 ] = '\0'; + qint64 nBytesRead = socket->readLine( resp, 1024 ); + socket->close(); + + QUrl pasteUrl = QUrl( QString( resp ).trimmed(), QUrl::StrictMode ); + QString pasteUrlStr = pasteUrl.toString(); + QRegularExpression pasteUrlRegex( "^http[s]?://" + ficheHost ); + QString pasteUrlMsg = QString( pasteUrlFmt ).arg( pasteUrlStr ); + + if ( nBytesRead < 8 || !pasteUrl.isValid() || !pasteUrlRegex.match( pasteUrlStr ).hasMatch() ) + { + cError() << "No data from paste server"; + return QString(); + } + + cDebug() << "Paste server results:" << pasteUrlMsg; + return pasteUrlMsg; +} +} // namespace CalamaresUtils diff --git a/src/modules/locale/timezonewidget/localeconst.h b/src/libcalamaresui/utils/Paste.h similarity index 64% rename from src/modules/locale/timezonewidget/localeconst.h rename to src/libcalamaresui/utils/Paste.h index 3bac6adde..fd088882c 100644 --- a/src/modules/locale/timezonewidget/localeconst.h +++ b/src/libcalamaresui/utils/Paste.h @@ -1,10 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * - * Originally from the Manjaro Installation Framework - * by Roland Singer - * Copyright (C) 2007 Free Software Foundation, Inc. + * Copyright 2019, Bill Auger * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,13 +16,23 @@ * along with Calamares. If not, see . */ -#ifndef LOCALECONST_H -#define LOCALECONST_H +#ifndef UTILS_PASTE_H +#define UTILS_PASTE_H +#include // for quint16 -#define LOCALESDIR "/usr/share/i18n/locales" -#define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" -#define USER_IMAGES_PATH "/usr/share/pixmaps/faces" +class QObject; +class QString; +namespace CalamaresUtils +{ -#endif // LOCALECONST_H +/** @brief Send the current log file to a pastebin + * + * Returns the (string) URL that the pastebin gives us. + */ +QString sendLogToPastebin( QObject* parent, const QString& ficheHost, quint16 fichePort ); + +} // namespace CalamaresUtils + +#endif diff --git a/src/libcalamaresui/utils/PythonQtUtils.cpp b/src/libcalamaresui/utils/PythonQtUtils.cpp index 201fe6635..3a60839a4 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.cpp +++ b/src/libcalamaresui/utils/PythonQtUtils.cpp @@ -34,11 +34,13 @@ lookupAndCall( PyObject* object, { PythonQtObjectPtr callable = PythonQt::self()->lookupCallable( object, name ); if ( callable ) + { return callable.call( args, kwargs ); + } } // If we haven't found a callable with the given names, we force an error: return PythonQt::self()->call( object, candidateNames.first(), args, kwargs ); } -} +} // namespace CalamaresUtils diff --git a/src/libcalamaresui/utils/PythonQtUtils.h b/src/libcalamaresui/utils/PythonQtUtils.h index 22a248cea..dc889b2d0 100644 --- a/src/libcalamaresui/utils/PythonQtUtils.h +++ b/src/libcalamaresui/utils/PythonQtUtils.h @@ -33,6 +33,6 @@ QVariant lookupAndCall( PyObject* object, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap() ); -} //ns +} // namespace CalamaresUtils -#endif // PYTHONQTUTILS_H +#endif // PYTHONQTUTILS_H diff --git a/src/libcalamaresui/utils/qjsonitem.cpp b/src/libcalamaresui/utils/qjsonitem.cpp deleted file mode 100644 index cdc4b3b13..000000000 --- a/src/libcalamaresui/utils/qjsonitem.cpp +++ /dev/null @@ -1,141 +0,0 @@ -/* === This file is part of Calamares - === - * - * SPDX-License-Identifier: GPL-3.0+ - * License-Filename: LICENSES/GPLv3+-QJsonModel - */ - -/*********************************************** - Copyright (C) 2014 Schutz Sacha - This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). - - QJsonModel is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - QJsonModel is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QJsonModel. If not, see . - -**********************************************/ - -#include "qjsonitem.h" - -QJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent) - : mParent( parent ) - , mType( QJsonValue::Type::Null ) -{ -} - -QJsonTreeItem::~QJsonTreeItem() -{ - qDeleteAll(mChilds); - -} - -void QJsonTreeItem::appendChild(QJsonTreeItem *item) -{ - mChilds.append(item); -} - -QJsonTreeItem *QJsonTreeItem::child(int row) -{ - return mChilds.value(row); -} - -QJsonTreeItem *QJsonTreeItem::parent() -{ - return mParent; -} - -int QJsonTreeItem::childCount() const -{ - return mChilds.count(); -} - -int QJsonTreeItem::row() const -{ - if (mParent) - return mParent->mChilds.indexOf(const_cast(this)); - - return 0; -} - -void QJsonTreeItem::setKey(const QString &key) -{ - mKey = key; -} - -void QJsonTreeItem::setValue(const QString &value) -{ - mValue = value; -} - -void QJsonTreeItem::setType(const QJsonValue::Type &type) -{ - mType = type; -} - -QString QJsonTreeItem::key() const -{ - return mKey; -} - -QString QJsonTreeItem::value() const -{ - return mValue; -} - -QJsonValue::Type QJsonTreeItem::type() const -{ - return mType; -} - -QJsonTreeItem* QJsonTreeItem::load(const QJsonValue& value, QJsonTreeItem* parent) -{ - - - QJsonTreeItem * rootItem = new QJsonTreeItem(parent); - rootItem->setKey("root"); - - if ( value.isObject()) - { - - //Get all QJsonValue childs - foreach (QString key , value.toObject().keys()){ - QJsonValue v = value.toObject().value(key); - QJsonTreeItem * child = load(v,rootItem); - child->setKey(key); - child->setType(v.type()); - rootItem->appendChild(child); - - } - - } - - else if ( value.isArray()) - { - //Get all QJsonValue childs - int index = 0; - foreach (QJsonValue v , value.toArray()){ - - QJsonTreeItem * child = load(v,rootItem); - child->setKey(QString::number(index)); - child->setType(v.type()); - rootItem->appendChild(child); - ++index; - } - } - else - { - rootItem->setValue(value.toVariant().toString()); - rootItem->setType(value.type()); - } - - return rootItem; -} - diff --git a/src/libcalamaresui/utils/qjsonitem.h b/src/libcalamaresui/utils/qjsonitem.h deleted file mode 100644 index 113c9da97..000000000 --- a/src/libcalamaresui/utils/qjsonitem.h +++ /dev/null @@ -1,47 +0,0 @@ -/* === This file is part of Calamares - === - * - * SPDX-License-Identifier: GPL-3.0+ - * License-Filename: LICENSES/GPLv3+-QJsonModel - */ - -#ifndef JSONITEM_H -#define JSONITEM_H -#include -#include -#include -#include -class QJsonTreeItem -{ -public: - QJsonTreeItem(QJsonTreeItem * parent = nullptr); - ~QJsonTreeItem(); - void appendChild(QJsonTreeItem * item); - QJsonTreeItem *child(int row); - QJsonTreeItem *parent(); - int childCount() const; - int row() const; - void setKey(const QString& key); - void setValue(const QString& value); - void setType(const QJsonValue::Type& type); - QString key() const; - QString value() const; - QJsonValue::Type type() const; - - - static QJsonTreeItem* load(const QJsonValue& value, QJsonTreeItem * parent = nullptr); - -protected: - - -private: - QString mKey; - QString mValue; - QJsonValue::Type mType; - - QList mChilds; - QJsonTreeItem * mParent; - - -}; - -#endif // JSONITEM_H diff --git a/src/libcalamaresui/utils/qjsonmodel.cpp b/src/libcalamaresui/utils/qjsonmodel.cpp deleted file mode 100644 index 4238bfd6b..000000000 --- a/src/libcalamaresui/utils/qjsonmodel.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* === This file is part of Calamares - === - * - * SPDX-License-Identifier: GPL-3.0+ - * License-Filename: LICENSES/GPLv3+-QJsonModel - */ - -/*********************************************** - Copyright (C) 2014 Schutz Sacha - This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). - - QJsonModel is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - QJsonModel is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QJsonModel. If not, see . - -**********************************************/ - -#include "qjsonmodel.h" -#include -#include -#include -#include -#include -#include - -QJsonModel::QJsonModel(QObject *parent) : - QAbstractItemModel(parent) - , mRootItem( new QJsonTreeItem ) -{ - mHeaders.append("key"); - mHeaders.append("value"); - - -} - -QJsonModel::~QJsonModel() -{ - delete mRootItem; -} - -bool QJsonModel::load(const QString &fileName) -{ - QFile file(fileName); - bool success = false; - if (file.open(QIODevice::ReadOnly)) { - success = load(&file); - file.close(); - } - else success = false; - - return success; -} - -bool QJsonModel::load(QIODevice *device) -{ - return loadJson(device->readAll()); -} - -bool QJsonModel::loadJson(const QByteArray &json) -{ - mDocument = QJsonDocument::fromJson(json); - - if (!mDocument.isNull()) - { - beginResetModel(); - delete mRootItem; - if (mDocument.isArray()) { - mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.array())); - } else { - mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.object())); - } - endResetModel(); - return true; - } - return false; -} - - -QVariant QJsonModel::data(const QModelIndex &index, int role) const -{ - - if (!index.isValid()) - return QVariant(); - - - QJsonTreeItem *item = static_cast(index.internalPointer()); - - - if ((role == Qt::DecorationRole) && (index.column() == 0)){ - - return mTypeIcons.value(item->type()); - } - - - if (role == Qt::DisplayRole) { - - if (index.column() == 0) - return QString("%1").arg(item->key()); - - if (index.column() == 1) - return QString("%1").arg(item->value()); - } - - - - return QVariant(); - -} - -QVariant QJsonModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if (role != Qt::DisplayRole) - return QVariant(); - - if (orientation == Qt::Horizontal) { - - return mHeaders.value(section); - } - else - return QVariant(); -} - -QModelIndex QJsonModel::index(int row, int column, const QModelIndex &parent) const -{ - if (!hasIndex(row, column, parent)) - return QModelIndex(); - - QJsonTreeItem *parentItem; - - if (!parent.isValid()) - parentItem = mRootItem; - else - parentItem = static_cast(parent.internalPointer()); - - QJsonTreeItem *childItem = parentItem->child(row); - if (childItem) - return createIndex(row, column, childItem); - else - return QModelIndex(); -} - -QModelIndex QJsonModel::parent(const QModelIndex &index) const -{ - if (!index.isValid()) - return QModelIndex(); - - QJsonTreeItem *childItem = static_cast(index.internalPointer()); - QJsonTreeItem *parentItem = childItem->parent(); - - if (parentItem == mRootItem) - return QModelIndex(); - - return createIndex(parentItem->row(), 0, parentItem); -} - -int QJsonModel::rowCount(const QModelIndex &parent) const -{ - QJsonTreeItem *parentItem; - if (parent.column() > 0) - return 0; - - if (!parent.isValid()) - parentItem = mRootItem; - else - parentItem = static_cast(parent.internalPointer()); - - return parentItem->childCount(); -} - -int QJsonModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return 2; -} - -void QJsonModel::setIcon(const QJsonValue::Type &type, const QIcon &icon) -{ - mTypeIcons.insert(type,icon); -} diff --git a/src/libcalamaresui/utils/qjsonmodel.h b/src/libcalamaresui/utils/qjsonmodel.h deleted file mode 100644 index fc2c4abe1..000000000 --- a/src/libcalamaresui/utils/qjsonmodel.h +++ /dev/null @@ -1,43 +0,0 @@ -/* === This file is part of Calamares - === - * - * SPDX-License-Identifier: GPL-3.0+ - * License-Filename: LICENSES/GPLv3+-QJsonModel - */ - -#ifndef QJSONMODEL_H -#define QJSONMODEL_H - -#include -#include "qjsonitem.h" -#include -#include -#include -class QJsonModel : public QAbstractItemModel -{ - Q_OBJECT -public: - explicit QJsonModel(QObject *parent = nullptr); - ~QJsonModel(); - bool load(const QString& fileName); - bool load(QIODevice * device); - bool loadJson(const QByteArray& json); - QVariant data(const QModelIndex &index, int role) const; - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex index(int row, int column,const QModelIndex &parent = QModelIndex()) const; - QModelIndex parent(const QModelIndex &index) const; - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; - void setIcon(const QJsonValue::Type& type, const QIcon& icon); - - - -private: - QJsonTreeItem * mRootItem; - QJsonDocument mDocument; - QStringList mHeaders; - QHash mTypeIcons; - - -}; - -#endif // QJSONMODEL_H diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp index 243305c1f..af10c7a99 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.cpp +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -26,7 +26,10 @@ namespace Calamares { -BlankViewStep::BlankViewStep( const QString& title, const QString& description, const QString& details, QObject* parent) +BlankViewStep::BlankViewStep( const QString& title, + const QString& description, + const QString& details, + QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new QWidget() ) { @@ -54,14 +57,12 @@ BlankViewStep::BlankViewStep( const QString& title, const QString& description, layout->addWidget( label ); } - layout->addStretch( 1 ); // Push the rest to the top + layout->addStretch( 1 ); // Push the rest to the top m_widget->setLayout( layout ); } -BlankViewStep::~BlankViewStep() -{ -} +BlankViewStep::~BlankViewStep() {} QString BlankViewStep::prettyName() const @@ -115,4 +116,4 @@ BlankViewStep::jobs() const return JobList(); } -} // namespace +} // namespace Calamares diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h index a3f46d1d5..17d323c85 100644 --- a/src/libcalamaresui/viewpages/BlankViewStep.h +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -39,7 +39,10 @@ class BlankViewStep : public Calamares::ViewStep Q_OBJECT public: - explicit BlankViewStep( const QString& title, const QString& description, const QString& details = QString(), QObject* parent = nullptr ); + explicit BlankViewStep( const QString& title, + const QString& description, + const QString& details = QString(), + QObject* parent = nullptr ); virtual ~BlankViewStep() override; QString prettyName() const override; @@ -61,5 +64,5 @@ private: QWidget* m_widget; }; -} // namespace +} // namespace Calamares #endif // BLANKVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp index 4eae8cf98..ba7657b09 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp @@ -24,7 +24,8 @@ GlobalStorage::GlobalStorage( Calamares::GlobalStorage* gs ) : QObject( gs ) , m_gs( gs ) -{} +{ +} bool diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h index 8a8b775fc..946f93e97 100644 --- a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -54,4 +54,4 @@ private: Calamares::GlobalStorage* m_gs; }; -#endif // PYTHONQTGLOBALSTORAGEWRAPPER_H +#endif // PYTHONQTGLOBALSTORAGEWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtJob.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp index 291cbd014..0718df95d 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.cpp +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -20,34 +20,26 @@ #include "utils/PythonQtUtils.h" -PythonQtJob::PythonQtJob( PythonQtObjectPtr cxt, - PythonQtObjectPtr pyJob, - QObject* parent ) +PythonQtJob::PythonQtJob( PythonQtObjectPtr cxt, PythonQtObjectPtr pyJob, QObject* parent ) : Calamares::Job( parent ) , m_cxt( cxt ) , m_pyJob( pyJob ) { - } QString PythonQtJob::prettyName() const { - return CalamaresUtils::lookupAndCall( m_pyJob, - { "prettyName", - "prettyname", - "pretty_name" } ).toString(); + return CalamaresUtils::lookupAndCall( m_pyJob, { "prettyName", "prettyname", "pretty_name" } ).toString(); } QString PythonQtJob::prettyDescription() const { - return CalamaresUtils::lookupAndCall( m_pyJob, - { "prettyDescription", - "prettydescription", - "pretty_description" } ).toString(); + return CalamaresUtils::lookupAndCall( m_pyJob, { "prettyDescription", "prettydescription", "pretty_description" } ) + .toString(); } @@ -55,9 +47,8 @@ QString PythonQtJob::prettyStatusMessage() const { return CalamaresUtils::lookupAndCall( m_pyJob, - { "prettyStatusMessage", - "prettystatusmessage", - "pretty_status_message" } ).toString(); + { "prettyStatusMessage", "prettystatusmessage", "pretty_status_message" } ) + .toString(); } @@ -66,12 +57,15 @@ PythonQtJob::exec() { QVariant response = m_pyJob.call( "exec" ); if ( response.isNull() ) + { return Calamares::JobResult::ok(); + } QVariantMap map = response.toMap(); if ( map.isEmpty() || map.value( "ok" ).toBool() ) + { return Calamares::JobResult::ok(); + } - return Calamares::JobResult::error( map.value( "message" ).toString(), - map.value( "details" ).toString() ); + return Calamares::JobResult::error( map.value( "message" ).toString(), map.value( "details" ).toString() ); } diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h index 2b50c0ded..a73e7eb82 100644 --- a/src/libcalamaresui/viewpages/PythonQtJob.h +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -32,12 +32,11 @@ class PythonQtJobResult : public QObject, public Calamares::JobResult { Q_OBJECT public: - explicit PythonQtJobResult( bool ok, - const QString& message, - const QString& details ) + explicit PythonQtJobResult( bool ok, const QString& message, const QString& details ) : QObject( nullptr ) , Calamares::JobResult( message, details, ok ? 0 : Calamares::JobResult::GenericError ) - {} + { + } }; @@ -53,13 +52,11 @@ public: Calamares::JobResult exec() override; private: - explicit PythonQtJob( PythonQtObjectPtr cxt, - PythonQtObjectPtr pyJob, - QObject* parent = nullptr ); - friend class Calamares::PythonQtViewStep; // only this one can call the ctor + explicit PythonQtJob( PythonQtObjectPtr cxt, PythonQtObjectPtr pyJob, QObject* parent = nullptr ); + friend class Calamares::PythonQtViewStep; // only this one can call the ctor PythonQtObjectPtr m_cxt; PythonQtObjectPtr m_pyJob; }; -#endif // PYTHONQTJOB_H +#endif // PYTHONQTJOB_H diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp index a61dadc5b..d16bd56f8 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp @@ -27,7 +27,7 @@ #include -Utils::Utils(QObject* parent) +Utils::Utils( QObject* parent ) : QObject( parent ) , m_exceptionCxt( PythonQt::self()->createUniqueModule() ) { @@ -36,7 +36,7 @@ Utils::Utils(QObject* parent) void -Utils::debug(const QString& s) const +Utils::debug( const QString& s ) const { cDebug() << "PythonQt DBG>" << s; } @@ -53,29 +53,23 @@ Utils::mount( const QString& device_path, int -Utils::target_env_call( const QString& command, - const QString& stdin, - int timeout ) const +Utils::target_env_call( const QString& command, const QString& stdin, int timeout ) const { - return CalamaresUtils::System::instance()-> - targetEnvCall( command, QString(), stdin, timeout ); + return CalamaresUtils::System::instance()->targetEnvCall( + command, QString(), stdin, std::chrono::seconds( timeout > 0 ? timeout : 0 ) ); } int -Utils::target_env_call( const QStringList& args, - const QString& stdin, - int timeout ) const +Utils::target_env_call( const QStringList& args, const QString& stdin, int timeout ) const { - return CalamaresUtils::System::instance()-> - targetEnvCall( args, QString(), stdin, timeout ); + return CalamaresUtils::System::instance()->targetEnvCall( + args, QString(), stdin, std::chrono::seconds( timeout > 0 ? timeout : 0 ) ); } int -Utils::check_target_env_call( const QString& command, - const QString& stdin, - int timeout ) const +Utils::check_target_env_call( const QString& command, const QString& stdin, int timeout ) const { int ec = target_env_call( command, stdin, timeout ); return _handle_check_target_env_call_error( ec, command ); @@ -83,9 +77,7 @@ Utils::check_target_env_call( const QString& command, int -Utils::check_target_env_call( const QStringList& args, - const QString& stdin, - int timeout) const +Utils::check_target_env_call( const QStringList& args, const QString& stdin, int timeout ) const { int ec = target_env_call( args, stdin, timeout ); return _handle_check_target_env_call_error( ec, args.join( ' ' ) ); @@ -93,34 +85,22 @@ Utils::check_target_env_call( const QStringList& args, QString -Utils::check_target_env_output( const QString& command, - const QString& stdin, - int timeout ) const +Utils::check_target_env_output( const QString& command, const QString& stdin, int timeout ) const { QString output; - int ec = CalamaresUtils::System::instance()-> - targetEnvOutput( command, - output, - QString(), - stdin, - timeout ); + int ec = CalamaresUtils::System::instance()->targetEnvOutput( + command, output, QString(), stdin, std::chrono::seconds( timeout > 0 ? timeout : 0 ) ); _handle_check_target_env_call_error( ec, command ); return output; } QString -Utils::check_target_env_output( const QStringList& args, - const QString& stdin, - int timeout ) const +Utils::check_target_env_output( const QStringList& args, const QString& stdin, int timeout ) const { QString output; - int ec = CalamaresUtils::System::instance()-> - targetEnvOutput( args, - output, - QString(), - stdin, - timeout ); + int ec = CalamaresUtils::System::instance()->targetEnvOutput( + args, output, QString(), stdin, std::chrono::seconds( timeout > 0 ? timeout : 0 ) ); _handle_check_target_env_call_error( ec, args.join( ' ' ) ); return output; } @@ -134,13 +114,11 @@ Utils::obscure( const QString& string ) const int -Utils::_handle_check_target_env_call_error( int ec, const QString& cmd) const +Utils::_handle_check_target_env_call_error( int ec, const QString& cmd ) const { if ( ec ) { - QString raise = QString( "raise subprocess.CalledProcessError(%1,\"%2\")" ) - .arg( ec ) - .arg( cmd ); + QString raise = QString( "raise subprocess.CalledProcessError(%1,\"%2\")" ).arg( ec ).arg( cmd ); PythonQt::self()->evalScript( m_exceptionCxt, raise ); } return ec; diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h index ea6955337..19b8b623d 100644 --- a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -43,29 +43,17 @@ public slots: const QString& filesystem_name, const QString& options ) const; - int target_env_call( const QString& command, - const QString& stdin = QString(), - int timeout = 0 ) const; + int target_env_call( const QString& command, const QString& stdin = QString(), int timeout = 0 ) const; - int target_env_call( const QStringList& args, - const QString& stdin = QString(), - int timeout = 0 ) const; + int target_env_call( const QStringList& args, const QString& stdin = QString(), int timeout = 0 ) const; - int check_target_env_call( const QString& command, - const QString& stdin = QString(), - int timeout = 0 ) const; + int check_target_env_call( const QString& command, const QString& stdin = QString(), int timeout = 0 ) const; - int check_target_env_call( const QStringList& args, - const QString& stdin = QString(), - int timeout = 0 ) const; + int check_target_env_call( const QStringList& args, const QString& stdin = QString(), int timeout = 0 ) const; - QString check_target_env_output( const QString& command, - const QString& stdin = QString(), - int timeout = 0 ) const; + QString check_target_env_output( const QString& command, const QString& stdin = QString(), int timeout = 0 ) const; - QString check_target_env_output( const QStringList& args, - const QString& stdin = QString(), - int timeout = 0 ) const; + QString check_target_env_output( const QStringList& args, const QString& stdin = QString(), int timeout = 0 ) const; QString obscure( const QString& string ) const; @@ -75,4 +63,4 @@ private: PythonQtObjectPtr m_exceptionCxt; }; -#endif // PYTHONQTUTILSWRAPPER_H +#endif // PYTHONQTUTILSWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 2d128d1af..5e313ff98 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -18,8 +18,8 @@ */ #include "PythonQtViewStep.h" -#include "utils/Logger.h" #include "utils/CalamaresUtilsGui.h" +#include "utils/Logger.h" #include "utils/PythonQtUtils.h" #include "utils/Retranslator.h" #include "viewpages/PythonQtJob.h" @@ -33,8 +33,7 @@ namespace Calamares { -PythonQtViewStep::PythonQtViewStep( PythonQtObjectPtr cxt, - QObject* parent ) +PythonQtViewStep::PythonQtViewStep( PythonQtObjectPtr cxt, QObject* parent ) : ViewStep( parent ) , m_widget( new QWidget() ) , m_cxt( cxt ) @@ -48,32 +47,26 @@ PythonQtViewStep::PythonQtViewStep( PythonQtObjectPtr cxt, // Instantiate an object of the class marked with @calamares_module and // store it as _calamares_module. - pq->evalScript( m_cxt, QString( "_calamares_module = %1()" ) - .arg( className ) ); + pq->evalScript( m_cxt, QString( "_calamares_module = %1()" ).arg( className ) ); m_obj = pq->lookupObject( m_cxt, "_calamares_module" ); - Q_ASSERT( !m_obj.isNull() ); // no entry point, no party + Q_ASSERT( !m_obj.isNull() ); // no entry point, no party // Prepare the base widget for the module's pages m_widget->setLayout( new QVBoxLayout ); CalamaresUtils::unmarginLayout( m_widget->layout() ); m_cxt.addObject( "_calamares_module_basewidget", m_widget ); - CALAMARES_RETRANSLATE_WIDGET( m_widget, - CalamaresUtils::lookupAndCall( m_obj, - { "retranslate" }, - { CalamaresUtils::translatorLocaleName() } ); - ) + CALAMARES_RETRANSLATE_WIDGET( + m_widget, + CalamaresUtils::lookupAndCall( m_obj, { "retranslate" }, { CalamaresUtils::translatorLocaleName() } ); ) } QString PythonQtViewStep::prettyName() const { - return CalamaresUtils::lookupAndCall( m_obj, - { "prettyName", - "prettyname", - "pretty_name" } ).toString(); + return CalamaresUtils::lookupAndCall( m_obj, { "prettyName", "prettyname", "pretty_name" } ).toString(); } @@ -82,12 +75,14 @@ PythonQtViewStep::widget() { if ( m_widget->layout()->count() > 1 ) cWarning() << "PythonQtViewStep wrapper widget has more than 1 child. " - "This should never happen."; + "This should never happen."; - bool nothingChanged = m_cxt.evalScript( - "_calamares_module.widget() in _calamares_module_basewidget.children()" ).toBool(); + bool nothingChanged + = m_cxt.evalScript( "_calamares_module.widget() in _calamares_module_basewidget.children()" ).toBool(); if ( nothingChanged ) + { return m_widget; + } // Else, we either don't have a child widget, or we have a child widget that // was previously set and doesn't apply any more since the Python module @@ -97,10 +92,11 @@ PythonQtViewStep::widget() // We only remove from the layout and not delete because Python is in charge // of memory management for these widgets. while ( m_widget->layout()->itemAt( 0 ) ) + { m_widget->layout()->takeAt( 0 ); + } - m_cxt.evalScript( - "_calamares_module_basewidget.layout().addWidget(_calamares_module.widget())" ); + m_cxt.evalScript( "_calamares_module_basewidget.layout().addWidget(_calamares_module.widget())" ); return m_widget; } @@ -123,58 +119,40 @@ PythonQtViewStep::back() bool PythonQtViewStep::isNextEnabled() const { - return CalamaresUtils::lookupAndCall( m_obj, - { "isNextEnabled", - "isnextenabled", - "is_next_enabled" } ).toBool(); + return CalamaresUtils::lookupAndCall( m_obj, { "isNextEnabled", "isnextenabled", "is_next_enabled" } ).toBool(); } bool PythonQtViewStep::isBackEnabled() const { - return CalamaresUtils::lookupAndCall( m_obj, - { "isBackEnabled", - "isbackenabled", - "is_back_enabled" } ).toBool(); + return CalamaresUtils::lookupAndCall( m_obj, { "isBackEnabled", "isbackenabled", "is_back_enabled" } ).toBool(); } bool PythonQtViewStep::isAtBeginning() const { - return CalamaresUtils::lookupAndCall( m_obj, - { "isAtBeginning", - "isatbeginning", - "is_at_beginning" } ).toBool(); + return CalamaresUtils::lookupAndCall( m_obj, { "isAtBeginning", "isatbeginning", "is_at_beginning" } ).toBool(); } bool PythonQtViewStep::isAtEnd() const { - return CalamaresUtils::lookupAndCall( m_obj, - { "isAtEnd", - "isatend", - "is_at_end" } ).toBool(); + return CalamaresUtils::lookupAndCall( m_obj, { "isAtEnd", "isatend", "is_at_end" } ).toBool(); } void -PythonQtViewStep::onActivate() +PythonQtViewStep::onActivate() { - CalamaresUtils::lookupAndCall( m_obj, - { "onActivate", - "onactivate", - "on_activate" }); + CalamaresUtils::lookupAndCall( m_obj, { "onActivate", "onactivate", "on_activate" } ); } void PythonQtViewStep::onLeave() { - CalamaresUtils::lookupAndCall( m_obj, - { "onLeave", - "onleave", - "on_leave" }); + CalamaresUtils::lookupAndCall( m_obj, { "onLeave", "onleave", "on_leave" } ); } @@ -185,21 +163,29 @@ PythonQtViewStep::jobs() const PythonQtObjectPtr jobsCallable = PythonQt::self()->lookupCallable( m_obj, "jobs" ); if ( jobsCallable.isNull() ) + { return jobs; + } PythonQtObjectPtr response = PythonQt::self()->callAndReturnPyObject( jobsCallable ); if ( response.isNull() ) + { return jobs; + } PythonQtObjectPtr listPopCallable = PythonQt::self()->lookupCallable( response, "pop" ); if ( listPopCallable.isNull() ) + { return jobs; + } forever { PythonQtObjectPtr aJob = PythonQt::self()->callAndReturnPyObject( listPopCallable, { 0 } ); if ( aJob.isNull() ) + { break; + } jobs.append( Calamares::job_ptr( new PythonQtJob( m_cxt, aJob ) ) ); } @@ -219,9 +205,8 @@ QWidget* PythonQtViewStep::createScriptingConsole() { PythonQtScriptingConsole* console = new PythonQtScriptingConsole( nullptr, m_cxt ); - console->setProperty( "classname", - m_cxt.getVariable( "_calamares_module_typename" ).toString() ); + console->setProperty( "classname", m_cxt.getVariable( "_calamares_module_typename" ).toString() ); return console; } -} +} // namespace Calamares diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.h b/src/libcalamaresui/viewpages/PythonQtViewStep.h index b6b7c193b..5358bc824 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.h +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -30,8 +30,7 @@ class PythonQtViewStep : public Calamares::ViewStep { Q_OBJECT public: - PythonQtViewStep( PythonQtObjectPtr cxt, - QObject* parent = nullptr ); + PythonQtViewStep( PythonQtObjectPtr cxt, QObject* parent = nullptr ); QString prettyName() const override; @@ -62,6 +61,6 @@ private: PythonQtObjectPtr m_obj; }; -} +} // namespace Calamares -#endif // PYTHONQTVIEWSTEP_H +#endif // PYTHONQTVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index cdfc7bbc9..7fe7ff88d 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -24,11 +24,11 @@ namespace Calamares ViewStep::ViewStep( QObject* parent ) : QObject( parent ) -{} +{ +} -ViewStep::~ViewStep() -{} +ViewStep::~ViewStep() {} QString @@ -45,20 +45,24 @@ ViewStep::createSummaryWidget() const void ViewStep::onActivate() -{} +{ +} void ViewStep::onLeave() -{} +{ +} void ViewStep::next() -{} +{ +} void ViewStep::back() -{} +{ +} void @@ -75,9 +79,10 @@ ViewStep::setConfigurationMap( const QVariantMap& configurationMap ) } -RequirementsList ViewStep::checkRequirements() +RequirementsList +ViewStep::checkRequirements() { return RequirementsList(); } -} +} // namespace Calamares diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h index e3d5a021e..8c5020f83 100644 --- a/src/libcalamaresui/viewpages/ViewStep.h +++ b/src/libcalamaresui/viewpages/ViewStep.h @@ -130,10 +130,7 @@ public: virtual JobList jobs() const = 0; void setModuleInstanceKey( const QString& instanceKey ); - QString moduleInstanceKey() const - { - return m_instanceKey; - } + QString moduleInstanceKey() const { return m_instanceKey; } virtual void setConfigurationMap( const QVariantMap& configurationMap ); @@ -161,6 +158,6 @@ protected: }; using ViewStepList = QList< ViewStep* >; -} +} // namespace Calamares -#endif // VIEWSTEP_H +#endif // VIEWSTEP_H diff --git a/src/libcalamaresui/widgets/ClickableLabel.cpp b/src/libcalamaresui/widgets/ClickableLabel.cpp index b6786cab8..62985acf8 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -23,16 +23,17 @@ ClickableLabel::ClickableLabel( QWidget* parent ) : QLabel( parent ) -{} +{ +} ClickableLabel::ClickableLabel( const QString& text, QWidget* parent ) : QLabel( text, parent ) -{} +{ +} -ClickableLabel::~ClickableLabel() -{} +ClickableLabel::~ClickableLabel() {} void @@ -48,5 +49,7 @@ ClickableLabel::mouseReleaseEvent( QMouseEvent* event ) { QLabel::mouseReleaseEvent( event ); if ( m_time.elapsed() < qApp->doubleClickInterval() ) + { emit clicked(); + } } diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h index ab993c721..fd66082c5 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.h +++ b/src/libcalamaresui/widgets/ClickableLabel.h @@ -42,4 +42,4 @@ private: QTime m_time; }; -#endif // CLICKABLELABEL_H +#endif // CLICKABLELABEL_H diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp index d1094bb7c..c495ca5bb 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -22,21 +22,18 @@ FixedAspectRatioLabel::FixedAspectRatioLabel( QWidget* parent ) : QLabel( parent ) -{} +{ +} -FixedAspectRatioLabel::~FixedAspectRatioLabel() -{} +FixedAspectRatioLabel::~FixedAspectRatioLabel() {} void FixedAspectRatioLabel::setPixmap( const QPixmap& pixmap ) { m_pixmap = pixmap; - QLabel::setPixmap( pixmap.scaled( - contentsRect().size(), - Qt::KeepAspectRatio, - Qt::SmoothTransformation ) ); + QLabel::setPixmap( pixmap.scaled( contentsRect().size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) ); } @@ -44,9 +41,5 @@ void FixedAspectRatioLabel::resizeEvent( QResizeEvent* event ) { Q_UNUSED( event ) - QLabel::setPixmap( m_pixmap.scaled( - contentsRect().size(), - Qt::KeepAspectRatio, - Qt::SmoothTransformation ) ); + QLabel::setPixmap( m_pixmap.scaled( contentsRect().size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) ); } - diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h index 8f881753c..9466fcd15 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -31,11 +31,11 @@ public: virtual ~FixedAspectRatioLabel() override; public slots: - void setPixmap( const QPixmap &pixmap ); + void setPixmap( const QPixmap& pixmap ); void resizeEvent( QResizeEvent* event ) override; private: QPixmap m_pixmap; }; -#endif // FIXEDASPECTRATIOLABEL_H +#endif // FIXEDASPECTRATIOLABEL_H diff --git a/src/libcalamaresui/widgets/WaitingWidget.cpp b/src/libcalamaresui/widgets/WaitingWidget.cpp index 286c611ab..1a658b35b 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.cpp +++ b/src/libcalamaresui/widgets/WaitingWidget.cpp @@ -20,7 +20,8 @@ #include "WaitingWidget.h" #include "utils/CalamaresUtilsGui.h" -#include "waitingspinnerwidget.h" + +#include "3rdparty/waitingspinnerwidget.h" #include #include diff --git a/src/libcalamaresui/widgets/WaitingWidget.h b/src/libcalamaresui/widgets/WaitingWidget.h index 5c19cce26..0d8b6fd5b 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.h +++ b/src/libcalamaresui/widgets/WaitingWidget.h @@ -35,4 +35,4 @@ private: QLabel* m_waitingLabel; }; -#endif // WAITINGWIDGET_H +#endif // WAITINGWIDGET_H diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 428e54cd5..c65261b23 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -18,22 +18,22 @@ #include "ContextualProcessJob.h" -#include #include +#include #include #include "CalamaresVersion.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" #include "utils/CommandList.h" #include "utils/Logger.h" #include "utils/Variant.h" -struct ValueCheck : public QPair +struct ValueCheck : public QPair< QString, CalamaresUtils::CommandList* > { ValueCheck( const QString& value, CalamaresUtils::CommandList* commands ) - : QPair(value, commands) + : QPair< QString, CalamaresUtils::CommandList* >( value, commands ) { } @@ -47,7 +47,7 @@ struct ValueCheck : public QPair QString value() const { return first; } CalamaresUtils::CommandList* commands() const { return second; } -} ; +}; struct ContextualProcessBinding { @@ -67,7 +67,9 @@ struct ContextualProcessBinding { checks.append( ValueCheck( value, commands ) ); if ( value == QString( "*" ) ) + { wildcard = commands; + } } Calamares::JobResult run( const QString& value ) const @@ -75,19 +77,23 @@ struct ContextualProcessBinding for ( const auto& c : checks ) { if ( value == c.value() ) + { return c.commands()->run(); + } } if ( wildcard ) + { return wildcard->run(); + } return Calamares::JobResult::ok(); } QString variable; - QList checks; - CalamaresUtils::CommandList* wildcard{ nullptr }; -} ; + QList< ValueCheck > checks; + CalamaresUtils::CommandList* wildcard { nullptr }; +}; ContextualProcessBinding::~ContextualProcessBinding() @@ -129,10 +135,14 @@ ContextualProcessJob::exec() { Calamares::JobResult r = binding->run( gs->value( binding->variable ).toString() ); if ( !r ) + { return r; + } } else + { cWarning() << "ContextualProcess checks for unknown variable" << binding->variable; + } } return Calamares::JobResult::ok(); } @@ -142,15 +152,19 @@ void ContextualProcessJob::setConfigurationMap( const QVariantMap& configurationMap ) { bool dontChroot = CalamaresUtils::getBool( configurationMap, "dontChroot", false ); - int timeout = CalamaresUtils::getInteger( configurationMap, "timeout", 10 ); + qint64 timeout = CalamaresUtils::getInteger( configurationMap, "timeout", 10 ); if ( timeout < 1 ) + { timeout = 10; + } for ( QVariantMap::const_iterator iter = configurationMap.cbegin(); iter != configurationMap.cend(); ++iter ) { QString variableName = iter.key(); if ( variableName.isEmpty() || ( variableName == "dontChroot" ) || ( variableName == "timeout" ) ) + { continue; + } if ( iter.value().type() != QVariant::Map ) { @@ -166,11 +180,13 @@ ContextualProcessJob::setConfigurationMap( const QVariantMap& configurationMap ) QString valueString = valueiter.key(); if ( variableName.isEmpty() ) { - cWarning() << moduleInstanceKey() << "variable" << variableName << "unrecognized value" << valueiter.key(); + cWarning() << moduleInstanceKey() << "variable" << variableName << "unrecognized value" + << valueiter.key(); continue; } - CalamaresUtils::CommandList* commands = new CalamaresUtils::CommandList( valueiter.value(), !dontChroot, timeout ); + CalamaresUtils::CommandList* commands + = new CalamaresUtils::CommandList( valueiter.value(), !dontChroot, std::chrono::seconds( timeout ) ); binding->append( valueString, commands ); } @@ -184,12 +200,14 @@ ContextualProcessJob::count() } int -ContextualProcessJob::count(const QString& variableName) +ContextualProcessJob::count( const QString& variableName ) { for ( const ContextualProcessBinding* binding : m_commands ) if ( binding->variable == variableName ) + { return binding->checks.count(); + } return -1; } -CALAMARES_PLUGIN_FACTORY_DEFINITION( ContextualProcessJobFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( ContextualProcessJobFactory, registerPlugin< ContextualProcessJob >(); ) diff --git a/src/modules/contextualprocess/ContextualProcessJob.h b/src/modules/contextualprocess/ContextualProcessJob.h index fbc102058..2efbc5082 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.h +++ b/src/modules/contextualprocess/ContextualProcessJob.h @@ -49,9 +49,9 @@ public: int count( const QString& variableName ); private: - QList m_commands; + QList< ContextualProcessBinding* > m_commands; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( ContextualProcessJobFactory ) -#endif // CONTEXTUALPROCESSJOB_H +#endif // CONTEXTUALPROCESSJOB_H diff --git a/src/modules/contextualprocess/Tests.cpp b/src/modules/contextualprocess/Tests.cpp index 51319c220..f62726775 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -31,13 +31,9 @@ QTEST_GUILESS_MAIN( ContextualProcessTests ) using CommandList = CalamaresUtils::CommandList; -ContextualProcessTests::ContextualProcessTests() -{ -} +ContextualProcessTests::ContextualProcessTests() {} -ContextualProcessTests::~ContextualProcessTests() -{ -} +ContextualProcessTests::~ContextualProcessTests() {} void ContextualProcessTests::initTestCase() @@ -63,7 +59,6 @@ ContextualProcessTests::testProcessListSampleConfig() ContextualProcessJob job; job.setConfigurationMap( CalamaresUtils::yamlMapToVariant( doc ).toMap() ); - QCOMPARE(job.count(), 1); // Only "firmwareType" - QCOMPARE(job.count("firmwareType"), 4); + QCOMPARE( job.count(), 1 ); // Only "firmwareType" + QCOMPARE( job.count( "firmwareType" ), 4 ); } - diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf index 8f8e9c704..f6b5a397f 100644 --- a/src/modules/displaymanager/displaymanager.conf +++ b/src/modules/displaymanager/displaymanager.conf @@ -1,9 +1,17 @@ # Configure one or more display managers (e.g. SDDM) # with a "best effort" approach. +# +# This module also sets up autologin, if the feature is enabled in +# globalstorage (where it would come from the users page). --- -#The DM module attempts to set up all the DMs found in this list, in that precise order. -#It also sets up autologin, if the feature is enabled in globalstorage. -#The displaymanagers list can also be set in globalstorage, and in that case it overrides anything set up here. +# The DM module attempts to set up all the DMs found in this list, in the +# precise order listed. The displaymanagers list can also be set in +# globalstorage, and in that case it overrides the setting here. +# +# If *sysconfigSetup* is set to *true* (see below, only relevant for +# openSUSE derivatives) then this list is ignored and only sysconfig +# is attempted. You can also list "sysconfig" in this list instead. +# displaymanagers: - slim - sddm @@ -13,7 +21,25 @@ displaymanagers: - lxdm - kdm -#Enable the following settings to force a desktop environment in your displaymanager configuration file: +# Enable the following settings to force a desktop environment +# in your displaymanager configuration file. This will attempt +# to configure the given DE (without checking if it is installed). +# The DM configuration for each potential DM may **or may not** +# support configuring a default DE, so the keys are mandatory +# but their interpretation is up to the DM configuration. +# +# Subkeys of *defaultDesktopEnvironment* are (all mandatory): +# - *executable* a full path to an executable +# - *desktopFile* a .desktop filename +# +# If this is **not** set, then Calamares will look for installed +# DE's and pick the first one it finds that is actually installed. +# +# If this **is** set, and the *executable* key doesn't point to +# an installed file, then the .desktop file's TryExec key is +# used instead. +# + #defaultDesktopEnvironment: # executable: "startkde" # desktopFile: "plasma" @@ -23,6 +49,10 @@ displaymanagers: #packages, and best left to them. Therefore, it is disabled by default. basicSetup: false -#If true, setup autologin for openSUSE. This only makes sense on openSUSE -#derivatives or other systems where /etc/sysconfig/displaymanager exists. +# If true, setup autologin for openSUSE. This only makes sense on openSUSE +# derivatives or other systems where /etc/sysconfig/displaymanager exists. +# +# The preferred way to pick sysconfig is to just list it in the +# *displaymanagers* list (as the only one). +# sysconfigSetup: false diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 639edbea7..c00ae1dac 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -3,13 +3,13 @@ # # === This file is part of Calamares - === # -# Copyright 2019 Dominic Hayes # 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, Adriaan de Groot +# Copyright 2017, 2019, Adriaan de Groot +# Copyright 2019, Dominic Hayes # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -51,18 +51,130 @@ class DesktopEnvironment: self.executable = exec self.desktop_file = desktop - def find_desktop_environment(self, root_mount_point): + def _search_executable(self, root_mount_point, pathname): + """ + Search for @p pathname within @p root_mount_point . + If the pathname is absolute, just check there inside + the target, otherwise earch in a sort-of-sensible $PATH. + + Returns the full (including @p root_mount_point) path + to that executable, or None. + """ + if pathname.startswith("/"): + path = [""] + else: + path = ["/bin/", "/usr/bin/", "/sbin/", "/usr/local/bin/"] + + for p in path: + absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, pathname) + if os.path.exists(absolute_path): + return absolute_path + return None + + def _search_tryexec(self, root_mount_point, absolute_desktop_file): + """ + Check @p absolute_desktop_file for a TryExec line and, if that is + found, search for the command (executable pathname) within + @p root_mount_point. The .desktop file must live within the + target root. + + Returns the full (including @p root_mount_point) for the executable + from TryExec, or None. + """ + assert absolute_desktop_file.startswith(root_mount_point) + with open(absolute_desktop_file, "r") as f: + for tryexec_line in [x for x in f.readlines() if x.startswith("TryExec")]: + try: + key, value = tryexec_line.split("=") + if key.strip() == "TryExec": + return self._search_executable(root_mount_point, value.strip()) + except: + pass + return None + + def find_executable(self, root_mount_point): + """ + Returns the full path of the configured executable within @p root_mount_point, + or None if it isn't found. May search in a semi-sensible $PATH. + """ + return self._search_executable(root_mount_point, self.executable) + + def find_desktop_file(self, root_mount_point): + """ + Returns the full path of the .desktop file within @p root_mount_point, + or None if it isn't found. Searches both X11 and Wayland sessions. + """ + x11_sessions = "{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, self.desktop_file) + wayland_sessions = "{!s}/usr/share/wayland-sessions/{!s}.desktop".format(root_mount_point, self.desktop_file) + for candidate in (x11_sessions, wayland_sessions): + if os.path.exists(candidate): + return candidate + return None + + def is_installed(self, root_mount_point): """ Check if this environment is installed in the target system at @p root_mount_point. """ - return ( - os.path.exists("{!s}{!s}".format(root_mount_point, self.executable)) and - os.path.exists("{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, self.desktop_file)) - ) + desktop_file = self.find_desktop_file(root_mount_point) + if desktop_file is None: + return False + + return (self.find_executable(root_mount_point) is not None or + self._search_tryexec(root_mount_point, desktop_file) is not None) + + def update_from_desktop_file(self, root_mount_point): + """ + Find thie DE in the target system at @p root_mount_point. + This can update the *executable* configuration value if + the configured executable isn't found but the TryExec line + from the .desktop file is. + + The .desktop file is mandatory for a DE. + + Returns True if the DE is installed. + """ + desktop_file = self.find_desktop_file(root_mount_point) + if desktop_file is None: + return False + + executable_file = self.find_executable(root_mount_point) + if executable_file is not None: + # .desktop found and executable as well. + return True + + executable_file = self._search_tryexec(root_mount_point, desktop_file) + if executable_file is not None: + # Found from the .desktop file, so update own executable config + if root_mount_point and executable_file.startswith(root_mount_point): + executable_file = executable_file[len(root_mount_point):] + if not executable_file: + # Somehow chopped down to nothing + return False + + if executable_file[0] != "/": + executable_file = "/" + executable_file + self.executable = executable_file + return True + # This is to double-check + return self.is_installed(root_mount_point) +# This is the list of desktop environments that Calamares looks +# for; if no default environment is **explicitly** configured +# in the `displaymanager.conf` then the first one from this list +# that is found, is used. +# +# Each DE has a sample executable to look for, and a .desktop filename. +# If the executable exists, the DE is assumed to be installed +# and to use the given .desktop filename. +# +# If the .desktop file exists and contains a TryExec line and that +# TryExec executable exists (searched in /bin, /usr/bin, /sbin and +# /usr/local/bin) then the DE is assumed to be installed +# and to use that .desktop filename. desktop_environments = [ + DesktopEnvironment('/usr/bin/startplasma-x11', 'plasma'), # KDE Plasma 5.17+ DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5 DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4 DesktopEnvironment( @@ -94,8 +206,10 @@ def find_desktop_environment(root_mount_point): :param root_mount_point: :return: """ + libcalamares.utils.debug("Using rootMountPoint {!r}".format(root_mount_point)) for desktop_environment in desktop_environments: - if desktop_environment.find_desktop_environment(root_mount_point): + if desktop_environment.is_installed(root_mount_point): + libcalamares.utils.debug(".. selected DE {!s}".format(desktop_environment.desktop_file)) return desktop_environment return None @@ -117,14 +231,11 @@ class DisplayManager(metaclass=abc.ABCMeta): in the target system. """ if self.executable is None: - return True + return False bin_path = "{!s}/usr/bin/{!s}".format(self.root_mount_point, self.executable) sbin_path = "{!s}/usr/sbin/{!s}".format(self.root_mount_point, self.executable) - return ( - os.path.exists(bin_path) - or os.path.exists(sbin_path) - ) + return os.path.exists(bin_path) or os.path.exists(sbin_path) # The four abstract methods below are called in the order listed here. # They must all be implemented by subclasses, but not all of them @@ -251,10 +362,33 @@ class DMmdm(DisplayManager): class DMgdm(DisplayManager): name = "gdm" executable = "gdm" + config = None # Set by have_dm() + + def have_dm(self): + """ + GDM exists with different executable names, so search + for one of them and use it. + """ + for executable, config in ( + ( "gdm", "etc/gdm/custom.conf" ), + ( "gdm3", "etc/gdm3/daemon.conf" ) + ): + bin_path = "{!s}/usr/bin/{!s}".format(self.root_mount_point, executable) + sbin_path = "{!s}/usr/sbin/{!s}".format(self.root_mount_point, executable) + if os.path.exists(bin_path) or os.path.exists(sbin_path): + # Keep the found-executable name around for later + self.executable = executable + self.config = config + return True + + return False def set_autologin(self, username, do_autologin, default_desktop_environment): + if self.config is None: + raise ValueError( "No config file for GDM has been set." ) + # Systems with GDM as Desktop Manager - gdm_conf_path = os.path.join(self.root_mount_point, "etc/gdm/custom.conf") + gdm_conf_path = os.path.join(self.root_mount_point, self.config) if os.path.exists(gdm_conf_path): with open(gdm_conf_path, 'r') as gdm_conf: @@ -716,6 +850,13 @@ class DMsysconfig(DisplayManager): def greeter_setup(self): pass + # For openSUSE-derivatives, there is only sysconfig to configure, + # and no special DM configuration for it. Instead, check that + # sysconfig is available in the target. + def have_dm(self): + config = "{!s}/etc/sysconfig/displaymanager".format(self.root_mount_point) + return os.path.exists(config) + # Collect all the subclasses of DisplayManager defined above, # and index them based on the name property of each class. @@ -745,6 +886,10 @@ def run(): if libcalamares.globalstorage.contains("displayManagers"): displaymanagers = libcalamares.globalstorage.value("displayManagers") + if ("sysconfigSetup" in libcalamares.job.configuration + and libcalamares.job.configuration["sysconfigSetup"]): + displaymanagers = ["sysconfig"] + if not displaymanagers: return ( _("No display managers selected for the displaymanager module."), @@ -756,9 +901,6 @@ def run(): root_mount_point = libcalamares.globalstorage.value("rootMountPoint") dm_impl = [] dm_names = displaymanagers[:] - if ("sysconfigSetup" in libcalamares.job.configuration - and libcalamares.job.configuration["sysconfigSetup"]): - dm_names.append("sysconfig") for dm in dm_names: # Find the implementation class dm_instance = None @@ -790,6 +932,11 @@ def run(): default_desktop_environment = DesktopEnvironment( entry["executable"], entry["desktopFile"] ) + # Adjust if executable is bad, but desktopFile isn't. + if not default_desktop_environment.update_from_desktop_file(root_mount_point): + libcalamares.utils.warning( + "The configured default desktop environment, {!s}, " + "can not be found.".format(default_desktop_environment.desktop_file)) else: default_desktop_environment = find_desktop_environment( root_mount_point diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp index 9b15ef87c..97b2c9d55 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp @@ -30,7 +30,7 @@ #include "utils/Logger.h" // static -const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" ); +const QLatin1String DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" ); // static const char *DracutLuksCfgJob::CONFIG_FILE_HEADER = @@ -50,7 +50,7 @@ const char *DracutLuksCfgJob::CONFIG_FILE_CRYPTTAB_LINE = "install_items+=\" /etc/crypttab \"\n"; // static -const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" ); +const QLatin1String DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" ); // static QString diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h index 15ff24069..5811c34a1 100644 --- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h @@ -42,11 +42,11 @@ public: Calamares::JobResult exec() override; private: - static const QLatin1Literal CONFIG_FILE; + static const QLatin1String CONFIG_FILE; static const char *CONFIG_FILE_HEADER; static const char *CONFIG_FILE_CRYPTTAB_KEYFILE_LINE; static const char *CONFIG_FILE_CRYPTTAB_LINE; - static const QLatin1Literal CONFIG_FILE_SWAPLINE; + static const QLatin1String CONFIG_FILE_SWAPLINE; static QString rootMountPoint(); static QVariantList partitions(); diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index b404eaf63..5a2ca1803 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -20,14 +20,15 @@ #include "DummyCppJob.h" -#include #include +#include #include #include "CalamaresVersion.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" DummyCppJob::DummyCppJob( QObject* parent ) @@ -36,9 +37,7 @@ DummyCppJob::DummyCppJob( QObject* parent ) } -DummyCppJob::~DummyCppJob() -{ -} +DummyCppJob::~DummyCppJob() {} QString @@ -56,19 +55,20 @@ static QString variantHashToString( const QVariantHash& variantHash ); static QString variantToString( const QVariant& variant ) { - switch ( variant.type() ) + if ( variant.type() == QVariant::Map ) { - case QVariant::Map: return variantMapToString( variant.toMap() ); - - case QVariant::Hash: + } + else if ( variant.type() == QVariant::Hash ) + { return variantHashToString( variant.toHash() ); - - case QVariant::List: - case QVariant::StringList: + } + else if ( ( variant.type() == QVariant::List ) || ( variant.type() == QVariant::StringList ) ) + { return variantListToString( variant.toList() ); - - default: + } + else + { return variant.toString(); } } @@ -79,8 +79,10 @@ variantListToString( const QVariantList& variantList ) { QStringList result; for ( const QVariant& variant : variantList ) + { result.append( variantToString( variant ) ); - return '{' + result.join(',') + '}'; + } + return '{' + result.join( ',' ) + '}'; } @@ -89,8 +91,10 @@ variantMapToString( const QVariantMap& variantMap ) { QStringList result; for ( auto it = variantMap.constBegin(); it != variantMap.constEnd(); ++it ) + { result.append( it.key() + '=' + variantToString( it.value() ) ); - return '[' + result.join(',') + ']'; + } + return '[' + result.join( ',' ) + ']'; } @@ -99,8 +103,10 @@ variantHashToString( const QVariantHash& variantHash ) { QStringList result; for ( auto it = variantHash.constBegin(); it != variantHash.constEnd(); ++it ) + { result.append( it.key() + '=' + variantToString( it.value() ) ); - return '<' + result.join(',') + '>'; + } + return '<' + result.join( ',' ) + '>'; } @@ -108,24 +114,29 @@ Calamares::JobResult DummyCppJob::exec() { // Ported from dummypython - QProcess::execute( "/bin/sh", QStringList() << "-c" << "touch ~/calamares-dummycpp" ); + CalamaresUtils::System::runCommand( CalamaresUtils::System::RunLocation::RunInHost, + QStringList() << "/bin/sh" + << "-c" + << "touch ~/calamares-dummycpp" ); QString accumulator = QDateTime::currentDateTimeUtc().toString( Qt::ISODate ) + '\n'; accumulator += QStringLiteral( "Calamares version: " ) + CALAMARES_VERSION_SHORT + '\n'; accumulator += QStringLiteral( "This job's name: " ) + prettyName() + '\n'; accumulator += QStringLiteral( "Configuration map: %1\n" ).arg( variantMapToString( m_configurationMap ) ); accumulator += QStringLiteral( " *** globalstorage test ***\n" ); - Calamares::GlobalStorage *globalStorage = Calamares::JobQueue::instance()->globalStorage(); - accumulator += QStringLiteral( "lala: " ) + (globalStorage->contains( "lala" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" )) + '\n'; - accumulator += QStringLiteral( "foo: " ) + (globalStorage->contains( "foo" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" )) + '\n'; + Calamares::GlobalStorage* globalStorage = Calamares::JobQueue::instance()->globalStorage(); + accumulator += QStringLiteral( "lala: " ) + + ( globalStorage->contains( "lala" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" ) ) + '\n'; + accumulator += QStringLiteral( "foo: " ) + + ( globalStorage->contains( "foo" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" ) ) + '\n'; accumulator += QStringLiteral( "count: " ) + QString::number( globalStorage->count() ) + '\n'; globalStorage->insert( "item2", "value2" ); globalStorage->insert( "item3", 3 ); accumulator += QStringLiteral( "keys: %1\n" ).arg( globalStorage->keys().join( ',' ) ); accumulator += QStringLiteral( "remove: %1\n" ).arg( QString::number( globalStorage->remove( "item2" ) ) ); - accumulator += QStringLiteral( "values: %1 %2 %3\n" ).arg( - globalStorage->value( "foo" ).toString(), - globalStorage->value( "item2" ).toString(), - globalStorage->value( "item3" ).toString() ); + accumulator += QStringLiteral( "values: %1 %2 %3\n" ) + .arg( globalStorage->value( "foo" ).toString(), + globalStorage->value( "item2" ).toString(), + globalStorage->value( "item3" ).toString() ); emit progress( 0.1 ); cDebug() << "[DUMMYCPP]: " << accumulator; @@ -145,4 +156,4 @@ DummyCppJob::setConfigurationMap( const QVariantMap& configurationMap ) m_configurationMap = configurationMap; } -CALAMARES_PLUGIN_FACTORY_DEFINITION( DummyCppJobFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( DummyCppJobFactory, registerPlugin< DummyCppJob >(); ) diff --git a/src/modules/dummycpp/DummyCppJob.h b/src/modules/dummycpp/DummyCppJob.h index 98c4d19d6..4a79d0378 100644 --- a/src/modules/dummycpp/DummyCppJob.h +++ b/src/modules/dummycpp/DummyCppJob.h @@ -49,4 +49,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( DummyCppJobFactory ) -#endif // DUMMYCPPJOB_H +#endif // DUMMYCPPJOB_H diff --git a/src/modules/dummypythonqt/lang/dummypythonqt.pot b/src/modules/dummypythonqt/lang/dummypythonqt.pot index bb87a856f..88dbde612 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: 2018-06-18 07:46-0400\n" +"POT-Creation-Date: 2019-11-28 16:51+0100\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/et/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo index 23c604896..cdb2466fa 100644 Binary files a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po index 7ed917da0..4ab56cc0f 100644 --- a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Madis, 2018 +# Madis Otenurm, 2018 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-05 11:34-0400\n" +"POT-Creation-Date: 2019-07-06 01:16+0200\n" "PO-Revision-Date: 2016-12-16 12:18+0000\n" -"Last-Translator: Madis, 2018\n" +"Last-Translator: Madis Otenurm, 2018\n" "Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..258ea94f6 Binary files /dev/null and b/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..faf773770 --- /dev/null +++ b/src/modules/dummypythonqt/lang/ml/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,46 @@ +# 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: +# Balasankar C , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-15 21:54+0200\n" +"PO-Revision-Date: 2016-12-16 12:18+0000\n" +"Last-Translator: Balasankar C , 2019\n" +"Language-Team: Malayalam (https://www.transifex.com/calamares/teams/20061/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "എന്നെ ക്ലിക്ക് ചെയ്യൂ!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "ഒരു പുതിയ QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "" diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po index 53a05e9ec..bee7745dc 100644 --- a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-22 07:09-0500\n" +"POT-Creation-Date: 2019-09-15 21:54+0200\n" "PO-Revision-Date: 2016-12-16 12:18+0000\n" "Last-Translator: Guilherme , 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" diff --git a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo index 225f823ef..5c8099cd4 100644 Binary files a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po index 118c61c6a..6660b1500 100644 --- a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Slobodan Simić , 2017 +# Slobodan Simić , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-05 11:34-0400\n" +"POT-Creation-Date: 2019-06-18 15:54+0200\n" "PO-Revision-Date: 2016-12-16 12:18+0000\n" -"Last-Translator: Slobodan Simić , 2017\n" +"Last-Translator: Slobodan Simić , 2019\n" "Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,7 +31,7 @@ msgstr "Нова КуОзнака" #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Провизорни ПитонКуТ корак прегледа" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo index 43817982d..f13ff2d5f 100644 Binary files a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po index d80cdaa82..bc2056e1e 100644 --- a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po @@ -4,16 +4,16 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Jeff Huang , 2017 +# 黃柏諺 , 2017 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-05 11:34-0400\n" +"POT-Creation-Date: 2019-07-06 01:16+0200\n" "PO-Revision-Date: 2016-12-16 12:18+0000\n" -"Last-Translator: Jeff Huang , 2017\n" +"Last-Translator: 黃柏諺 , 2017\n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/src/modules/fsresizer/CMakeLists.txt b/src/modules/fsresizer/CMakeLists.txt index c6951259f..2448e516d 100644 --- a/src/modules/fsresizer/CMakeLists.txt +++ b/src/modules/fsresizer/CMakeLists.txt @@ -1,15 +1,11 @@ find_package( KPMcore 3.3 ) -set_package_properties( - KPMcore PROPERTIES - PURPOSE "For fsresizer module" -) +find_package( KF5Config CONFIG ) +find_package( KF5I18n CONFIG ) +find_package( KF5WidgetsAddons CONFIG ) set( _partition_defs "" ) -if ( KPMcore_FOUND ) - find_package( Qt5 REQUIRED DBus ) # Needed for KPMCore - find_package( KF5 REQUIRED I18n WidgetsAddons ) # Needed for KPMCore - +if ( KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND ) include_directories( ${KPMCORE_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/src/modules/partition ) if( KPMcore_VERSION VERSION_GREATER_EQUAL "4.0" ) @@ -50,5 +46,9 @@ if ( KPMcore_FOUND ) target_compile_definitions( fsresizertest PRIVATE ${_partition_defs} ) endif() else() - calamares_skip_module( "fsresizer (missing suitable KPMcore)" ) + if ( NOT KPMcore_FOUND ) + calamares_skip_module( "fsresizer (missing suitable KPMcore)" ) + else() + calamares_skip_module( "fsresizer (missing dependencies for KPMcore)" ) + endif() endif() diff --git a/src/modules/fstab/fstab.conf b/src/modules/fstab/fstab.conf index 11adff2ed..b2f3de361 100644 --- a/src/modules/fstab/fstab.conf +++ b/src/modules/fstab/fstab.conf @@ -12,6 +12,11 @@ mountOptions: default: defaults,noatime btrfs: defaults,noatime,space_cache,autodefrag +# Mount options to use for the EFI System Partition. If not defined, the +# *mountOptions* for *vfat* are used, or if that is not set either, +# *default* from *mountOptions*. +efiMountOptions: umask=0077 + # If a filesystem is on an SSD, add the following options. If a specific # filesystem is listed here, use those options, otherwise no additional # options are set (i.e. there is no *default* like in *mountOptions*). diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index abbd3d524..4a696f46b 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -162,7 +162,6 @@ class FstabGenerator(object): return None mapper_name = partition["luksMapperName"] - mount_point = partition["mountPoint"] luks_uuid = partition["luksUuid"] if not mapper_name or not luks_uuid: return None @@ -247,8 +246,8 @@ class FstabGenerator(object): if not mount_point: mount_point = "swap" - options = self.mount_options.get(filesystem, - self.mount_options["default"]) + options = self.get_mount_options(filesystem, mount_point) + if is_ssd: extra = self.ssd_extra_mount_options.get(filesystem) @@ -266,12 +265,12 @@ class FstabGenerator(object): self.root_is_ssd = is_ssd if filesystem == "btrfs" and "subvol" in partition: - options="subvol={},".format(partition["subvol"]) + options + options = "subvol={},".format(partition["subvol"]) + options if has_luks: - device="/dev/mapper/" + partition["luksMapperName"] + device = "/dev/mapper/" + partition["luksMapperName"] else: - device="UUID=" + partition["uuid"] + device = "UUID=" + partition["uuid"] return dict(device=device, mount_point=mount_point, @@ -296,6 +295,16 @@ class FstabGenerator(object): if partition["mountPoint"]: mkdir_p(self.root_mount_point + partition["mountPoint"]) + def get_mount_options(self, filesystem, mount_point): + efiMountPoint = libcalamares.globalstorage.value("efiSystemPartition") + job_config = libcalamares.job.configuration + + if (mount_point == efiMountPoint and "efiMountOptions" in job_config): + return job_config["efiMountOptions"] + + return self.mount_options.get(filesystem, + self.mount_options["default"]) + def run(): """ Configures fstab. @@ -308,13 +317,17 @@ def run(): root_mount_point = global_storage.value("rootMountPoint") if not partitions: - libcalamares.utils.warning("partitions is empty, {!s}".format(partitions)) + libcalamares.utils.warning("partitions is empty, {!s}" + .format(partitions)) return (_("Configuration Error"), - _("No partitions are defined for
{!s}
to use." ).format("fstab")) + _("No partitions are defined for
{!s}
to use.") + .format("fstab")) if not root_mount_point: - libcalamares.utils.warning("rootMountPoint is empty, {!s}".format(root_mount_point)) + libcalamares.utils.warning("rootMountPoint is empty, {!s}" + .format(root_mount_point)) return (_("Configuration Error"), - _("No root mount point is given for
{!s}
to use." ).format("fstab")) + _("No root mount point is given for
{!s}
to use.") + .format("fstab")) mount_options = conf["mountOptions"] ssd_extra_mount_options = conf.get("ssdExtraMountOptions", {}) diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf index b354ec35a..ba31d6070 100644 --- a/src/modules/grubcfg/grubcfg.conf +++ b/src/modules/grubcfg/grubcfg.conf @@ -1,9 +1,12 @@ +# Create, overwrite or update /etc/default/grub in the target system. +# # Write lines to /etc/default/grub (in the target system) based # on calculated values and the values set in the *defaults* key # in this configuration file. # # Calculated values are: -# - GRUB_DISTRIBUTOR, branding module, *bootloaderEntryName* +# - GRUB_DISTRIBUTOR, branding module, *bootloaderEntryName* (this +# string is sanitized, and see also setting *keepDistributor*) # - GRUB_ENABLE_CRYPTODISK, based on the presence of filesystems # that use LUKS # - GRUB_CMDLINE_LINUX_DEFAULT, adding LUKS setup and plymouth @@ -14,6 +17,12 @@ # already existed. If set to false, edits the existing file instead. overwrite: 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 +# some way (e.g. uses shell-command substitution). +keepDistributor: false + # Default entries to write to /etc/default/grub if it does not exist yet or if # we are overwriting it. # diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 83441a736..5d9428eeb 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -45,7 +45,13 @@ def modify_grub_default(partitions, root_mount_point, distributor): :param partitions: :param root_mount_point: - :param distributor: + :param distributor: name of the distributor to fill in for + GRUB_DISTRIBUTOR. Must be a string. If the job setting + *keepDistributor* is set, then this is only used if no + GRUB_DISTRIBUTOR is found at all (otherwise, when *keepDistributor* + is set, the GRUB_DISTRIBUTOR lines are left unchanged). + If *keepDistributor* is unset or false, then GRUB_DISTRIBUTOR + is always updated to set this value. :return: """ default_dir = os.path.join(root_mount_point, "etc/default") @@ -172,8 +178,13 @@ def modify_grub_default(partitions, root_mount_point, distributor): have_kernel_cmd = True elif (lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR")): - lines[i] = distributor_line - have_distributor_line = True + if libcalamares.job.configuration.get("keepDistributor", False): + lines[i] = distributor_line + have_distributor_line = True + else: + # We're not updating because of *keepDistributor*, but if + # this was a comment line, then it's still not been set. + have_distributor_line = have_distributor_line or not lines[i].startswith("#") else: lines = [] diff --git a/src/modules/grubcfg/tests/1.global b/src/modules/grubcfg/tests/1.global new file mode 100644 index 000000000..02ae840cb --- /dev/null +++ b/src/modules/grubcfg/tests/1.global @@ -0,0 +1,2 @@ +--- +bogus: true diff --git a/src/modules/grubcfg/tests/2.global b/src/modules/grubcfg/tests/2.global new file mode 100644 index 000000000..83e79db28 --- /dev/null +++ b/src/modules/grubcfg/tests/2.global @@ -0,0 +1,10 @@ +--- +bogus: true +firmwareType: bios +bootLoader: grub +rootMountPoint: /tmp/calamares + +branding: + bootloaderEntryName: generic +partitions: [] + diff --git a/src/modules/grubcfg/tests/2.job b/src/modules/grubcfg/tests/2.job new file mode 100644 index 000000000..d7b8db9d1 --- /dev/null +++ b/src/modules/grubcfg/tests/2.job @@ -0,0 +1,9 @@ +--- +overwrite: 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/hostinfo/CMakeLists.txt b/src/modules/hostinfo/CMakeLists.txt new file mode 100644 index 000000000..cc9b0bbac --- /dev/null +++ b/src/modules/hostinfo/CMakeLists.txt @@ -0,0 +1,48 @@ +# Configuration for hostinfo +# +# There isn't anything to configure for the hostinfo module. +# +# Hostinfo puts information about the host system into Calamares +# GlobalStorage. This information is generally unchanging. Put +# this module somewhere early in the exec: section to pick up +# the variables. Use a contextualprocess module later to +# react to the values, if needed. +# +# GlobalStorage keys: +# +# - *hostOS* the OS this module was built under; value is "Linux" or +# "FreeBSD" or blank. +# - *hostOSName* the NAME value from /etc/os-release if it exists, +# otherwise the same as *hostOS*. +# - *hostCPU* the make (brand) of the CPU, if it can be determined. +# Values are "Intel" or "AMD" or blank. + +calamares_add_plugin( hostinfo + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + HostInfoJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) + +if ( KF5CoreAddons_FOUND AND KF5CoreAddons_VERSION VERSION_GREATER_EQUAL 5.58 ) + target_compile_definitions( calamares_job_hostinfo PRIVATE WITH_KOSRelease ) +endif() + +if( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + Tests.cpp + HostInfoJob.cpp # Builds it a second time + TEST_NAME + hostinfotest + LINK_LIBRARIES + ${CALAMARES_LIBRARIES} + calamaresui + ${YAMLCPP_LIBRARY} + Qt5::Core + Qt5::Test + ) + calamares_automoc( hostinfotest ) +endif() diff --git a/src/modules/hostinfo/HostInfoJob.cpp b/src/modules/hostinfo/HostInfoJob.cpp new file mode 100644 index 000000000..999697a68 --- /dev/null +++ b/src/modules/hostinfo/HostInfoJob.cpp @@ -0,0 +1,173 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "HostInfoJob.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/Units.h" + +#include +#include + +#ifdef WITH_KOSRelease +#include +#endif + +#ifdef Q_OS_FREEBSD +#include + +#include +#endif + +HostInfoJob::HostInfoJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + +HostInfoJob::~HostInfoJob() {} + + +QString +HostInfoJob::prettyName() const +{ + return tr( "Collecting information about your machine." ); +} + +QString +hostOS() +{ +#if defined( Q_OS_FREEBSD ) + return QStringLiteral( "FreeBSD" ); +#elif defined( Q_OS_LINUX ) + return QStringLiteral( "Linux" ); +#else + return QStringLiteral( "" ); +#endif +} + +QString +hostOSName() +{ +#ifdef WITH_KOSRelease + KOSRelease r; + if ( !r.name().isEmpty() ) + { + return r.name(); + } +#endif + return hostOS(); +} + +static QString +hostCPUmatch( const QString& s ) +{ + const QString line = s.toLower(); + if ( line.contains( "intel" ) ) + { + return QStringLiteral( "Intel" ); + } + else if ( line.contains( "amd" ) ) + { + return QStringLiteral( "AMD" ); + } + return QString(); +} + +#if defined( Q_OS_FREEBSD ) +QString +hostCPU_FreeBSD() +{ + constexpr const size_t sysctl_buffer_size = 128; + char sysctl_buffer[ sysctl_buffer_size ]; + size_t s = sysctl_buffer_size; + + memset( sysctl_buffer, 0, sizeof( sysctl_buffer ) ); + int r = sysctlbyname( "hw.model", &sysctl_buffer, &s, NULL, 0 ); + if ( r ) + { + return QString(); + } + + sysctl_buffer[ sysctl_buffer_size - 1 ] = 0; + QString model( sysctl_buffer ); + return hostCPUmatch( model ); +} +#endif + +#if defined( Q_OS_LINUX ) +QString +hostCPU_Linux() +{ + QFile cpuinfo( "/proc/cpuinfo" ); + if ( cpuinfo.open( QIODevice::ReadOnly ) ) + { + QTextStream in( &cpuinfo ); + QString line; + while ( in.readLineInto( &line ) ) + { + if ( line.startsWith( "vendor_id" ) ) + { + return hostCPUmatch( line ); + } + } + } + return QString(); // Not open, or not found +} +#endif + +QString +hostCPU() +{ +#if defined( Q_OS_FREEBSD ) + return hostCPU_FreeBSD(); +#elif defined( Q_OS_LINUX ) + return hostCPU_Linux(); +#else + return QString(); +#endif +} + + +Calamares::JobResult +HostInfoJob::exec() +{ + cDebug() << "Collecting host information..."; + + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + gs->insert( "hostOS", hostOS() ); + gs->insert( "hostOSName", hostOSName() ); + gs->insert( "hostCPU", hostCPU() ); + + auto ram = CalamaresUtils::BytesToMiB( CalamaresUtils::System::instance()->getTotalMemoryB().first ); + if ( ram ) + { + gs->insert( "hostRAMMiB", ram ); + } + + return Calamares::JobResult::ok(); +} + +void +HostInfoJob::setConfigurationMap( const QVariantMap& ) +{ +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( HostInfoJobFactory, registerPlugin< HostInfoJob >(); ) diff --git a/src/modules/hostinfo/HostInfoJob.h b/src/modules/hostinfo/HostInfoJob.h new file mode 100644 index 000000000..62cb0a796 --- /dev/null +++ b/src/modules/hostinfo/HostInfoJob.h @@ -0,0 +1,66 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef HOSTINFOJOB_H +#define HOSTINFOJOB_H + +#include "CppJob.h" +#include "PluginDllMacro.h" +#include "utils/PluginFactory.h" + +#include +#include + +/** @brief the compile-time host OS + * + * Returns "FreeBSD" or "Linux" or empty. + */ +QString hostOS(); + +/** @brief the run-time host OS + * + * Returns os-release NAME information, or if that is blank or not available, + * the same as hostOS(). + */ +QString hostOSName(); + +/** @brief the run-time CPU architecture + * + * Returns "Intel" or "AMD" or blank, if Calamares can determine what + * CPU is currently in use (based on /proc/cpuinfo or hw.model). + */ +QString hostCPU(); + +class PLUGINDLLEXPORT HostInfoJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit HostInfoJob( QObject* parent = nullptr ); + virtual ~HostInfoJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( HostInfoJobFactory ) + +#endif // HOSTINFOJOB_H diff --git a/src/modules/hostinfo/Tests.cpp b/src/modules/hostinfo/Tests.cpp new file mode 100644 index 000000000..8241ef022 --- /dev/null +++ b/src/modules/hostinfo/Tests.cpp @@ -0,0 +1,70 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ +#include "HostInfoJob.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" + +#include "utils/Logger.h" +#include "utils/Yaml.h" + +#include + +class HostInfoTests : public QObject +{ + Q_OBJECT +public: + HostInfoTests() {} + virtual ~HostInfoTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testHostOS(); +}; + +void +HostInfoTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << "HostInfo test started."; +} + +void +HostInfoTests::testHostOS() +{ +#if defined( Q_OS_FREEBSD ) + QString expect( "FreeBSD" ); +#elif defined( Q_OS_LINUX ) + QString expect( "Linux" ); +#else + QString expect( "Plan8" ); // Expect failure +#endif + + QCOMPARE( expect, hostOS() ); + QCOMPARE( expect, hostOSName() ); // Might be the same + QCOMPARE( QStringLiteral( "Intel" ), hostCPU() ); // On all my developer machines +} + + +QTEST_GUILESS_MAIN( HostInfoTests ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" diff --git a/src/modules/initcpio/CMakeLists.txt b/src/modules/initcpio/CMakeLists.txt new file mode 100644 index 000000000..af217fb1a --- /dev/null +++ b/src/modules/initcpio/CMakeLists.txt @@ -0,0 +1,25 @@ +calamares_add_plugin( initcpio + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + InitcpioJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) + +if( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + Tests.cpp + TEST_NAME + initcpiotest + LINK_LIBRARIES + ${CALAMARES_LIBRARIES} + calamares + calamares_job_initcpio # From above + ${YAMLCPP_LIBRARY} + Qt5::Core + Qt5::Test + ) + calamares_automoc( initcpiotest ) +endif() diff --git a/src/modules/initcpio/InitcpioJob.cpp b/src/modules/initcpio/InitcpioJob.cpp new file mode 100644 index 000000000..38f3a8961 --- /dev/null +++ b/src/modules/initcpio/InitcpioJob.cpp @@ -0,0 +1,108 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "InitcpioJob.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/UMask.h" +#include "utils/Variant.h" + +#include +#include + +InitcpioJob::InitcpioJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + +InitcpioJob::~InitcpioJob() {} + + +QString +InitcpioJob::prettyName() const +{ + return tr( "Creating initramfs with mkinitcpio." ); +} + +void +fixPermissions( const QDir& d ) +{ + for ( const auto& fi : d.entryInfoList( { "initramfs*" }, QDir::Files ) ) + { + QFile f( fi.absoluteFilePath() ); + if ( f.exists() ) + { + cDebug() << "initcpio fixing permissions for" << f.fileName(); + f.setPermissions( QFileDevice::ReadOwner | QFileDevice::WriteOwner ); + } + } +} + +Calamares::JobResult +InitcpioJob::exec() +{ + CalamaresUtils::UMask m( CalamaresUtils::UMask::Safe ); + + if ( m_unsafe ) + { + cDebug() << "Skipping mitigations for unsafe initramfs permissions."; + } + else + { + QDir d( CalamaresUtils::System::instance()->targetPath( "/boot" ) ); + if ( d.exists() ) + { + fixPermissions( d ); + } + } + + cDebug() << "Updating initramfs with kernel" << m_kernel; + auto r = CalamaresUtils::System::instance()->targetEnvCommand( + { "mkinitcpio", "-p", m_kernel }, QString(), QString() /* no timeout , 0 */ ); + return r.explainProcess( "mkinitcpio", std::chrono::seconds( 10 ) /* fake timeout */ ); +} + +void +InitcpioJob::setConfigurationMap( const QVariantMap& configurationMap ) +{ + m_kernel = CalamaresUtils::getString( configurationMap, "kernel" ); + if ( m_kernel.isEmpty() ) + { + m_kernel = QStringLiteral( "all" ); + } + else if ( m_kernel == "$uname" ) + { + 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(); + cDebug() << "*initcpio* using running kernel" << m_kernel; + } + else + { + cWarning() << "*initcpio* could not determine running kernel, using 'all'." << Logger::Continuation + << r.getExitCode() << r.getOutput(); + } + } + + m_unsafe = CalamaresUtils::getBool( configurationMap, "be_unsafe", false ); +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( InitcpioJobFactory, registerPlugin< InitcpioJob >(); ) diff --git a/src/modules/initcpio/InitcpioJob.h b/src/modules/initcpio/InitcpioJob.h new file mode 100644 index 000000000..11358d749 --- /dev/null +++ b/src/modules/initcpio/InitcpioJob.h @@ -0,0 +1,50 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef INITCPIOJOB_H +#define INITCPIOJOB_H + +#include "CppJob.h" +#include "PluginDllMacro.h" +#include "utils/PluginFactory.h" + +#include +#include + +class PLUGINDLLEXPORT InitcpioJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit InitcpioJob( QObject* parent = nullptr ); + virtual ~InitcpioJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + QString m_kernel; + bool m_unsafe = false; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( InitcpioJobFactory ) + +#endif // INITCPIOJOB_H diff --git a/src/modules/initcpio/Tests.cpp b/src/modules/initcpio/Tests.cpp new file mode 100644 index 000000000..e0590ba25 --- /dev/null +++ b/src/modules/initcpio/Tests.cpp @@ -0,0 +1,59 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Tests.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" + +#include "utils/Logger.h" +#include "utils/Yaml.h" + +#include + +#include +#include + +extern void fixPermissions( const QDir& d ); + +QTEST_GUILESS_MAIN( InitcpioTests ) + +InitcpioTests::InitcpioTests() +{ +} + +InitcpioTests::~InitcpioTests() +{ +} + +void +InitcpioTests::initTestCase() +{ +} + +void InitcpioTests::testFixPermissions() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); + cDebug() << "Fixing up /boot"; + fixPermissions( QDir( "/boot" ) ); + cDebug() << "Fixing up /nonexistent"; + fixPermissions( QDir( "/nonexistent/nonexistent" ) ); + QVERIFY( true ); +} + diff --git a/src/modules/initcpio/Tests.h b/src/modules/initcpio/Tests.h new file mode 100644 index 000000000..5bab26d3f --- /dev/null +++ b/src/modules/initcpio/Tests.h @@ -0,0 +1,36 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef TESTS_H +#define TESTS_H + +#include + +class InitcpioTests : public QObject +{ + Q_OBJECT +public: + InitcpioTests(); + ~InitcpioTests() override; + +private Q_SLOTS: + void initTestCase(); + void testFixPermissions(); +}; + +#endif diff --git a/src/modules/initcpio/initcpio.conf b/src/modules/initcpio/initcpio.conf index 466a8785d..517e48392 100644 --- a/src/modules/initcpio/initcpio.conf +++ b/src/modules/initcpio/initcpio.conf @@ -1,3 +1,22 @@ # Run mkinitcpio(8) with the given preset value --- +# This key defines the kernel to be loaded. +# It can have the following values: +# - empty or unset, interpreted as "all" +# - the literal string "$uname" (without quotes, with dollar), +# which will use the output of `uname -r` to determine the +# running kernel, and use that. +# - any other string. +# +# Whatever is set, that string is passed as *preset* argument to the +# `-p` option of *mkinitcpio*. Take care that both "$uname" operates +# in the host system, and might not be correct if the target system is +# updated (to a newer kernel) as part of the installation. +# +# Note that "all" is probably not a good preset to use either. kernel: linux312 + +# Set this to true to turn off mitigations for lax file +# permissions on initramfs (which, in turn, can compromise +# your LUKS encryption keys, CVS-2019-13179). +be_unsafe: false diff --git a/src/modules/initcpio/main.py b/src/modules/initcpio/main.py deleted file mode 100644 index 796f68721..000000000 --- a/src/modules/initcpio/main.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# === This file is part of Calamares - === -# -# Copyright 2014, Philip Müller -# Copyright 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 . - -import libcalamares -from libcalamares.utils import check_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 mkinitcpio.") - -def run(): - """ Calls routine to create kernel initramfs image. - - :return: - """ - from subprocess import CalledProcessError - - kernel = libcalamares.job.configuration['kernel'] - try: - check_target_env_call(['mkinitcpio', '-p', kernel]) - except CalledProcessError as e: - libcalamares.utils.warning(str(e)) - return ( _( "Process Failed" ), - _( "Process
mkinitcpio
failed with error code {!s}. The command was
{!s}
." ).format( e.returncode, e.cmd ) ) - - return None diff --git a/src/modules/initcpio/module.desc b/src/modules/initcpio/module.desc deleted file mode 100644 index f84fc43a8..000000000 --- a/src/modules/initcpio/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "initcpio" -interface: "python" -script: "main.py" diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index 166cccf44..621352fc5 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -4,7 +4,7 @@ # === This file is part of Calamares - === # # Copyright 2014, Rohan Garg -# Copyright 2015, Philip Müller +# Copyright 2015,2019, Philip Müller # Copyright 2017, Alf Gaida # Copyright 2019, Adriaan de Groot # @@ -22,6 +22,7 @@ # along with Calamares. If not, see . import libcalamares +from libcalamares.utils import debug, target_env_call import os from collections import OrderedDict @@ -100,6 +101,17 @@ def write_mkinitcpio_lines(hooks, modules, files, root_mount_point): with open(path, "w") as mkinitcpio_file: mkinitcpio_file.write("\n".join(mklins) + "\n") +def detect_plymouth(): + """ + Checks existence (runnability) of plymouth in the target system. + + @return True if plymouth exists in the target, False otherwise + """ + # Used to only check existence of path /usr/bin/plymouth in target + isPlymouth = target_env_call(["sh", "-c", "which plymouth"]) + debug("which plymouth exit code: {!s}".format(isPlymouth)) + + return isPlymouth == 0 def modify_mkinitcpio_conf(partitions, root_mount_point): """ @@ -121,8 +133,7 @@ def modify_mkinitcpio_conf(partitions, root_mount_point): unencrypted_separate_boot = False # It is important that the plymouth hook comes before any encrypt hook - plymouth_bin = os.path.join(root_mount_point, "usr/bin/plymouth") - if os.path.exists(plymouth_bin): + if detect_plymouth(): hooks.append("plymouth") for partition in partitions: @@ -144,6 +155,9 @@ def modify_mkinitcpio_conf(partitions, root_mount_point): and "luksMapperName" not in partition): unencrypted_separate_boot = True + if partition["mountPoint"] == "/usr": + hooks.append("usr") + if encrypt_hook: hooks.append("encrypt") if not unencrypted_separate_boot and \ diff --git a/src/modules/initramfs/CMakeLists.txt b/src/modules/initramfs/CMakeLists.txt new file mode 100644 index 000000000..d7da12d55 --- /dev/null +++ b/src/modules/initramfs/CMakeLists.txt @@ -0,0 +1,25 @@ +calamares_add_plugin( initramfs + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + InitramfsJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) + +if( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + Tests.cpp + TEST_NAME + initramfstest + LINK_LIBRARIES + ${CALAMARES_LIBRARIES} + calamares + calamares_job_initramfs # From above + ${YAMLCPP_LIBRARY} + Qt5::Core + Qt5::Test + ) + calamares_automoc( initramfstest ) +endif() diff --git a/src/modules/initramfs/InitramfsJob.cpp b/src/modules/initramfs/InitramfsJob.cpp new file mode 100644 index 000000000..af8e07ca7 --- /dev/null +++ b/src/modules/initramfs/InitramfsJob.cpp @@ -0,0 +1,98 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "InitramfsJob.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/UMask.h" +#include "utils/Variant.h" + +InitramfsJob::InitramfsJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + +InitramfsJob::~InitramfsJob() {} + + +QString +InitramfsJob::prettyName() const +{ + return tr( "Creating initramfs." ); +} + + +Calamares::JobResult +InitramfsJob::exec() +{ + CalamaresUtils::UMask m( CalamaresUtils::UMask::Safe ); + + cDebug() << "Updating initramfs with kernel" << m_kernel; + + if ( m_unsafe ) + { + cDebug() << "Skipping mitigations for unsafe initramfs permissions."; + } + else + { + // First make sure we generate a safe initramfs with suitable permissions. + static const char confFile[] = "/etc/initramfs-tools/conf.d/calamares-safe-initramfs.conf"; + static const char contents[] = "UMASK=0077\n"; + if ( CalamaresUtils::System::instance()->createTargetFile( confFile, QByteArray( contents ) ).isEmpty() ) + { + cWarning() << Logger::SubEntry << "Could not configure safe UMASK for initramfs."; + // But continue anyway. + } + } + + // And then do the ACTUAL work. + auto r = CalamaresUtils::System::instance()->targetEnvCommand( + { "update-initramfs", "-k", m_kernel, "-c", "-t" }, QString(), QString() /* no timeout, 0 */ ); + return r.explainProcess( "update-initramfs", std::chrono::seconds( 10 ) /* fake timeout */ ); +} + + +void +InitramfsJob::setConfigurationMap( const QVariantMap& configurationMap ) +{ + m_kernel = CalamaresUtils::getString( configurationMap, "kernel" ); + if ( m_kernel.isEmpty() ) + { + m_kernel = QStringLiteral( "all" ); + } + else if ( m_kernel == "$uname" ) + { + 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(); + cDebug() << "*initramfs* using running kernel" << m_kernel; + } + else + { + cWarning() << "*initramfs* could not determine running kernel, using 'all'." << Logger::Continuation + << r.getExitCode() << r.getOutput(); + } + } + + m_unsafe = CalamaresUtils::getBool( configurationMap, "be_unsafe", false ); +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( InitramfsJobFactory, registerPlugin< InitramfsJob >(); ) diff --git a/src/modules/initramfs/InitramfsJob.h b/src/modules/initramfs/InitramfsJob.h new file mode 100644 index 000000000..9eeb81fea --- /dev/null +++ b/src/modules/initramfs/InitramfsJob.h @@ -0,0 +1,50 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef INITRAMFSJOB_H +#define INITRAMFSJOB_H + +#include "CppJob.h" +#include "PluginDllMacro.h" +#include "utils/PluginFactory.h" + +#include +#include + +class PLUGINDLLEXPORT InitramfsJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit InitramfsJob( QObject* parent = nullptr ); + virtual ~InitramfsJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + QString m_kernel; + bool m_unsafe = false; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( InitramfsJobFactory ) + +#endif // INITRAMFSJOB_H diff --git a/src/modules/initramfs/README.md b/src/modules/initramfs/README.md deleted file mode 100644 index f7de44f2f..000000000 --- a/src/modules/initramfs/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## initramfs module - -This module is specific to Debian based distros. Post installation on Debian -the initramfs needs to be updated so as to not interrupt the boot process -with a error about fsck.ext4 not being found. - -## Debian specific notes - -If you're using live-build to build your ISO and setup the runtime env -make sure that you purge the live-\* packages on the target system -before running this module, since live-config dpkg-diverts update-initramfs -and can cause all sorts of fun issues. diff --git a/src/modules/initramfs/Tests.cpp b/src/modules/initramfs/Tests.cpp new file mode 100644 index 000000000..936c94097 --- /dev/null +++ b/src/modules/initramfs/Tests.cpp @@ -0,0 +1,96 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Tests.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "Settings.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/Yaml.h" + +#include + +#include +#include + +QTEST_GUILESS_MAIN( InitramfsTests ) + +InitramfsTests::InitramfsTests() +{ +} + +InitramfsTests::~InitramfsTests() +{ +} + +void +InitramfsTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); +} + +static const char contents[] = "UMASK=0077\n"; +static const char confFile[] = "/tmp/calamares-safe-umask"; + +void InitramfsTests::cleanup() +{ + QFile::remove( confFile ); +} + +void InitramfsTests::testCreateHostFile() +{ + + CalamaresUtils::System s( false ); // don't chroot + QString path = s.createTargetFile( confFile, QByteArray( contents ) ); + QVERIFY( !path.isEmpty() ); + QCOMPARE( path, confFile ); // don't chroot, so path create relative to / + QVERIFY( QFile::exists( confFile ) ); + + QFileInfo fi( confFile ); + QVERIFY( fi.exists() ); + QCOMPARE( fi.size(), sizeof( contents )-1 ); // don't count trailing NUL + + QFile::remove( confFile ); +} + +void InitramfsTests::testCreateTargetFile() +{ + static const char short_confFile[] = "/calamares-safe-umask"; + + CalamaresUtils::System s( true ); + QString path = s.createTargetFile( short_confFile, QByteArray( contents ) ); + QVERIFY( path.isEmpty() ); // because no rootmountpoint is set + + Calamares::JobQueue j; + j.globalStorage()->insert( "rootMountPoint", "/tmp" ); + + path = s.createTargetFile( short_confFile, QByteArray( contents ) ); + QVERIFY( path.endsWith( short_confFile ) ); // chroot, so path create relative to + QVERIFY( path.startsWith( "/tmp/" ) ); + QVERIFY( QFile::exists( path ) ); + + QFileInfo fi( path ); + QVERIFY( fi.exists() ); + QCOMPARE( 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 new file mode 100644 index 000000000..01394d4fa --- /dev/null +++ b/src/modules/initramfs/Tests.h @@ -0,0 +1,39 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef TESTS_H +#define TESTS_H + +#include + +class InitramfsTests : public QObject +{ + Q_OBJECT +public: + InitramfsTests(); + ~InitramfsTests() override; + +private Q_SLOTS: + void initTestCase(); + void cleanup(); + + void testCreateHostFile(); + void testCreateTargetFile(); +}; + +#endif diff --git a/src/modules/initramfs/initramfs.conf b/src/modules/initramfs/initramfs.conf new file mode 100644 index 000000000..a989d83c3 --- /dev/null +++ b/src/modules/initramfs/initramfs.conf @@ -0,0 +1,36 @@ +## initramfs module +# +# This module is specific to Debian based distros. Post installation on Debian +# the initramfs needs to be updated so as to not interrupt the boot process +# with a error about fsck.ext4 not being found. +# +## Debian specific notes +# +# If you're using live-build to build your ISO and setup the runtime env +# make sure that you purge the live-\* packages on the target system +# before running this module, since live-config dpkg-diverts update-initramfs +# and can cause all sorts of fun issues. +--- +# There is only one configuration item for this module, +# the kernel to be loaded. This can have the following +# values: +# - empty or unset, interpreted as "all" +# - the literal string "$uname" (without quotes, with dollar), +# which will use the output of `uname -r` to determine the +# running kernel, and use that. +# - any other string. +# +# Whatever is set, that string is passed as *version* argument to the +# `-k` option of *update-initramfs*. Take care that both "$uname" operates +# in the host system, and might not be correct if the target system is +# updated (to a newer kernel) as part of the installation. +# +# The default is empty/unset, leading to the behavior from Calamares +# 3.2.9 and earlier which passed "all" as version. + +kernel: "all" + +# Set this to true to turn off mitigations for lax file +# permissions on initramfs (which, in turn, can compromise +# your LUKS encryption keys, CVS-2019-13179). +be_unsafe: false diff --git a/src/modules/initramfs/main.py b/src/modules/initramfs/main.py deleted file mode 100644 index 7ff32bafb..000000000 --- a/src/modules/initramfs/main.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# === This file is part of Calamares - === -# -# Copyright 2014, Philip Müller -# Copyright 2017, Alf Gaida -# Copyright 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 . - -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.") - - -def run(): - """ Generate an initramfs image. - - :return: - """ - return_code = target_env_call(["update-initramfs", "-k", "all", "-c", - "-t"]) - - if return_code != 0: - libcalamares.utils.debug("update-initramfs returned {}".format(return_code)) - return ( - _("Failed to run update-initramfs on the target"), - _("The exit code was {}").format(return_code) - ) diff --git a/src/modules/initramfs/module.desc b/src/modules/initramfs/module.desc deleted file mode 100644 index 321a03782..000000000 --- a/src/modules/initramfs/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "initramfs" -interface: "python" -script: "main.py" diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 3c241e467..237e8d0dc 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -21,11 +21,11 @@ #include "LicensePage.h" -#include "ui_LicensePage.h" #include "LicenseWidget.h" +#include "ui_LicensePage.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" #include "ViewManager.h" #include "utils/CalamaresUtilsGui.h" @@ -36,22 +36,28 @@ #include #include +#include #include #include #include -#include #include #include +static const char mustAccept[] = "#acceptFrame { border: 1px solid red;" + "background-color: #fff6f6;" + "border-radius: 4px;" + "padding: 2px; }"; +static const char okAccept[] = "#acceptFrame { padding: 3px }"; + const NamedEnumTable< LicenseEntry::Type >& LicenseEntry::typeNames() { - static const NamedEnumTable< LicenseEntry::Type > names{ - { QStringLiteral( "software" ), LicenseEntry::Type::Software}, + static const NamedEnumTable< LicenseEntry::Type > names { + { QStringLiteral( "software" ), LicenseEntry::Type::Software }, { QStringLiteral( "driver" ), LicenseEntry::Type::Driver }, { QStringLiteral( "gpudriver" ), LicenseEntry::Type::GpuDriver }, - { QStringLiteral( "browserplugin" ), LicenseEntry::Type::BrowserPlugin}, + { QStringLiteral( "browserplugin" ), LicenseEntry::Type::BrowserPlugin }, { QStringLiteral( "codec" ), LicenseEntry::Type::Codec }, { QStringLiteral( "package" ), LicenseEntry::Type::Package } }; @@ -59,10 +65,12 @@ LicenseEntry::typeNames() return names; } -LicenseEntry::LicenseEntry(const QVariantMap& conf) +LicenseEntry::LicenseEntry( const QVariantMap& conf ) { if ( !conf.contains( "id" ) || !conf.contains( "name" ) || !conf.contains( "url" ) ) + { return; + } m_id = conf[ "id" ].toString(); m_prettyName = conf[ "name" ].toString(); @@ -70,12 +78,15 @@ LicenseEntry::LicenseEntry(const QVariantMap& conf) m_url = QUrl( conf[ "url" ].toString() ); m_required = CalamaresUtils::getBool( conf, "required", false ); + m_expand = CalamaresUtils::getBool( conf, "expand", false ); bool ok = false; QString typeString = conf.value( "type", "software" ).toString(); m_type = typeNames().find( typeString, ok ); if ( !ok ) + { cWarning() << "License entry" << m_id << "has unknown type" << typeString << "(using 'software')"; + } } bool @@ -85,7 +96,7 @@ LicenseEntry::isLocal() const } -LicensePage::LicensePage(QWidget *parent) +LicensePage::LicensePage( QWidget* parent ) : QWidget( parent ) , m_isNextEnabled( false ) , m_allLicensesOptional( false ) @@ -93,88 +104,78 @@ LicensePage::LicensePage(QWidget *parent) { ui->setupUi( this ); - ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() ); + // ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() ); + CalamaresUtils::unmarginLayout( ui->verticalLayout ); - ui->mainText->setAlignment( Qt::AlignCenter ); ui->mainText->setWordWrap( true ); ui->mainText->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); - ui->additionalText->setWordWrap( true ); - - ui->verticalLayout->insertSpacing( 4, CalamaresUtils::defaultFontHeight() / 2 ); - - ui->verticalLayout->setContentsMargins( CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() * 3, - CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() ); - ui->acceptFrame->setFrameStyle( QFrame::NoFrame | QFrame::Plain ); - ui->acceptFrame->setStyleSheet( "#acceptFrame { border: 1px solid red;" - "background-color: #fff6f6;" - "border-radius: 4px;" - "padding: 2px; }" ); + ui->acceptFrame->setStyleSheet( mustAccept ); ui->acceptFrame->layout()->setMargin( CalamaresUtils::defaultFontHeight() / 2 ); updateGlobalStorage( false ); // Have not agreed yet connect( ui->acceptCheckBox, &QCheckBox::toggled, this, &LicensePage::checkAcceptance ); - CALAMARES_RETRANSLATE( - ui->acceptCheckBox->setText( tr( "I accept the terms and conditions above." ) ); - ) + CALAMARES_RETRANSLATE_SLOT( &LicensePage::retranslate ) } - void LicensePage::setEntries( const QList< LicenseEntry >& entriesList ) { CalamaresUtils::clearLayout( ui->licenseEntriesLayout ); + + m_allLicensesOptional = true; + m_entries.clear(); m_entries.reserve( entriesList.count() ); - - const bool required = std::any_of( entriesList.cbegin(), entriesList.cend(), []( const LicenseEntry& e ){ return e.m_required; }); - if ( entriesList.isEmpty() ) - m_allLicensesOptional = true; - else - m_allLicensesOptional = !required; - - checkAcceptance( false ); - - CALAMARES_RETRANSLATE( - if ( required ) - { - ui->mainText->setText( tr( "

License Agreement

" - "This setup procedure will install proprietary " - "software that is subject to licensing terms." ) ); - ui->additionalText->setText( tr( "Please review the End User License " - "Agreements (EULAs) above.
" - "If you do not agree with the terms, the setup procedure cannot continue." ) ); - } - else - { - ui->mainText->setText( tr( "

License Agreement

" - "This setup procedure can install proprietary " - "software that is subject to licensing terms " - "in order to provide additional features and enhance the user " - "experience." ) ); - ui->additionalText->setText( tr( "Please review the End User License " - "Agreements (EULAs) above.
" - "If you do not agree with the terms, proprietary software will not " - "be installed, and open source alternatives will be used instead." ) ); - } - ui->retranslateUi( this ); - - for ( const auto& w : m_entries ) - w->retranslateUi(); - ) - for ( const LicenseEntry& entry : entriesList ) { LicenseWidget* w = new LicenseWidget( entry ); ui->licenseEntriesLayout->addWidget( w ); m_entries.append( w ); + m_allLicensesOptional &= !entry.isRequired(); + } + ui->licenseEntriesLayout->addSpacerItem( new QSpacerItem( 10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); + + ui->acceptCheckBox->setChecked( false ); + checkAcceptance( false ); +} + +void +LicensePage::retranslate() +{ + ui->acceptCheckBox->setText( tr( "I accept the terms and conditions above." ) ); + + QString review = tr( "Please review the End User License Agreements (EULAs)." ); + const auto br = QStringLiteral( "
" ); + + if ( !m_allLicensesOptional ) + { + ui->mainText->setText( tr( "This setup procedure will install proprietary " + "software that is subject to licensing terms." ) + + br + review ); + QString mustAcceptText( tr( "If you do not agree with the terms, the setup procedure cannot continue." ) ); + ui->acceptCheckBox->setToolTip( mustAcceptText ); + } + else + { + ui->mainText->setText( tr( "This setup procedure can install proprietary " + "software that is subject to licensing terms " + "in order to provide additional features and enhance the user " + "experience." ) + + br + review ); + QString okAcceptText( tr( "If you do not agree with the terms, proprietary software will not " + "be installed, and open source alternatives will be used instead." ) ); + ui->acceptCheckBox->setToolTip( okAcceptText ); + } + ui->retranslateUi( this ); + + for ( const auto& w : m_entries ) + { + w->retranslateUi(); } - ui->licenseEntriesLayout->addStretch(); } @@ -190,21 +191,19 @@ LicensePage::updateGlobalStorage( bool v ) Calamares::JobQueue::instance()->globalStorage()->insert( "licenseAgree", v ); } -void LicensePage::checkAcceptance( bool checked ) +void +LicensePage::checkAcceptance( bool checked ) { updateGlobalStorage( checked ); m_isNextEnabled = checked || m_allLicensesOptional; if ( !m_isNextEnabled ) { - ui->acceptFrame->setStyleSheet( "#acceptFrame { border: 1px solid red;" - "background-color: #fff8f8;" - "border-radius: 4px;" - "padding: 2px; }" ); + ui->acceptFrame->setStyleSheet( mustAccept ); } else { - ui->acceptFrame->setStyleSheet( "#acceptFrame { padding: 3px }" ); + ui->acceptFrame->setStyleSheet( okAccept ); } - emit nextStatusChanged( checked ); + emit nextStatusChanged( m_isNextEnabled ); } diff --git a/src/modules/license/LicensePage.h b/src/modules/license/LicensePage.h index e595f7ad8..dcd3ea7b4 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -24,8 +24,8 @@ #include "utils/NamedEnum.h" -#include #include +#include namespace Ui { @@ -56,13 +56,15 @@ struct LicenseEntry bool isValid() const { return !m_id.isEmpty(); } bool isRequired() const { return m_required; } bool isLocal() const; + bool expandByDefault() const { return m_expand; } QString m_id; QString m_prettyName; QString m_prettyVendor; - Type m_type; + Type m_type = Type::Software; QUrl m_url; - bool m_required; + bool m_required = false; + bool m_expand = false; }; class LicensePage : public QWidget @@ -83,10 +85,13 @@ public slots: * - the user has ticked the "OK" box. * This function calls updateGlobalStorage() as needed, and updates * the appearance of the page as needed. @p checked indicates whether - * the checkbox has been ticked or not. + * the checkbox has been ticked or not. (e.g. when @p checked is true, + * you can continue regardless) */ void checkAcceptance( bool checked ); + void retranslate(); + signals: void nextStatusChanged( bool status ); @@ -101,4 +106,4 @@ private: QList< LicenseWidget* > m_entries; }; -#endif //LICENSEPAGE_H +#endif //LICENSEPAGE_H diff --git a/src/modules/license/LicensePage.ui b/src/modules/license/LicensePage.ui index 767b392a0..b5936d5de 100644 --- a/src/modules/license/LicensePage.ui +++ b/src/modules/license/LicensePage.ui @@ -16,6 +16,16 @@ + + + + <h1>License Agreement</h1> + + + Qt::AlignCenter + + + @@ -30,6 +40,12 @@ <Calamares license text> + + Qt::AlignCenter + + + true + @@ -47,6 +63,12 @@ + + + 0 + 0 + + QFrame::NoFrame @@ -65,7 +87,7 @@ 0 0 765 - 94 + 89 @@ -85,22 +107,6 @@ - - - - - 0 - 0 - - - - - - - <additionalText> - - - diff --git a/src/modules/license/LicenseViewStep.cpp b/src/modules/license/LicenseViewStep.cpp index f5f4b6e2b..89cddf27f 100644 --- a/src/modules/license/LicenseViewStep.cpp +++ b/src/modules/license/LicenseViewStep.cpp @@ -19,29 +19,30 @@ #include "LicenseViewStep.h" -#include "LicensePage.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" +#include "LicensePage.h" #include "utils/Logger.h" #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( LicenseViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( LicenseViewStepFactory, registerPlugin< LicenseViewStep >(); ) LicenseViewStep::LicenseViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new LicensePage ) { emit nextStatusChanged( false ); - connect( m_widget, &LicensePage::nextStatusChanged, - this, &LicenseViewStep::nextStatusChanged ); + connect( m_widget, &LicensePage::nextStatusChanged, this, &LicenseViewStep::nextStatusChanged ); } LicenseViewStep::~LicenseViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -97,18 +98,21 @@ void LicenseViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { QList< LicenseEntry > entriesList; - if ( configurationMap.contains( "entries" ) && - configurationMap.value( "entries" ).type() == QVariant::List ) + if ( configurationMap.contains( "entries" ) && configurationMap.value( "entries" ).type() == QVariant::List ) { const auto entries = configurationMap.value( "entries" ).toList(); for ( const QVariant& entryV : entries ) { if ( entryV.type() != QVariant::Map ) + { continue; + } LicenseEntry entry( entryV.toMap() ); if ( entry.isValid() ) + { entriesList.append( entry ); + } } } diff --git a/src/modules/license/LicenseViewStep.h b/src/modules/license/LicenseViewStep.h index a4fabc8e1..957110f3d 100644 --- a/src/modules/license/LicenseViewStep.h +++ b/src/modules/license/LicenseViewStep.h @@ -20,9 +20,9 @@ #ifndef LICENSEPAGEPLUGIN_H #define LICENSEPAGEPLUGIN_H +#include #include #include -#include #include #include @@ -58,4 +58,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( LicenseViewStepFactory ) -#endif // LICENSEPAGEPLUGIN_H +#endif // LICENSEPAGEPLUGIN_H diff --git a/src/modules/license/LicenseWidget.cpp b/src/modules/license/LicenseWidget.cpp index 238d57b07..09d2230e5 100644 --- a/src/modules/license/LicenseWidget.cpp +++ b/src/modules/license/LicenseWidget.cpp @@ -27,17 +27,19 @@ #include #include #include -#include +#include #include static QString loadLocalFile( const QUrl& u ) { if ( !u.isLocalFile() ) + { return QString(); + } QFile file( u.path() ); - if ( !file.open(QIODevice::ReadOnly | QIODevice::Text) ) + if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { cWarning() << "Could not load license file" << u.path(); return QString(); @@ -50,12 +52,12 @@ LicenseWidget::LicenseWidget( LicenseEntry entry, QWidget* parent ) : QWidget( parent ) , m_entry( std::move( entry ) ) , m_label( new QLabel( this ) ) - , m_viewLicenseLabel( new QLabel( this ) ) - , m_expandLicenseButton( nullptr ) - , m_fullText( nullptr ) + , m_viewLicenseButton( new QPushButton( this ) ) + , m_licenceTextLabel( new QLabel( this ) ) + , m_isExpanded( m_entry.expandByDefault() ) { QPalette pal( palette() ); - pal.setColor( QPalette::Background, palette().background().color().lighter( 108 ) ); + pal.setColor( QPalette::Background, palette().window().color().lighter( 108 ) ); setObjectName( "licenseItem" ); @@ -64,55 +66,48 @@ LicenseWidget::LicenseWidget( LicenseEntry entry, QWidget* parent ) setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); setContentsMargins( 4, 4, 4, 4 ); + QVBoxLayout* vLayout = new QVBoxLayout; + QWidget* topPart = new QWidget( this ); + topPart->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); + vLayout->addWidget( topPart ); + QHBoxLayout* wiLayout = new QHBoxLayout; + topPart->setLayout( wiLayout ); m_label->setWordWrap( true ); - m_label->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum ); + m_label->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); wiLayout->addWidget( m_label ); - m_viewLicenseLabel->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); - m_viewLicenseLabel->setAlignment( Qt::AlignVCenter | Qt::AlignRight ); - wiLayout->addWidget( m_viewLicenseLabel ); + wiLayout->addSpacing( 10 ); + m_viewLicenseButton->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ); + wiLayout->addWidget( m_viewLicenseButton ); + + m_licenceTextLabel->setStyleSheet( "border-top: 1px solid black; margin-top: 0px; padding-top: 1em;" ); + m_licenceTextLabel->setObjectName( "licenseItemFullText" ); - m_expandLicenseButton = new QToolButton( this ); - wiLayout->addWidget( m_expandLicenseButton ); if ( m_entry.isLocal() ) { - QVBoxLayout* vLayout = new QVBoxLayout; - - m_expandLicenseButton->setArrowType( Qt::UpArrow ); - connect( m_expandLicenseButton, &QAbstractButton::clicked, this, &LicenseWidget::expandClicked ); - - vLayout->addLayout( wiLayout ); - m_fullText = new QLabel( this ); - m_fullText->setText( loadLocalFile( m_entry.m_url ) ); - m_fullText->hide(); - m_fullText->setStyleSheet( "border-top: 1px solid black; margin-top: 1em; padding-top: 1em;" ); - m_fullText->setObjectName( "licenseItemFullText" ); - - vLayout->addWidget( m_fullText ); - setLayout( vLayout ); + m_fullTextContents = loadLocalFile( m_entry.m_url ); + showLocalLicenseText(); + connect( m_viewLicenseButton, &QAbstractButton::clicked, this, &LicenseWidget::expandClicked ); } else { - m_expandLicenseButton->setArrowType( Qt::RightArrow ); - connect( m_expandLicenseButton, &QAbstractButton::clicked, this, &LicenseWidget::viewClicked ); - - // Normally setOpenExternalLinks( true ) would do, but we need the - // open code anyway for the toolbutton, let's share it. - connect( m_viewLicenseLabel, &QLabel::linkActivated, this, &LicenseWidget::viewClicked ); - - setLayout( wiLayout ); // Only the horizontal layout needed + m_licenceTextLabel->setText( tr( "URL: %1" ).arg( m_entry.m_url.toDisplayString() ) ); + connect( m_viewLicenseButton, &QAbstractButton::clicked, this, &LicenseWidget::viewClicked ); } + m_licenceTextLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); + + vLayout->addWidget( m_licenceTextLabel ); + setLayout( vLayout ); retranslateUi(); } -LicenseWidget::~LicenseWidget() -{ -} +LicenseWidget::~LicenseWidget() {} -void LicenseWidget::retranslateUi() +void +LicenseWidget::retranslateUi() { QString productDescription; switch ( m_entry.m_type ) @@ -120,60 +115,72 @@ void LicenseWidget::retranslateUi() case LicenseEntry::Type::Driver: //: %1 is an untranslatable product name, example: Creative Audigy driver productDescription = tr( "%1 driver
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::GpuDriver: //: %1 is usually a vendor name, example: Nvidia graphics driver productDescription = tr( "%1 graphics driver
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::BrowserPlugin: productDescription = tr( "%1 browser plugin
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Codec: productDescription = tr( "%1 codec
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Package: productDescription = tr( "%1 package
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Software: productDescription = tr( "%1
" - "by %2" ) - .arg( m_entry.m_prettyName ) - .arg( m_entry.m_prettyVendor ); + "by %2" ) + .arg( m_entry.m_prettyName ) + .arg( m_entry.m_prettyVendor ); } m_label->setText( productDescription ); updateExpandToolTip(); } void -LicenseWidget::expandClicked() +LicenseWidget::showLocalLicenseText() { - if ( m_expandLicenseButton->arrowType() == Qt::DownArrow ) + if ( m_isExpanded ) { - m_expandLicenseButton->setArrowType( Qt::UpArrow ); + m_licenceTextLabel->setText( m_fullTextContents ); } else { - m_expandLicenseButton->setArrowType( Qt::DownArrow ); + QString fileName = m_entry.m_url.toDisplayString(); + if ( fileName.startsWith( "file:" ) ) + { + fileName = fileName.remove( 0, 5 ); + } + m_licenceTextLabel->setText( tr( "File: %1" ).arg( fileName ) ); } +} +void +LicenseWidget::expandClicked() +{ + m_isExpanded = !m_isExpanded; // Show/hide based on the new arrow direction. - if ( m_fullText ) - m_fullText->setHidden( m_expandLicenseButton->arrowType() == Qt::UpArrow ); + if ( !m_fullTextContents.isEmpty() ) + { + showLocalLicenseText(); + } updateExpandToolTip(); } @@ -184,23 +191,11 @@ LicenseWidget::updateExpandToolTip() { if ( m_entry.isLocal() ) { - const bool isNowCollapsed = m_expandLicenseButton->arrowType() == Qt::UpArrow; - - m_expandLicenseButton->setToolTip( - isNowCollapsed - ? tr( "Shows the complete license text" ) - : tr( "Hide license text" ) - ) ; - m_viewLicenseLabel->setText( - isNowCollapsed - ? tr( "Show license agreement" ) - : tr( "Hide license agreement" ) ); + m_viewLicenseButton->setText( m_isExpanded ? tr( "Hide license text" ) : tr( "Show the license text" ) ); } else { - m_expandLicenseButton->setToolTip( tr( "Opens the license agreement in a browser window." ) ); - m_viewLicenseLabel->setText( tr( "View license agreement" ) - .arg( m_entry.m_url.toString() ) ); + m_viewLicenseButton->setText( tr( "Open license agreement in browser." ) ); } } diff --git a/src/modules/license/LicenseWidget.h b/src/modules/license/LicenseWidget.h index c43233da4..a386ae353 100644 --- a/src/modules/license/LicenseWidget.h +++ b/src/modules/license/LicenseWidget.h @@ -27,7 +27,7 @@ #include #include -class QToolButton; +class QPushButton; class LicenseWidget : public QWidget { @@ -38,14 +38,16 @@ public: void retranslateUi(); private: + void showLocalLicenseText(); // Display (or hide) the local license text void expandClicked(); // "slot" to toggle show/hide of local license text - void viewClicked(); // "slot" to open link + void viewClicked(); // "slot" to open link void updateExpandToolTip(); LicenseEntry m_entry; QLabel* m_label; - QLabel* m_viewLicenseLabel; - QToolButton* m_expandLicenseButton; - QLabel* m_fullText; -} ; + QPushButton* m_viewLicenseButton; + QLabel* m_licenceTextLabel; + QString m_fullTextContents; + bool m_isExpanded; +}; #endif diff --git a/src/modules/license/license.conf b/src/modules/license/license.conf index 9057f8a51..8a1672887 100644 --- a/src/modules/license/license.conf +++ b/src/modules/license/license.conf @@ -14,6 +14,10 @@ # to the URL is provided, which opens in the default web browser. A local # URL (i.e. file:///) assumes that the contents are HTML or plain text, and # displays the license in-line. YAML: string, mandatory. +# - expand A boolean value only relevant for **local** URLs. If true, +# the license text is displayed in "expanded" form by +# default, rather than requiring the user to first open it up. +# YAML: boolean, optional, default is false. entries: - id: nvidia name: Nvidia @@ -43,3 +47,4 @@ entries: type: software required: true url: file:../LICENSE + expand: true diff --git a/src/modules/locale/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index 9f1b8fbdf..db33f0c3d 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -25,9 +25,7 @@ #include #include -LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, - const QStringList& localeGenLines, - QWidget* parent ) +LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, const QStringList& localeGenLines, QWidget* parent ) : QDialog( parent ) { setModal( true ); @@ -41,7 +39,7 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, upperText->setText( tr( "The system locale setting affects the language and character " "set for some command line user interface elements.
" "The current setting is %1." ) - .arg( guessedLCLocale ) ); + .arg( guessedLCLocale ) ); mainLayout->addWidget( upperText ); setMinimumWidth( upperText->fontMetrics().height() * 24 ); @@ -60,33 +58,32 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, } } - QDialogButtonBox* dbb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - Qt::Horizontal, - this ); + QDialogButtonBox* dbb + = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this ); dbb->button( QDialogButtonBox::Cancel )->setText( tr( "&Cancel" ) ); dbb->button( QDialogButtonBox::Ok )->setText( tr( "&OK" ) ); mainLayout->addWidget( dbb ); - connect( dbb->button( QDialogButtonBox::Ok ), &QPushButton::clicked, - this, &QDialog::accept ); - connect( dbb->button( QDialogButtonBox::Cancel ), &QPushButton::clicked, - this, &QDialog::reject ); + connect( dbb->button( QDialogButtonBox::Ok ), &QPushButton::clicked, this, &QDialog::accept ); + connect( dbb->button( QDialogButtonBox::Cancel ), &QPushButton::clicked, this, &QDialog::reject ); - connect( m_localesWidget, &QListWidget::itemDoubleClicked, - this, &QDialog::accept ); - connect( m_localesWidget, &QListWidget::itemSelectionChanged, - [this, dbb]() - { + connect( m_localesWidget, &QListWidget::itemDoubleClicked, this, &QDialog::accept ); + connect( m_localesWidget, &QListWidget::itemSelectionChanged, [this, dbb]() { if ( m_localesWidget->selectedItems().isEmpty() ) + { dbb->button( QDialogButtonBox::Ok )->setEnabled( false ); + } else + { dbb->button( QDialogButtonBox::Ok )->setEnabled( true ); - + } } ); if ( selected > -1 ) + { m_localesWidget->setCurrentRow( selected ); + } } diff --git a/src/modules/locale/LCLocaleDialog.h b/src/modules/locale/LCLocaleDialog.h index 29005b94b..81e4cb547 100644 --- a/src/modules/locale/LCLocaleDialog.h +++ b/src/modules/locale/LCLocaleDialog.h @@ -37,4 +37,4 @@ private: QListWidget* m_localesWidget; }; -#endif // LCLOCALEDIALOG_H +#endif // LCLOCALEDIALOG_H diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index 8bc2b2c77..3377b11f3 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -30,16 +30,15 @@ LocaleConfiguration::LocaleConfiguration() LocaleConfiguration::LocaleConfiguration( const QString& localeName, const QString& formatsName ) : LocaleConfiguration() { - lc_numeric = lc_time = lc_monetary = lc_paper = lc_name - = lc_address = lc_telephone = lc_measurement - = lc_identification = formatsName; + lc_numeric = lc_time = lc_monetary = lc_paper = lc_name = lc_address = lc_telephone = lc_measurement + = lc_identification = formatsName; - (void) setLanguage( localeName ); + (void)setLanguage( localeName ); } void -LocaleConfiguration::setLanguage(const QString& localeName ) +LocaleConfiguration::setLanguage( const QString& localeName ) { QString language = localeName.split( '_' ).first(); m_languageLocaleBcp47 = QLocale( language ).bcp47Name().toLower(); @@ -55,30 +54,39 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, QString language = languageLocale.split( '_' ).first(); QStringList linesForLanguage; - for ( const QString &line : availableLocales ) + for ( const QString& line : availableLocales ) { if ( line.startsWith( language ) ) + { linesForLanguage.append( line ); + } } QString lang; if ( linesForLanguage.length() == 0 || languageLocale.isEmpty() ) + { lang = "en_US.UTF-8"; + } else if ( linesForLanguage.length() == 1 ) + { lang = linesForLanguage.first(); + } else { QStringList linesForLanguageUtf; // FIXME: this might be useless if we already filter out non-UTF8 locales foreach ( QString line, linesForLanguage ) { - if ( line.contains( "UTF-8", Qt::CaseInsensitive ) || - line.contains( "utf8", Qt::CaseInsensitive ) ) + if ( line.contains( "UTF-8", Qt::CaseInsensitive ) || line.contains( "utf8", Qt::CaseInsensitive ) ) + { linesForLanguageUtf.append( line ); + } } if ( linesForLanguageUtf.length() == 1 ) + { lang = linesForLanguageUtf.first(); + } } // lang could still be empty if we found multiple locales that satisfy myLanguage @@ -92,8 +100,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, # locale categories reflect the selected location. */ if ( language == "pt" || language == "zh" ) { - QString proposedLocale = QString( "%1_%2" ).arg( language ) - .arg( countryCode ); + QString proposedLocale = QString( "%1_%2" ).arg( language ).arg( countryCode ); foreach ( QString line, linesForLanguage ) { if ( line.contains( proposedLocale ) ) @@ -108,7 +115,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, // language locale and pick the first result, if any. if ( lang.isEmpty() ) { - for ( const QString &line : availableLocales ) + for ( const QString& line : availableLocales ) { if ( line.startsWith( languageLocale ) ) { @@ -116,13 +123,14 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, break; } } - } // Else we have an unrecognized or unsupported locale, all we can do is go with // en_US.UTF-8 UTF-8. This completes all default language setting guesswork. if ( lang.isEmpty() ) + { lang = "en_US.UTF-8"; + } // The following block was inspired by Ubiquity, scripts/localechooser-apply. @@ -171,10 +179,9 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, // We make a proposed locale based on the UI language and the timezone's country. There is no // guarantee that this will be a valid, supported locale (often it won't). QString lc_formats; - QString combined = QString( "%1_%2" ).arg( language ) - .arg( countryCode ); + QString combined = QString( "%1_%2" ).arg( language ).arg( countryCode ); // We look up if it's a supported locale. - for ( const QString &line : availableLocales ) + for ( const QString& line : availableLocales ) { if ( line.startsWith( combined ) ) { @@ -187,7 +194,7 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, if ( lc_formats.isEmpty() ) { QStringList available; - for ( const QString &line : availableLocales ) + for ( const QString& line : availableLocales ) { if ( line.contains( QString( "_%1" ).arg( countryCode ) ) ) { @@ -248,11 +255,10 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, }; if ( countryToDefaultLanguage.contains( countryCode ) ) { - QString combinedLocale = - QString( "%1_%2" ).arg( countryToDefaultLanguage.value( countryCode ) ) - .arg( countryCode ); + QString combinedLocale + = QString( "%1_%2" ).arg( countryToDefaultLanguage.value( countryCode ) ).arg( countryCode ); - for ( const QString &line : availableLocales ) + for ( const QString& line : availableLocales ) { if ( line.startsWith( combinedLocale ) ) { @@ -267,7 +273,9 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, // If we cannot make a good choice for a given country we go with the LANG // setting, which defaults to en_US.UTF-8 UTF-8 if all else fails. if ( lc_formats.isEmpty() ) + { lc_formats = lang; + } return LocaleConfiguration( lang, lc_formats ); } @@ -276,54 +284,36 @@ LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, bool LocaleConfiguration::isEmpty() const { - return m_lang.isEmpty() && - lc_numeric.isEmpty() && - lc_time.isEmpty() && - lc_monetary.isEmpty() && - lc_paper.isEmpty() && - lc_name.isEmpty() && - lc_address.isEmpty() && - lc_telephone.isEmpty() && - lc_measurement.isEmpty() && - lc_identification.isEmpty(); + return m_lang.isEmpty() && lc_numeric.isEmpty() && lc_time.isEmpty() && lc_monetary.isEmpty() && lc_paper.isEmpty() + && lc_name.isEmpty() && lc_address.isEmpty() && lc_telephone.isEmpty() && lc_measurement.isEmpty() + && lc_identification.isEmpty(); } +/// @brief Sets @p value on @p key in the @p map if @p value is non-empty +static inline void +add_lc( QMap< QString, QString >& map, const char* key, const QString& value ) +{ + if ( !value.isEmpty() ) + { + map.insert( key, value ); + } +} QMap< QString, QString > LocaleConfiguration::toMap() const { QMap< QString, QString > map; - if ( !m_lang.isEmpty() ) - map.insert( "LANG", m_lang ); - - if ( !lc_numeric.isEmpty() ) - map.insert( "LC_NUMERIC", lc_numeric ); - - if ( !lc_time.isEmpty() ) - map.insert( "LC_TIME", lc_time ); - - if ( !lc_monetary.isEmpty() ) - map.insert( "LC_MONETARY", lc_monetary ); - - if ( !lc_paper.isEmpty() ) - map.insert( "LC_PAPER", lc_paper ); - - if ( !lc_name.isEmpty() ) - map.insert( "LC_NAME", lc_name ); - - if ( !lc_address.isEmpty() ) - map.insert( "LC_ADDRESS", lc_address ); - - if ( !lc_telephone.isEmpty() ) - map.insert( "LC_TELEPHONE", lc_telephone ); - - if ( !lc_measurement.isEmpty() ) - map.insert( "LC_MEASUREMENT", lc_measurement ); - - if ( !lc_identification.isEmpty() ) - map.insert( "LC_IDENTIFICATION", lc_identification ); + add_lc( map, "LANG", m_lang ); + add_lc( map, "LC_NUMERIC", lc_numeric ); + add_lc( map, "LC_TIME", lc_time ); + add_lc( map, "LC_MONETARY", lc_monetary ); + add_lc( map, "LC_PAPER", lc_paper ); + add_lc( map, "LC_NAME", lc_name ); + add_lc( map, "LC_ADDRESS", lc_address ); + add_lc( map, "LC_TELEPHONE", lc_telephone ); + add_lc( map, "LC_MEASUREMENT", lc_measurement ); + add_lc( map, "LC_IDENTIFICATION", lc_identification ); return map; } - diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 5e99b1f37..4f4fc6b21 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -21,8 +21,8 @@ #define LOCALECONFIGURATION_H #include -#include #include +#include class LocaleConfiguration { @@ -31,13 +31,14 @@ public: explicit LocaleConfiguration(); /// @brief Create a locale with everything set to the given @p localeName explicit LocaleConfiguration( const QString& localeName /* "en_US.UTF-8" */ ) - : LocaleConfiguration( localeName, localeName ) { } + : LocaleConfiguration( localeName, localeName ) + { + } /// @brief Create a locale with language and formats separate explicit LocaleConfiguration( const QString& localeName, const QString& formatsName ); - static LocaleConfiguration fromLanguageAndLocation( const QString& language, - const QStringList& availableLocales, - const QString& countryCode ); + static LocaleConfiguration + fromLanguageAndLocation( const QString& language, const QStringList& availableLocales, const QString& countryCode ); bool isEmpty() const; @@ -55,8 +56,8 @@ public: // These become all uppercase in locale.conf, but we keep them lowercase here to // avoid confusion with locale.h. - QString lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address, - lc_telephone, lc_measurement, lc_identification; + QString lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address, lc_telephone, lc_measurement, + lc_identification; // If the user has explicitly selected language (from the dialog) // or numbers format, set these to avoid implicit changes to them. @@ -67,9 +68,10 @@ private: QString m_languageLocaleBcp47; }; -inline QDebug& operator <<( QDebug& s, const LocaleConfiguration& l ) +inline QDebug& +operator<<( QDebug& s, const LocaleConfiguration& l ) { return s << l.language() << '(' << l.toBcp47() << ") +" << l.lc_numeric; } -#endif // LOCALECONFIGURATION_H +#endif // LOCALECONFIGURATION_H diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index f6cdba436..c1df7c81c 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -28,6 +28,7 @@ #include "Settings.h" #include "locale/Label.h" +#include "locale/TimeZone.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Retranslator.h" @@ -35,11 +36,13 @@ #include #include #include -#include #include +#include LocalePage::LocalePage( QWidget* parent ) : QWidget( parent ) + , m_regionList( CalamaresUtils::Locale::TZRegion::fromZoneTab() ) + , m_regionModel( std::make_unique< CalamaresUtils::Locale::CStringListModel >( m_regionList ) ) , m_blockTzWidgetSet( false ) { QBoxLayout* mainLayout = new QVBoxLayout; @@ -99,188 +102,47 @@ LocalePage::LocalePage( QWidget* parent ) setLayout( mainLayout ); - connect( m_regionCombo, - static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), - [this]( int currentIndex ) - { - Q_UNUSED( currentIndex ) - QHash< QString, QList< LocaleGlobal::Location > > regions = LocaleGlobal::getLocations(); - if ( !regions.contains( m_regionCombo->currentData().toString() ) ) - return; + 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 ); - m_zoneCombo->blockSignals( true ); - - m_zoneCombo->clear(); - - const QList< LocaleGlobal::Location > zones = regions.value( m_regionCombo->currentData().toString() ); - for ( const LocaleGlobal::Location& zone : zones ) - { - m_zoneCombo->addItem( LocaleGlobal::Location::pretty( zone.zone ), zone.zone ); - } - - m_zoneCombo->model()->sort( 0 ); - - m_zoneCombo->blockSignals( false ); - - m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); - } ); - - connect( m_zoneCombo, - static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), - [this]( int currentIndex ) - { - Q_UNUSED( currentIndex ) - if ( !m_blockTzWidgetSet ) - m_tzWidget->setCurrentLocation( m_regionCombo->currentData().toString(), - m_zoneCombo->currentData().toString() ); - - updateGlobalStorage(); - } ); - - connect( m_tzWidget, &TimeZoneWidget::locationChanged, - [this]( LocaleGlobal::Location location ) - { - m_blockTzWidgetSet = true; - - // Set region index - int index = m_regionCombo->findData( location.region ); - if ( index < 0 ) - return; - - m_regionCombo->setCurrentIndex( index ); - - // Set zone index - index = m_zoneCombo->findData( location.zone ); - if ( index < 0 ) - return; - - m_zoneCombo->setCurrentIndex( index ); - - m_blockTzWidgetSet = false; - - updateGlobalStorage(); - } ); - - connect( m_localeChangeButton, &QPushButton::clicked, - [this] - { - LCLocaleDialog* dlg = - new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? - guessLocaleConfiguration().language() : - m_selectedLocaleConfiguration.language(), - m_localeGenLines, - this ); - dlg->exec(); - if ( dlg->result() == QDialog::Accepted && - !dlg->selectedLCLocale().isEmpty() ) - { - m_selectedLocaleConfiguration.setLanguage( dlg->selectedLCLocale() ); - m_selectedLocaleConfiguration.explicit_lang = true; - this->updateGlobalLocale(); - this->updateLocaleLabels(); - } - - dlg->deleteLater(); - } ); - - connect( m_formatsChangeButton, &QPushButton::clicked, - [this] - { - LCLocaleDialog* dlg = - new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? - guessLocaleConfiguration().lc_numeric : - m_selectedLocaleConfiguration.lc_numeric, - m_localeGenLines, - this ); - dlg->exec(); - if ( dlg->result() == QDialog::Accepted && - !dlg->selectedLCLocale().isEmpty() ) - { - // TODO: improve the granularity of this setting. - m_selectedLocaleConfiguration.lc_numeric = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_time = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_monetary = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_paper = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_name = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_address = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_telephone = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_measurement = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.lc_identification = dlg->selectedLCLocale(); - m_selectedLocaleConfiguration.explicit_lc = true; - - this->updateLocaleLabels(); - } - - dlg->deleteLater(); - - } ); - - CALAMARES_RETRANSLATE( - m_regionLabel->setText( tr( "Region:" ) ); - m_zoneLabel->setText( tr( "Zone:" ) ); - - updateLocaleLabels(); - - m_localeChangeButton->setText( tr( "&Change..." ) ); - m_formatsChangeButton->setText( tr( "&Change..." ) ); - ) + CALAMARES_RETRANSLATE_SLOT( &LocalePage::updateLocaleLabels ) } LocalePage::~LocalePage() -{} +{ + qDeleteAll( m_regionList ); +} void LocalePage::updateLocaleLabels() { - LocaleConfiguration lc = m_selectedLocaleConfiguration.isEmpty() ? - guessLocaleConfiguration() : - m_selectedLocaleConfiguration; + m_regionLabel->setText( tr( "Region:" ) ); + 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 ) +LocalePage::init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ) { - m_regionCombo->blockSignals( true ); - m_zoneCombo->blockSignals( true ); - - // Setup locations - QHash< QString, QList< LocaleGlobal::Location > > regions = LocaleGlobal::getLocations(); - - QStringList keys = regions.keys(); - keys.sort(); - - foreach ( const QString& key, keys ) - { - m_regionCombo->addItem( LocaleGlobal::Location::pretty( key ), key ); - } - - m_regionCombo->blockSignals( false ); - m_zoneCombo->blockSignals( false ); + using namespace CalamaresUtils::Locale; + m_regionCombo->setModel( m_regionModel.get() ); m_regionCombo->currentIndexChanged( m_regionCombo->currentIndex() ); - // Default location - auto containsLocation = []( const QList< LocaleGlobal::Location >& locations, - const QString& zone ) -> bool - { - for ( const LocaleGlobal::Location& location : locations ) - { - if ( location.zone == zone ) - return true; - } - return false; - }; - - if ( keys.contains( initialRegion ) && - containsLocation( regions.value( initialRegion ), initialZone ) ) + auto* region = m_regionList.find< TZRegion >( initialRegion ); + if ( region && region->zones().find< TZZone >( initialZone ) ) { m_tzWidget->setCurrentLocation( initialRegion, initialZone ); } @@ -288,7 +150,6 @@ LocalePage::init( const QString& initialRegion, { m_tzWidget->setCurrentLocation( "America", "New_York" ); } - emit m_tzWidget->locationChanged( m_tzWidget->getCurrentLocation() ); // 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 @@ -298,14 +159,13 @@ LocalePage::init( const QString& initialRegion, QFile supported( "/usr/share/i18n/SUPPORTED" ); QByteArray ba; - if ( supported.exists() && - supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) + 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 ) + for ( const QByteArray& line : lines ) { m_localeGenLines.append( QString::fromLatin1( line.simplified() ) ); } @@ -321,28 +181,32 @@ LocalePage::init( const QString& initialRegion, else { cWarning() << "Cannot open file" << localeGenPath - << ". Assuming the supported languages are already built into " - "the locale archive."; + << ". 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 ) + for ( const QByteArray& line : lines ) { - if ( line.startsWith( "## " ) || - line.startsWith( "# " ) || - line.simplified() == "#" ) + 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 ); } @@ -351,41 +215,44 @@ LocalePage::init( const QString& initialRegion, 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() ? QLatin1Literal("/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. + << "The locale and localecfg modules will be broken as long as this " + "system does not provide" + << "\n\t " + << "* a well-formed" << supported.fileName() << "\n\tOR" + << "* a well-formed" + << ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR" + << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; + return; // something went wrong and there's nothing we can do about it. } // Assuming we have a list of supported locales, we usually only want UTF-8 ones // because it's not 1995. for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ) { - if ( !it->contains( "UTF-8", Qt::CaseInsensitive ) && - !it->contains( "utf8", Qt::CaseInsensitive ) ) + if ( !it->contains( "UTF-8", Qt::CaseInsensitive ) && !it->contains( "utf8", Qt::CaseInsensitive ) ) + { it = m_localeGenLines.erase( it ); + } else + { ++it; + } } // We strip " UTF-8" from "en_US.UTF-8 UTF-8" because it's redundant redundant. for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ++it ) { if ( it->endsWith( " UTF-8" ) ) + { it->chop( 6 ); + } *it = it->simplified(); } updateGlobalStorage(); } -std::pair< QString, QString > LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const +std::pair< QString, QString > +LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const { using CalamaresUtils::Locale::Label; @@ -401,14 +268,11 @@ QString LocalePage::prettyStatus() const { QString status; - status += tr( "Set timezone to %1/%2.
" ) - .arg( m_regionCombo->currentText() ) - .arg( m_zoneCombo->currentText() ); + 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); + LocaleConfiguration lc + = m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration() : m_selectedLocaleConfiguration; + auto labels = prettyLocaleStatus( lc ); status += labels.first + "
"; status += labels.second + "
"; @@ -416,13 +280,13 @@ LocalePage::prettyStatus() const } -QList< Calamares::job_ptr > +Calamares::JobList LocalePage::createJobs() { QList< Calamares::job_ptr > list; - LocaleGlobal::Location location = m_tzWidget->getCurrentLocation(); + const CalamaresUtils::Locale::TZZone* location = m_tzWidget->currentLocation(); - Calamares::Job* j = new SetTimezoneJob( location.region, location.zone ); + Calamares::Job* j = new SetTimezoneJob( location->region(), location->zone() ); list.append( Calamares::job_ptr( j ) ); return list; @@ -432,9 +296,8 @@ LocalePage::createJobs() QMap< QString, QString > LocalePage::localesMap() { - return m_selectedLocaleConfiguration.isEmpty() ? - guessLocaleConfiguration().toMap() : - m_selectedLocaleConfiguration.toMap(); + return m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().toMap() + : m_selectedLocaleConfiguration.toMap(); } @@ -442,8 +305,7 @@ void LocalePage::onActivate() { m_regionCombo->setFocus(); - if ( m_selectedLocaleConfiguration.isEmpty() || - !m_selectedLocaleConfiguration.explicit_lang ) + if ( m_selectedLocaleConfiguration.isEmpty() || !m_selectedLocaleConfiguration.explicit_lang ) { auto newLocale = guessLocaleConfiguration(); m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); @@ -456,16 +318,15 @@ LocalePage::onActivate() LocaleConfiguration LocalePage::guessLocaleConfiguration() const { - return LocaleConfiguration::fromLanguageAndLocation( QLocale().name(), - m_localeGenLines, - m_tzWidget->getCurrentLocation().country ); + return LocaleConfiguration::fromLanguageAndLocation( + QLocale().name(), m_localeGenLines, m_tzWidget->currentLocation()->country() ); } void LocalePage::updateGlobalLocale() { - auto *gs = Calamares::JobQueue::instance()->globalStorage(); + auto* gs = Calamares::JobQueue::instance()->globalStorage(); const QString bcp47 = m_selectedLocaleConfiguration.toBcp47(); gs->insert( "locale", bcp47 ); } @@ -474,14 +335,14 @@ LocalePage::updateGlobalLocale() void LocalePage::updateGlobalStorage() { - auto *gs = Calamares::JobQueue::instance()->globalStorage(); + auto* gs = Calamares::JobQueue::instance()->globalStorage(); - LocaleGlobal::Location location = m_tzWidget->getCurrentLocation(); - bool locationChanged = ( location.region != gs->value( "locationRegion" ) ) || - ( location.zone != gs->value( "locationZone" ) ); + 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 ); + gs->insert( "locationRegion", location->region() ); + gs->insert( "locationZone", location->zone() ); updateGlobalLocale(); @@ -491,18 +352,17 @@ LocalePage::updateGlobalStorage() if ( locationChanged && Calamares::Settings::instance()->doChroot() ) { QProcess::execute( "timedatectl", // depends on systemd - { "set-timezone", - location.region + '/' + location.zone } ); + { "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 ) + if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lang ) + { newLocale.setLanguage( m_selectedLocaleConfiguration.language() ); - if ( !m_selectedLocaleConfiguration.isEmpty() && - m_selectedLocaleConfiguration.explicit_lc ) + } + if ( !m_selectedLocaleConfiguration.isEmpty() && m_selectedLocaleConfiguration.explicit_lc ) { newLocale.lc_numeric = m_selectedLocaleConfiguration.lc_numeric; newLocale.lc_time = m_selectedLocaleConfiguration.lc_time; @@ -520,3 +380,112 @@ LocalePage::updateGlobalStorage() 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 ) + { + return; + } + + m_zoneCombo->blockSignals( true ); + m_zoneCombo->setModel( new CStringListModel( region->zones() ) ); + m_zoneCombo->blockSignals( false ); + m_zoneCombo->currentIndexChanged( m_zoneCombo->currentIndex() ); +} + +void +LocalePage::zoneChanged( int currentIndex ) +{ + Q_UNUSED( currentIndex ) + if ( !m_blockTzWidgetSet ) + m_tzWidget->setCurrentLocation( m_regionCombo->currentData().toString(), + m_zoneCombo->currentData().toString() ); + + updateGlobalStorage(); +} + +void +LocalePage::locationChanged( const CalamaresUtils::Locale::TZZone* location ) +{ + m_blockTzWidgetSet = true; + + // Set region index + int index = m_regionCombo->findData( location->region() ); + if ( index < 0 ) + { + return; + } + + m_regionCombo->setCurrentIndex( index ); + + // Set zone index + index = m_zoneCombo->findData( location->zone() ); + if ( index < 0 ) + { + return; + } + + 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 ); + dlg->exec(); + if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) + { + m_selectedLocaleConfiguration.setLanguage( dlg->selectedLCLocale() ); + m_selectedLocaleConfiguration.explicit_lang = true; + this->updateGlobalLocale(); + this->updateLocaleLabels(); + } + + dlg->deleteLater(); +} + + +void +LocalePage::changeFormats() +{ + LCLocaleDialog* dlg + = new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? guessLocaleConfiguration().lc_numeric + : m_selectedLocaleConfiguration.lc_numeric, + m_localeGenLines, + this ); + dlg->exec(); + if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) + { + // TODO: improve the granularity of this setting. + m_selectedLocaleConfiguration.lc_numeric = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_time = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_monetary = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_paper = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_name = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_address = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_telephone = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_measurement = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_identification = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.explicit_lc = true; + + this->updateLocaleLabels(); + } + + dlg->deleteLater(); +} diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 20ad444c9..d6aaa6de8 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -21,10 +21,15 @@ #define LOCALEPAGE_H #include "LocaleConfiguration.h" +#include "timezonewidget/localeglobal.h" + #include "Job.h" +#include "locale/TimeZone.h" #include +#include + class QComboBox; class QLabel; class QPushButton; @@ -37,9 +42,7 @@ public: explicit LocalePage( QWidget* parent = nullptr ); virtual ~LocalePage(); - void init( const QString& initialRegion, - const QString& initialZone, - const QString& localeGenPath ); + void init( const QString& initialRegion, const QString& initialZone, const QString& localeGenPath ); QString prettyStatus() const; @@ -65,6 +68,16 @@ private: void updateGlobalStorage(); void updateLocaleLabels(); + void regionChanged( int currentIndex ); + void zoneChanged( int currentIndex ); + void locationChanged( const CalamaresUtils::Locale::TZZone* 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; @@ -83,4 +96,4 @@ private: bool m_blockTzWidgetSet; }; -#endif // LOCALEPAGE_H +#endif // LOCALEPAGE_H diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 29006ec33..4fa219065 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -27,7 +27,7 @@ #include "JobQueue.h" #include "geoip/Handler.h" - +#include "network/Manager.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Variant.h" @@ -35,56 +35,22 @@ #include #include -#include -#include #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleViewStepFactory, registerPlugin< LocaleViewStep >(); ) LocaleViewStep::LocaleViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new QWidget() ) - , m_actualWidget( new LocalePage() ) + , m_actualWidget( nullptr ) , m_nextEnabled( false ) + , m_geoip( nullptr ) { QBoxLayout* mainLayout = new QHBoxLayout; m_widget->setLayout( mainLayout ); CalamaresUtils::unmarginLayout( mainLayout ); - m_waitingWidget = new WaitingWidget( tr( "Loading location data..." ) ); - mainLayout->addWidget( m_waitingWidget ); - - connect( &m_initWatcher, &QFutureWatcher< void >::finished, - this, [=] - { - bool hasInternet = Calamares::JobQueue::instance()->globalStorage() - ->value( "hasInternet" ).toBool(); - if ( m_geoipUrl.isEmpty() || !hasInternet ) - setUpPage(); - else - fetchGeoIpTimezone(); - }); - - QFuture< void > initFuture = QtConcurrent::run( [=] - { - LocaleGlobal::init(); - if ( m_geoipUrl.isEmpty() ) - return; - - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - - // Max 10sec wait for RequirementsChecker to finish, assuming the welcome - // module is used. - // If welcome is not used, either "hasInternet" should be set by other means, - // or the GeoIP feature should be disabled. - for ( int i = 0; i < 10; ++i ) - if ( !gs->contains( "hasInternet" ) ) - QThread::sleep( 1 ); - } ); - - m_initWatcher.setFuture( initFuture ); - emit nextStatusChanged( m_nextEnabled ); } @@ -92,19 +58,22 @@ LocaleViewStep::LocaleViewStep( QObject* parent ) LocaleViewStep::~LocaleViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } void LocaleViewStep::setUpPage() { - m_actualWidget->init( m_startingTimezone.first, - m_startingTimezone.second, - m_localeGenPath ); - m_widget->layout()->removeWidget( m_waitingWidget ); - m_waitingWidget->deleteLater(); + if ( !m_actualWidget ) + { + m_actualWidget = new LocalePage(); + } + m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath ); m_widget->layout()->addWidget( m_actualWidget ); + m_nextEnabled = true; emit nextStatusChanged( m_nextEnabled ); } @@ -113,16 +82,14 @@ LocaleViewStep::setUpPage() void LocaleViewStep::fetchGeoIpTimezone() { - CalamaresUtils::GeoIP::Handler h( m_geoipStyle, m_geoipUrl, m_geoipSelector ); - if ( h.isValid() ) + if ( m_geoip && m_geoip->isValid() ) { - m_startingTimezone = h.get(); + m_startingTimezone = m_geoip->get(); if ( !m_startingTimezone.isValid() ) - cWarning() << "GeoIP lookup at" << m_geoipUrl << "failed."; + { + cWarning() << "GeoIP lookup at" << m_geoip->url() << "failed."; + } } - else - cWarning() << "GeoIP Style" << m_geoipStyle << "is not recognized."; - setUpPage(); } @@ -175,7 +142,7 @@ LocaleViewStep::isAtEnd() const } -QList< Calamares::job_ptr > +Calamares::JobList LocaleViewStep::jobs() const { return m_jobs; @@ -185,6 +152,10 @@ LocaleViewStep::jobs() const void LocaleViewStep::onActivate() { + if ( !m_actualWidget ) + { + setUpPage(); + } m_actualWidget->onActivate(); } @@ -192,18 +163,25 @@ LocaleViewStep::onActivate() void LocaleViewStep::onLeave() { - m_jobs.clear(); - m_jobs.append( m_actualWidget->createJobs() ); + if ( m_actualWidget ) + { + m_jobs = m_actualWidget->createJobs(); + m_prettyStatus = m_actualWidget->prettyStatus(); - 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() ); + } - 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 ); + Calamares::JobQueue::instance()->globalStorage()->insert( "localeConf", vm ); + } + else + { + m_jobs.clear(); + Calamares::JobQueue::instance()->globalStorage()->remove( "localeConf" ); + } } @@ -218,35 +196,51 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) } else { - m_startingTimezone = CalamaresUtils::GeoIP::RegionZonePair( QStringLiteral( "America" ), QStringLiteral( "New_York" ) ); + 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 ) { - m_geoipUrl = CalamaresUtils::getString( geoip, "url" ); - m_geoipStyle = CalamaresUtils::getString( geoip, "style" ); - m_geoipSelector = CalamaresUtils::getString( geoip, "selector" ); - } - else - { - // Optional - m_geoipUrl = CalamaresUtils::getString( configurationMap, "geoipUrl" ); - m_geoipStyle = CalamaresUtils::getString( configurationMap, "geoipStyle" ); - m_geoipSelector = CalamaresUtils::getString( configurationMap, "geoipSelector" ); + QString url = CalamaresUtils::getString( geoip, "url" ); + QString style = CalamaresUtils::getString( geoip, "style" ); + QString selector = CalamaresUtils::getString( geoip, "selector" ); - if ( !m_geoipUrl.isEmpty() && ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" ) ) + m_geoip = std::make_unique< CalamaresUtils::GeoIP::Handler >( style, url, selector ); + if ( !m_geoip->isValid() ) { - m_geoipStyle = "json"; - m_geoipUrl.append( "/json/" ); + cWarning() << "GeoIP Style" << style << "is not recognized."; } - - if ( !m_geoipUrl.isEmpty() ) - cWarning() << "Legacy-style GeoIP configuration is deprecated. Use geoip: map."; } } + +Calamares::RequirementsList +LocaleViewStep::checkRequirements() +{ + LocaleGlobal::init(); + if ( m_geoip && m_geoip->isValid() ) + { + auto& network = CalamaresUtils::Network::Manager::instance(); + if ( network.hasInternet() ) + { + fetchGeoIpTimezone(); + } + else + { + if ( network.synchronousPing( m_geoip->url() ) ) + { + fetchGeoIpTimezone(); + } + } + } + + return Calamares::RequirementsList(); +} diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 8ab50b75d..eb8d64177 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -20,6 +20,7 @@ #ifndef LOCALEVIEWSTEP_H #define LOCALEVIEWSTEP_H +#include "geoip/Handler.h" #include "geoip/Interface.h" #include "utils/PluginFactory.h" #include "viewpages/ViewStep.h" @@ -29,8 +30,9 @@ #include #include +#include + class LocalePage; -class WaitingWidget; class PLUGINDLLEXPORT LocaleViewStep : public Calamares::ViewStep { @@ -51,21 +53,22 @@ public: bool isAtBeginning() const override; bool isAtEnd() const override; - QList< Calamares::job_ptr > jobs() const override; + Calamares::JobList jobs() const override; void onActivate() override; void onLeave() override; 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; - QFutureWatcher< void > m_initWatcher; - WaitingWidget* m_waitingWidget; LocalePage* m_actualWidget; bool m_nextEnabled; @@ -74,13 +77,10 @@ private: CalamaresUtils::GeoIP::RegionZonePair m_startingTimezone; QString m_localeGenPath; - QString m_geoipUrl; // The URL, depening on style might be modified on lookup - QString m_geoipStyle; // String selecting which kind of geoip data to expect - QString m_geoipSelector; // String selecting data from the geoip lookup - - QList< Calamares::job_ptr > m_jobs; + Calamares::JobList m_jobs; + std::unique_ptr< CalamaresUtils::GeoIP::Handler > m_geoip; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( LocaleViewStepFactory ) -#endif // LOCALEVIEWSTEP_H +#endif // LOCALEVIEWSTEP_H diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index 71a693df7..adcac13c1 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -19,11 +19,11 @@ #include -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" #include "Settings.h" -#include "utils/Logger.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" #include #include @@ -51,13 +51,13 @@ SetTimezoneJob::exec() // to a running timedated over D-Bus), and we have code that works if ( !Calamares::Settings::instance()->doChroot() ) { - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "timedatectl", - "set-timezone", - m_region + '/' + m_zone } ); + int ec = CalamaresUtils::System::instance()->targetEnvCall( + { "timedatectl", "set-timezone", m_region + '/' + m_zone } ); if ( !ec ) + { return Calamares::JobResult::ok(); + } } QString localtimeSlink( "/etc/localtime" ); @@ -72,31 +72,21 @@ SetTimezoneJob::exec() tr( "Bad path: %1" ).arg( zoneFile.absolutePath() ) ); // Make sure /etc/localtime doesn't exist, otherwise symlinking will fail - CalamaresUtils::System::instance()-> - targetEnvCall( { "rm", - "-f", - localtimeSlink } ); + CalamaresUtils::System::instance()->targetEnvCall( { "rm", "-f", localtimeSlink } ); - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "ln", - "-s", - zoneinfoPath, - localtimeSlink } ); + int ec = CalamaresUtils::System::instance()->targetEnvCall( { "ln", "-s", zoneinfoPath, localtimeSlink } ); if ( ec ) - return Calamares::JobResult::error( tr( "Cannot set timezone." ), - tr( "Link creation failed, target: %1; link name: %2" ) - .arg( zoneinfoPath ) - .arg( "/etc/localtime" ) ); + return Calamares::JobResult::error( + tr( "Cannot set timezone." ), + tr( "Link creation failed, target: %1; link name: %2" ).arg( zoneinfoPath ).arg( "/etc/localtime" ) ); QFile timezoneFile( gs->value( "rootMountPoint" ).toString() + "/etc/timezone" ); - if ( !timezoneFile.open( QIODevice::WriteOnly | - QIODevice::Text | - QIODevice::Truncate ) ) - return Calamares::JobResult::error( tr( "Cannot set timezone,"), - tr( "Cannot open /etc/timezone for writing")); + if ( !timezoneFile.open( QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate ) ) + return Calamares::JobResult::error( tr( "Cannot set timezone," ), + tr( "Cannot open /etc/timezone for writing" ) ); - QTextStream out(&timezoneFile); + QTextStream out( &timezoneFile ); out << m_region << '/' << m_zone << "\n"; timezoneFile.close(); diff --git a/src/modules/locale/SetTimezoneJob.h b/src/modules/locale/SetTimezoneJob.h index 7f50d8744..f7f2331ad 100644 --- a/src/modules/locale/SetTimezoneJob.h +++ b/src/modules/locale/SetTimezoneJob.h @@ -26,8 +26,7 @@ class SetTimezoneJob : public Calamares::Job { Q_OBJECT public: - SetTimezoneJob( const QString& region, - const QString& zone ); + SetTimezoneJob( const QString& region, const QString& zone ); QString prettyName() const override; Calamares::JobResult exec() override; diff --git a/src/modules/locale/Tests.cpp b/src/modules/locale/Tests.cpp index 0e1a3eb48..b8e471339 100644 --- a/src/modules/locale/Tests.cpp +++ b/src/modules/locale/Tests.cpp @@ -25,19 +25,17 @@ QTEST_GUILESS_MAIN( LocaleTests ) -LocaleTests::LocaleTests() +LocaleTests::LocaleTests() {} + +LocaleTests::~LocaleTests() {} + +void +LocaleTests::initTestCase() { } -LocaleTests::~LocaleTests() -{ -} - -void LocaleTests::initTestCase() -{ -} - -void LocaleTests::testEmptyLocaleConfiguration() +void +LocaleTests::testEmptyLocaleConfiguration() { LocaleConfiguration lc; @@ -45,7 +43,8 @@ void LocaleTests::testEmptyLocaleConfiguration() QCOMPARE( lc.toBcp47(), QString() ); } -void LocaleTests::testDefaultLocaleConfiguration() +void +LocaleTests::testDefaultLocaleConfiguration() { LocaleConfiguration lc( "en_US.UTF-8" ); QVERIFY( !lc.isEmpty() ); @@ -58,7 +57,8 @@ void LocaleTests::testDefaultLocaleConfiguration() QCOMPARE( lc2.toBcp47(), "de" ); } -void LocaleTests::testSplitLocaleConfiguration() +void +LocaleTests::testSplitLocaleConfiguration() { LocaleConfiguration lc( "en_US.UTF-8", "de_DE.UTF-8" ); QVERIFY( !lc.isEmpty() ); @@ -76,5 +76,4 @@ void LocaleTests::testSplitLocaleConfiguration() QVERIFY( !lc3.isEmpty() ); QCOMPARE( lc3.toBcp47(), "da" ); QCOMPARE( lc3.lc_numeric, "de_DE.UTF-8" ); - } diff --git a/src/modules/locale/locale.conf b/src/modules/locale/locale.conf index 7c2ec332c..4beb4fe85 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -23,6 +23,7 @@ zone: "New_York" # # Enable only when your Distribution is using an # custom path for locale.gen +# #localeGenPath: "PATH_TO/locale.gen" # GeoIP based Language settings: Leave commented out to disable GeoIP. @@ -78,14 +79,19 @@ zone: "New_York" # Europe/Brussels # ``` # -# To accomodate providers of GeoIP timezone data with peculiar timezone +# To accommodate providers of GeoIP timezone data with peculiar timezone # naming conventions, the following cleanups are performed automatically: # - backslashes are removed # - spaces are replaced with _ # # Legacy settings "geoipStyle", "geoipUrl" and "geoipSelector" # in the top-level are still supported, but I'd advise against. +# +# To disable GeoIP checking, either comment-out the entire geoip section, +# or set the *style* key to an unsupported format (e.g. `none`). +# Also, note the analogous feature in src/modules/welcome/welcome.conf. +# geoip: - style: "json" - url: "https://geoip.kde.org/v1/calamares" + style: "json" + url: "https://geoip.kde.org/v1/calamares" selector: "" # leave blank for the default diff --git a/src/modules/locale/timezonewidget/localeglobal.cpp b/src/modules/locale/timezonewidget/localeglobal.cpp index 6303ffdcb..d0e889148 100644 --- a/src/modules/locale/timezonewidget/localeglobal.cpp +++ b/src/modules/locale/timezonewidget/localeglobal.cpp @@ -22,14 +22,15 @@ #include "localeglobal.h" +#include "locale/TimeZone.h" + #include //### //### Private variables //### -QHash > > LocaleGlobal::locales; -QHash > LocaleGlobal::locations; +QHash< QString, QHash< QString, QList< LocaleGlobal::Locale > > > LocaleGlobal::locales; //### @@ -37,158 +38,89 @@ QHash > LocaleGlobal::locations; //### -QString -LocaleGlobal::Location::pretty( const QString& s ) -{ - return QString( s ).replace( '_', ' ' ).simplified(); -} - - -QString -LocaleGlobal::Location::comment() const -{ - QTimeZone qtz = QTimeZone( QString( "%1/%2" ) - .arg( region ) - .arg( zone ).toLatin1() ); - return qtz.comment(); -} - - void -LocaleGlobal::init() { +LocaleGlobal::init() +{ // TODO: Error handling initLocales(); - initLocations(); } - QHash< QString, QHash< QString, QList< LocaleGlobal::Locale > > > -LocaleGlobal::getLocales() { +LocaleGlobal::getLocales() +{ return locales; } - -QHash< QString, QList< LocaleGlobal::Location > > -LocaleGlobal::getLocations() { - return locations; -} - - //### //### Private methods //### void -LocaleGlobal::initLocales() { +LocaleGlobal::initLocales() +{ + static const char LOCALESDIR[] = "/usr/share/i18n/locales"; + locales.clear(); - QStringList files = QDir(LOCALESDIR).entryList(QDir::Files, QDir::Name); + QStringList files = QDir( LOCALESDIR ).entryList( QDir::Files, QDir::Name ); - for (int i = 0; i < files.size(); ++i) { - QString filename = files.at(i); - QFile file(QString(LOCALESDIR) + "/" + filename); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + for ( int i = 0; i < files.size(); ++i ) + { + QString filename = files.at( i ); + QFile file( QString( LOCALESDIR ) + "/" + filename ); + if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { continue; + } - QTextStream in(&file); + QTextStream in( &file ); QString commentChar = "%"; Locale locale; QString lang, territory; locale.locale = filename; - while (!in.atEnd()) { + while ( !in.atEnd() ) + { QString line = in.readLine().trimmed(); - QStringList split = line.split(commentChar, QString::KeepEmptyParts).first().split(QRegExp(" (?=[^\"]*(\"[^\"]*\"[^\"]*)*$)"), QString::SkipEmptyParts); + QStringList split = line.split( commentChar, QString::KeepEmptyParts ) + .first() + .split( QRegExp( " (?=[^\"]*(\"[^\"]*\"[^\"]*)*$)" ), QString::SkipEmptyParts ); - if (split.size() < 2) + if ( split.size() < 2 ) + { continue; + } - QString sub1 = QString(split.at(0)).remove("\""); - QString sub2 = QString(split.at(1)).remove("\""); + QString sub1 = QString( split.at( 0 ) ).remove( "\"" ); + QString sub2 = QString( split.at( 1 ) ).remove( "\"" ); - if (sub1 == "comment_char") + if ( sub1 == "comment_char" ) + { commentChar = sub2; - else if (sub1 == "title") + } + else if ( sub1 == "title" ) + { locale.description = sub2; - else if (sub1 == "territory") - territory= sub2; - else if (sub1 == "language") + } + else if ( sub1 == "territory" ) + { + territory = sub2; + } + else if ( sub1 == "language" ) + { lang = sub2; + } } - if (lang.isEmpty() || territory.isEmpty()) + if ( lang.isEmpty() || territory.isEmpty() ) + { continue; + } - locales[lang][territory].append(locale); + locales[ lang ][ territory ].append( locale ); } } - - - -void -LocaleGlobal::initLocations() { - locations.clear(); - - QFile file(TZ_DATA_FILE); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return; - - QTextStream in(&file); - while (!in.atEnd()) { - QString line = in.readLine().trimmed().split('#', QString::KeepEmptyParts).first().trimmed(); - if (line.isEmpty()) - continue; - - QStringList list = line.split(QRegExp("[\t ]"), QString::SkipEmptyParts); - if (list.size() < 3) - continue; - - Location location; - QStringList timezoneParts = list.at(2).split('/', QString::SkipEmptyParts); - int cooSplitPos = QString(list.at(1)).remove(0, 1).indexOf(QRegExp("[-+]")) + 1; - - if (timezoneParts.size() < 2) - continue; - - QString countryCode = list.at(0).trimmed(); - if (countryCode.size() != 2) - continue; - - location.region = timezoneParts.takeFirst(); - location.zone = timezoneParts.join( '/' ); - location.latitude = getRightGeoLocation(list.at(1).mid(0, cooSplitPos)); - location.longitude = getRightGeoLocation(list.at(1).mid(cooSplitPos)); - location.country = countryCode; - - locations[location.region].append(location); - } -} - - - -double -LocaleGlobal::getRightGeoLocation(QString str) { - double sign = 1, num = 0.00; - - // Determind sign - if (str.startsWith('-')) { - sign = -1; - str.remove(0, 1); - } - else if (str.startsWith('+')) { - str.remove(0, 1); - } - - - if (str.length() == 4 || str.length() == 6) - num = str.mid(0, 2).toDouble() + str.mid(2, 2).toDouble() / 60; - else if (str.length() == 5 || str.length() == 7) - num = str.mid(0, 3).toDouble() + str.mid(3, 2).toDouble() / 60; - - return sign * num; -} - diff --git a/src/modules/locale/timezonewidget/localeglobal.h b/src/modules/locale/timezonewidget/localeglobal.h index 1a8f796d4..1dc9548d0 100644 --- a/src/modules/locale/timezonewidget/localeglobal.h +++ b/src/modules/locale/timezonewidget/localeglobal.h @@ -24,17 +24,24 @@ #ifndef LOCALEGLOBAL_H #define LOCALEGLOBAL_H -#include -#include -#include +#include #include -#include -#include +#include #include +#include #include #include -#include -#include "localeconst.h" +#include +#include +#include + +namespace CalamaresUtils +{ +namespace Locale +{ +class TZZone; +} +} // namespace CalamaresUtils class LocaleGlobal { @@ -44,30 +51,13 @@ public: QString description, locale; }; - struct Location - { - QString region, zone, country; - double latitude, longitude; - static QString pretty( const QString& s ); - QString comment() const; - }; - static void init(); - static QHash > > getLocales(); - static QHash > getLocations(); + static QHash< QString, QHash< QString, QList< LocaleGlobal::Locale > > > getLocales(); private: - static QHash > > locales; - static QHash > locations; + static QHash< QString, QHash< QString, QList< LocaleGlobal::Locale > > > locales; static void initLocales(); - static void initLocations(); - static double getRightGeoLocation( QString str ); }; -inline QDebug& operator <<( QDebug& s, const LocaleGlobal::Location& l ) -{ - return s << l.region << '/' << l.zone << '(' << l.country << ") @N" << l.latitude << 'E' << l.longitude; -} - -#endif // LOCALEGLOBAL_H +#endif // LOCALEGLOBAL_H diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index a228f000c..400af0841 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017-2018, Adriaan de Groot + * Copyright 2017-2019, Adriaan de Groot * * Originally from the Manjaro Installation Framework * by Roland Singer @@ -23,10 +23,13 @@ #include +#include "locale/TimeZone.h" #include "utils/Logger.h" #include "timezonewidget.h" +// Pixel value indicating that a spot is outside of a zone +#define RGB_TRANSPARENT 0 static constexpr double MAP_Y_OFFSET = 0.125; static constexpr double MAP_X_OFFSET = -0.0370; @@ -34,11 +37,11 @@ constexpr static double MATH_PI = 3.14159265; #ifdef DEBUG_TIMEZONES // Adds a label to the timezone with this name -constexpr static QLatin1Literal ZONE_NAME( "zone" ); +constexpr static QLatin1String ZONE_NAME( "zone" ); #endif -TimeZoneWidget::TimeZoneWidget( QWidget* parent ) : - QWidget( parent ) +TimeZoneWidget::TimeZoneWidget( QWidget* parent ) + : QWidget( parent ) { setMouseTracking( false ); setCursor( Qt::PointingHandCursor ); @@ -48,54 +51,67 @@ TimeZoneWidget::TimeZoneWidget( QWidget* parent ) : font.setBold( false ); // Images - background = QImage( ":/images/bg.png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); + background = QImage( ":/images/bg.png" ); pin = QImage( ":/images/pin.png" ); +#ifdef DEBUG_TIMEZONES + if ( background.size() != QSize( 780, 340 ) ) + { + cWarning() << "Timezone background size mitsmatch" << background.size(); + } +#endif + // Set size setMinimumSize( background.size() ); setMaximumSize( background.size() ); // Zone images - QStringList zones = QString( ZONES ).split( " ", QString::SkipEmptyParts ); - for ( int i = 0; i < zones.size(); ++i ) + for ( const auto* zoneName : + { "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", "11.5", "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" } ) { - timeZoneImages.append( QImage( ":/images/timezone_" + zones.at( i ) + ".png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ); + timeZoneImages.append( QImage( QStringLiteral( ":/images/timezone_" ) + zoneName + ".png" ) ); #ifdef DEBUG_TIMEZONES - timeZoneImages.last().setText( ZONE_NAME, zones.at( i ) ); + if ( timeZoneImages.last().size() != background.size() ) + { + cWarning() << "Timezone image size mismatch" << zoneName << timeZoneImages.last().size(); + } + timeZoneImages.last().setText( ZONE_NAME, zoneName ); #endif } } -void TimeZoneWidget::setCurrentLocation( QString region, QString zone ) +void +TimeZoneWidget::setCurrentLocation( QString regionName, QString zoneName ) { - QHash > hash = LocaleGlobal::getLocations(); - - if ( !hash.contains( region ) ) - return; - - QList locations = hash.value( region ); - for ( int i = 0; i < locations.size(); ++i ) + using namespace CalamaresUtils::Locale; + const auto& regions = TZRegion::fromZoneTab(); + auto* region = regions.find< TZRegion >( regionName ); + if ( !region ) { - if ( locations.at( i ).zone == zone ) - { - setCurrentLocation( locations.at( i ) ); - break; - } + return; + } + + auto* zone = region->zones().find< TZZone >( zoneName ); + if ( zone ) + { + setCurrentLocation( zone ); } } -void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) +void +TimeZoneWidget::setCurrentLocation( const CalamaresUtils::Locale::TZZone* location ) { - currentLocation = location; + m_currentLocation = location; // Set zone - QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + QPoint pos = getLocationPosition( location ); #ifdef DEBUG_TIMEZONES - cDebug() << "Setting location" << location.region << location.zone << location.country; - cDebug() << Logger::SubEntry << "longitude" << location.longitude << "latitude" << location.latitude; + cDebug() << "Setting location" << location->region() << location->zone() << '(' << location->country() << '@' << location->latitude() << 'N' << location->longitude() << 'E' << ')'; cDebug() << Logger::SubEntry << "pixel x" << pos.x() << "pixel y" << pos.y(); bool found = false; @@ -104,7 +120,7 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) for ( int i = 0; i < timeZoneImages.size(); ++i ) { - QImage zone = timeZoneImages[i]; + QImage zone = timeZoneImages[ i ]; // If not transparent set as current if ( zone.pixel( pos ) != RGB_TRANSPARENT ) @@ -119,7 +135,9 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) cDebug() << Logger::SubEntry << "First zone found" << i << zone.text( ZONE_NAME ); } else + { cDebug() << Logger::SubEntry << "Also in zone" << i << zone.text( ZONE_NAME ); + } #else currentZoneImage = zone; break; @@ -129,16 +147,17 @@ void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location ) // Repaint widget repaint(); + emit locationChanged( m_currentLocation ); } - //### //### Private //### -QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude ) +QPoint +TimeZoneWidget::getLocationPosition( double longitude, double latitude ) { const int width = this->width(); const int height = this->height(); @@ -152,39 +171,64 @@ QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude ) // of the different cities / regions looks ok -- at least Thule ends up in the right // country, and Inuvik isn't in the ocean. if ( latitude > 70.0 ) + { y -= sin( MATH_PI * ( latitude - 70.0 ) / 56.0 ) * MAP_Y_OFFSET * height * 0.8; + } if ( latitude > 74.0 ) + { y += 4; + } if ( latitude > 69.0 ) + { y -= 2; + } if ( latitude > 59.0 ) + { y -= 4 * int( ( latitude - 54.0 ) / 5.0 ); + } if ( latitude > 54.0 ) + { y -= 2; + } if ( latitude > 49.0 ) - y -= int ( (latitude - 44.0) / 5.0 ); + { + y -= int( ( latitude - 44.0 ) / 5.0 ); + } // Far south, some stretching occurs as well, but it is less pronounced. // Move down by 1 pixel per 5 degrees past 10 south if ( latitude < 0 ) - y += int( (-latitude) / 5.0 ); + { + y += int( ( -latitude ) / 5.0 ); + } // Antarctica isn't shown on the map, but you could try clicking there if ( latitude < -60 ) + { y = height - 1; + } if ( x < 0 ) - x = width+x; + { + x = width + x; + } if ( x >= width ) + { x -= width; + } if ( y < 0 ) - y = height+y; + { + y = height + y; + } if ( y >= height ) + { y -= height; + } - return QPoint( int(x), int(y) ); + return QPoint( int( x ), int( y ) ); } -void TimeZoneWidget::paintEvent( QPaintEvent* ) +void +TimeZoneWidget::paintEvent( QPaintEvent* ) { const int width = this->width(); const int height = this->height(); @@ -201,90 +245,114 @@ void TimeZoneWidget::paintEvent( QPaintEvent* ) painter.drawImage( 0, 0, currentZoneImage ); #ifdef DEBUG_TIMEZONES - QPoint point = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + QPoint point = getLocationPosition( m_currentLocation ); // Draw latitude lines - for ( int y_lat = -50; y_lat < 80 ; y_lat+=5 ) + for ( int y_lat = -50; y_lat < 80; y_lat += 5 ) { QPen p( y_lat ? Qt::black : Qt::red ); p.setWidth( 0 ); painter.setPen( p ); QPoint latLine0( getLocationPosition( 0, y_lat ) ); - int llx = latLine0.x() + ((y_lat & 1) ? -10 : 0); + int llx = latLine0.x() + ( ( y_lat & 1 ) ? -10 : 0 ); int lly = latLine0.y(); - for ( int c = 0 ; c < width ; ++c ) + for ( int c = 0; c < width; ++c ) + { painter.drawPoint( c, lly ); + } } // Just a dot in the selected location, no label painter.setPen( Qt::red ); painter.drawPoint( point ); #else // Draw pin at current location - QPoint point = getLocationPosition( currentLocation.longitude, currentLocation.latitude ); + QPoint point = getLocationPosition( m_currentLocation ); - painter.drawImage( point.x() - pin.width()/2, point.y() - pin.height()/2, pin ); + painter.drawImage( point.x() - pin.width() / 2, point.y() - pin.height() / 2, pin ); // Draw text and box - const int textWidth = fontMetrics.width( LocaleGlobal::Location::pretty( currentLocation.zone ) ); + // .. the lambda manages deprecations: the old one works in Qt 5.9 and Qt 5.10, + // while the new one avoids deprecation messages in Qt 5.13 and later. +#if QT_VERSION >= QT_VERSION_CHECK( 5, 11, 0 ) + auto textwidth = [&]( const QString& s ) { return fontMetrics.horizontalAdvance( s ); }; +#else + auto textwidth = [&]( const QString& s ) { return fontMetrics.width( s ); }; +#endif + const int textWidth = textwidth( m_currentLocation ? m_currentLocation->tr() : QString() ); const int textHeight = fontMetrics.height(); - QRect rect = QRect( point.x() - textWidth/2 - 5, point.y() - textHeight - 8, textWidth + 10, textHeight - 2 ); + QRect rect = QRect( point.x() - textWidth / 2 - 5, point.y() - textHeight - 8, textWidth + 10, textHeight - 2 ); if ( rect.x() <= 5 ) + { rect.moveLeft( 5 ); - if ( rect.right() >= width-5 ) + } + if ( rect.right() >= width - 5 ) + { rect.moveRight( width - 5 ); + } if ( rect.y() <= 5 ) + { rect.moveTop( 5 ); - if ( rect.y() >= height-5 ) - rect.moveBottom( height-5 ); + } + if ( rect.y() >= height - 5 ) + { + rect.moveBottom( height - 5 ); + } - painter.setPen( QPen() ); // no pen + painter.setPen( QPen() ); // no pen painter.setBrush( QColor( 40, 40, 40 ) ); painter.drawRoundedRect( rect, 3, 3 ); painter.setPen( Qt::white ); - painter.drawText( rect.x() + 5, rect.bottom() - 4, LocaleGlobal::Location::pretty( currentLocation.zone ) ); + painter.drawText( rect.x() + 5, rect.bottom() - 4, m_currentLocation ? m_currentLocation->tr() : QString() ); #endif painter.end(); } - -void TimeZoneWidget::mousePressEvent( QMouseEvent* event ) +void +TimeZoneWidget::mousePressEvent( QMouseEvent* event ) { if ( event->button() != Qt::LeftButton ) + { return; + } // Set nearest location int nX = 999999, mX = event->pos().x(); int nY = 999999, mY = event->pos().y(); - QHash > hash = LocaleGlobal::getLocations(); - QHash >::iterator iter = hash.begin(); - while ( iter != hash.end() ) + using namespace CalamaresUtils::Locale; + const TZZone* closest = nullptr; + for ( const auto* region_p : TZRegion::fromZoneTab() ) { - QList locations = iter.value(); - - for ( int i = 0; i < locations.size(); ++i ) + const auto* region = dynamic_cast< const TZRegion* >( region_p ); + if ( region ) { - LocaleGlobal::Location loc = locations[i]; - QPoint locPos = getLocationPosition( loc.longitude, loc.latitude ); - - if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) ) + for ( const auto* zone_p : region->zones() ) { - currentLocation = loc; - nX = locPos.x(); - nY = locPos.y(); + const auto* zone = dynamic_cast< const TZZone* >( zone_p ); + if ( zone ) + { + QPoint locPos = 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(); + } + } } } - - ++iter; } - // Set zone image and repaint widget - setCurrentLocation( currentLocation ); - - // Emit signal - emit locationChanged( currentLocation ); + if ( closest ) + { + // Set zone image and repaint widget + setCurrentLocation( closest ); + // Emit signal + emit locationChanged( m_currentLocation ); + } } diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index dd49b3311..d91c5cf27 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -24,55 +24,48 @@ #ifndef TIMEZONEWIDGET_H #define TIMEZONEWIDGET_H -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "localeglobal.h" +#include "locale/TimeZone.h" -#define RGB_TRANSPARENT 0 -#define ZONES "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 11.5 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" -#define X_SIZE 780 -#define Y_SIZE 340 - +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class TimeZoneWidget : public QWidget { Q_OBJECT public: + using TZZone = CalamaresUtils::Locale::TZZone; + explicit TimeZoneWidget( QWidget* parent = nullptr ); - LocaleGlobal::Location getCurrentLocation() - { - return currentLocation; - } void setCurrentLocation( QString region, QString zone ); - void setCurrentLocation( LocaleGlobal::Location location ); + void setCurrentLocation( const TZZone* location ); + const TZZone* currentLocation() { return m_currentLocation; } + signals: - void locationChanged( LocaleGlobal::Location location ); + void locationChanged( const TZZone* location ); private: QFont font; QImage background, pin, currentZoneImage; - QList timeZoneImages; - LocaleGlobal::Location currentLocation; + QList< QImage > timeZoneImages; + const TZZone* m_currentLocation = nullptr; // Not owned by me - QPoint getLocationPosition( const LocaleGlobal::Location& l ) - { - return getLocationPosition( l.longitude, l.latitude ); - } + QPoint getLocationPosition( const TZZone* l ) { return getLocationPosition( l->longitude(), l->latitude() ); } QPoint getLocationPosition( double longitude, double latitude ); void paintEvent( QPaintEvent* event ); void mousePressEvent( QMouseEvent* event ); }; -#endif // TIMEZONEWIDGET_H +#endif // TIMEZONEWIDGET_H diff --git a/src/modules/luksbootkeyfile/CMakeLists.txt b/src/modules/luksbootkeyfile/CMakeLists.txt new file mode 100644 index 000000000..be0f0fa28 --- /dev/null +++ b/src/modules/luksbootkeyfile/CMakeLists.txt @@ -0,0 +1,9 @@ +calamares_add_plugin( luksbootkeyfile + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + LuksBootKeyFileJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp new file mode 100644 index 000000000..9997cc185 --- /dev/null +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp @@ -0,0 +1,214 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "LuksBootKeyFileJob.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/UMask.h" +#include "utils/Variant.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" + +LuksBootKeyFileJob::LuksBootKeyFileJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + +LuksBootKeyFileJob::~LuksBootKeyFileJob() {} + +QString +LuksBootKeyFileJob::prettyName() const +{ + return tr( "Configuring LUKS key file." ); +} + +struct LuksDevice +{ + LuksDevice( const QMap< QString, QVariant >& pinfo ) + : isValid( false ) + , isRoot( false ) + { + if ( pinfo.contains( "luksMapperName" ) ) + { + QString fs = pinfo[ "fs" ].toString(); + QString mountPoint = pinfo[ "mountPoint" ].toString(); + + if ( !mountPoint.isEmpty() || fs == QStringLiteral( "linuxswap" ) ) + { + isValid = true; + isRoot = mountPoint == '/'; + device = pinfo[ "device" ].toString(); + passphrase = pinfo[ "luksPassphrase" ].toString(); + } + } + } + + bool isValid; + bool isRoot; + QString device; + QString passphrase; +}; + +/** @brief Extract the luks passphrases setup. + * + * Given a list of partitions (as set up by the partitioning module, + * so there's maps with keys inside), returns just the list of + * luks passphrases for each device. + */ +static QList< LuksDevice > +getLuksDevices( const QVariantList& list ) +{ + QList< LuksDevice > luksItems; + + for ( const auto& p : list ) + { + if ( p.canConvert< QVariantMap >() ) + { + LuksDevice d( p.toMap() ); + if ( d.isValid ) + { + luksItems.append( d ); + } + } + } + return luksItems; +} + +struct LuksDeviceList +{ + LuksDeviceList( const QVariant& partitions ) + : valid( false ) + { + if ( partitions.canConvert< QVariantList >() ) + { + devices = getLuksDevices( partitions.toList() ); + valid = true; + } + } + + QList< LuksDevice > devices; + bool valid; +}; + +static const char keyfile[] = "/crypto_keyfile.bin"; + +static bool +generateTargetKeyfile() +{ + CalamaresUtils::UMask m( CalamaresUtils::UMask::Safe ); + auto r = CalamaresUtils::System::instance()->targetEnvCommand( + { "dd", "bs=512", "count=4", "if=/dev/urandom", QString( "of=%1" ).arg( keyfile ) } ); + if ( r.getExitCode() != 0 ) + { + cWarning() << "Could not create LUKS keyfile:" << r.getOutput() << "(exit code" << r.getExitCode() << ')'; + return false; + } + // Give ample time to check that the file was created correctly + r = CalamaresUtils::System::instance()->targetEnvCommand( { "ls", "-la", "/" } ); + cDebug() << "In target system after creating LUKS file" << r.getOutput(); + return true; +} + +static bool +setupLuks( const LuksDevice& d ) +{ + auto r = CalamaresUtils::System::instance()->targetEnvCommand( + { "cryptsetup", "luksAddKey", d.device, keyfile }, QString(), d.passphrase, std::chrono::seconds( 15 ) ); + if ( r.getExitCode() != 0 ) + { + cWarning() << "Could not configure LUKS keyfile on" << d.device << ':' << r.getOutput() << "(exit code" + << r.getExitCode() << ')'; + return false; + } + return true; +} + +Calamares::JobResult +LuksBootKeyFileJob::exec() +{ + const auto* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( !gs ) + { + return Calamares::JobResult::internalError( + "LuksBootKeyFile", "No GlobalStorage defined.", Calamares::JobResult::InvalidConfiguration ); + } + if ( !gs->contains( "partitions" ) ) + { + cError() << "No GS[partitions] key."; + return Calamares::JobResult::internalError( + "LuksBootKeyFile", tr( "No partitions are defined." ), Calamares::JobResult::InvalidConfiguration ); + } + + LuksDeviceList s( gs->value( "partitions" ) ); + if ( !s.valid ) + { + cError() << "GS[partitions] is invalid"; + return Calamares::JobResult::internalError( + "LuksBootKeyFile", tr( "No partitions are defined." ), Calamares::JobResult::InvalidConfiguration ); + } + + cDebug() << "There are" << s.devices.count() << "LUKS partitions"; + if ( s.devices.count() < 1 ) + { + cDebug() << Logger::SubEntry << "Nothing to do for LUKS."; + return Calamares::JobResult::ok(); + } + + auto it = std::partition( s.devices.begin(), s.devices.end(), []( const LuksDevice& d ) { return d.isRoot; } ); + for ( const auto& d : s.devices ) + { + cDebug() << Logger::SubEntry << ( d.isRoot ? "root" : "dev." ) << d.device << "passphrase?" + << !d.passphrase.isEmpty(); + } + + if ( it == s.devices.begin() ) + { + // Then there was no root partition + cDebug() << Logger::SubEntry << "No root partition."; + return Calamares::JobResult::ok(); + } + + if ( s.devices.first().passphrase.isEmpty() ) + { + cDebug() << Logger::SubEntry << "No root passphrase."; + return Calamares::JobResult::error( + tr( "Encrypted rootfs setup error" ), + tr( "Root partition %1 is LUKS but no passphrase has been set." ).arg( s.devices.first().device ) ); + } + + if ( !generateTargetKeyfile() ) + { + return Calamares::JobResult::error( + tr( "Encrypted rootfs setup error" ), + tr( "Could not create LUKS key file for root partition %1." ).arg( s.devices.first().device ) ); + } + + for ( const auto& d : s.devices ) + { + if ( !setupLuks( d ) ) + return Calamares::JobResult::error( + tr( "Encrypted rootfs setup error" ), + tr( "Could configure LUKS key file on partition %1." ).arg( d.device ) ); + } + + return Calamares::JobResult::ok(); +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( LuksBootKeyFileJobFactory, registerPlugin< LuksBootKeyFileJob >(); ) diff --git a/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h new file mode 100644 index 000000000..2d4d6d319 --- /dev/null +++ b/src/modules/luksbootkeyfile/LuksBootKeyFileJob.h @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef LUKSBOOTKEYFILEJOB_H +#define LUKSBOOTKEYFILEJOB_H + +#include "CppJob.h" +#include "PluginDllMacro.h" +#include "utils/PluginFactory.h" + +#include +#include + +/** @brief Creates the LUKS boot key file and adds it to the cryptsetup. + * + * This job has no configuration, because it takes everything + * from the global storage settings set by others. + */ +class PLUGINDLLEXPORT LuksBootKeyFileJob : public Calamares::CppJob +{ + Q_OBJECT +public: + explicit LuksBootKeyFileJob( QObject* parent = nullptr ); + virtual ~LuksBootKeyFileJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( LuksBootKeyFileJobFactory ) + +#endif // LUKSBOOTKEYFILEJOB_H diff --git a/src/modules/luksbootkeyfile/main.py b/src/modules/luksbootkeyfile/main.py deleted file mode 100644 index fb0146cf8..000000000 --- a/src/modules/luksbootkeyfile/main.py +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# === This file is part of Calamares - === -# -# Copyright 2016, Teo Mrnjavac -# Copyright 2017, Alf Gaida -# Copyright 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 . - -import libcalamares -from libcalamares.utils import check_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 _("Configuring LUKS key file.") - - -def run(): - """ - This module sets up a file crypto_keyfile.bin on the rootfs, assuming the - rootfs is LUKS encrypted and a passphrase is provided. This file is then - included in the initramfs and used for unlocking the rootfs from a - previously unlocked GRUB2 session. - :return: - """ - - partitions = libcalamares.globalstorage.value("partitions") - - if not partitions: - libcalamares.utils.warning("partitions is empty, {!s}".format(partitions)) - return (_("Configuration Error"), - _("No partitions are defined for
{!s}
to use." ).format("luksbootkey")) - - luks_root_device = "" - luks_root_passphrase = "" - - additional_luks_devices = [] - - for partition in partitions: - if partition["mountPoint"] == "/" and "luksMapperName" in partition: - luks_root_device = partition["device"] - luks_root_passphrase = partition["luksPassphrase"] - elif "luksMapperName" in partition and\ - (partition["mountPoint"] or partition["fs"] == "linuxswap"): - additional_luks_devices.append((partition["device"], - partition["luksPassphrase"])) - - if not luks_root_device: - return None - - if not luks_root_passphrase: - libcalamares.utils.debug("No LUKS passphrase, root {!s}".format(luks_root_device)) - return ( - _("Encrypted rootfs setup error"), - _("Rootfs partition {!s} is LUKS but no passphrase found.").format(luks_root_device)) - - # Generate random keyfile - check_target_env_call(["dd", - "bs=512", - "count=4", - "if=/dev/urandom", - "of=/crypto_keyfile.bin"]) - - check_target_env_call(["cryptsetup", - "luksAddKey", - luks_root_device, - "/crypto_keyfile.bin"], - luks_root_passphrase, - 15) # timeout 15s - - for additional_device in additional_luks_devices: - check_target_env_call(["cryptsetup", - "luksAddKey", - additional_device[0], - "/crypto_keyfile.bin"], - additional_device[1], - 15) # timeout 15s - - check_target_env_call(["chmod", - "g-rwx,o-rwx", - "/crypto_keyfile.bin"]) - - return None diff --git a/src/modules/luksbootkeyfile/module.desc b/src/modules/luksbootkeyfile/module.desc deleted file mode 100644 index 11a0173d5..000000000 --- a/src/modules/luksbootkeyfile/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "luksbootkeyfile" -interface: "python" -script: "main.py" diff --git a/src/modules/machineid/CMakeLists.txt b/src/modules/machineid/CMakeLists.txt new file mode 100644 index 000000000..efb6454e8 --- /dev/null +++ b/src/modules/machineid/CMakeLists.txt @@ -0,0 +1,24 @@ +calamares_add_plugin( machineid + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + MachineIdJob.cpp + Workers.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) + +if ( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + Tests.cpp + Workers.cpp + TEST_NAME + machineidtest + LINK_LIBRARIES + calamares + Qt5::Core + Qt5::Test + ) + calamares_automoc( machineidtest ) +endif() diff --git a/src/modules/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp new file mode 100644 index 000000000..393950ded --- /dev/null +++ b/src/modules/machineid/MachineIdJob.cpp @@ -0,0 +1,153 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Kevin Kofler + * Copyright 2016, Philip Müller + * Copyright 2017, Alf Gaida + * Copyright 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 . + */ + +#include "MachineIdJob.h" +#include "Workers.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/Variant.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" + +#include + +MachineIdJob::MachineIdJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + + +MachineIdJob::~MachineIdJob() {} + + +QString +MachineIdJob::prettyName() const +{ + return tr( "Generate machine-id." ); +} + +Calamares::JobResult +MachineIdJob::exec() +{ + QString root; + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( gs && gs->contains( "rootMountPoint" ) ) + { + root = gs->value( "rootMountPoint" ).toString(); + } + else + { + cWarning() << "No *rootMountPoint* defined."; + return Calamares::JobResult::internalError( tr( "Configuration Error" ), + tr( "No root mount point is set for MachineId." ), + Calamares::JobResult::InvalidConfiguration ); + } + + QString target_systemd_machineid_file = QStringLiteral( "/etc/machine-id" ); + QString target_dbus_machineid_file = QStringLiteral( "/var/lib/dbus/machine-id" ); + QString target_entropy_file = QStringLiteral( "/var/lib/urandom/random-seed" ); + + // Clear existing files + if ( m_entropy ) + { + MachineId::removeFile( root, target_entropy_file ); + } + if ( m_dbus ) + { + MachineId::removeFile( root, target_dbus_machineid_file ); + } + if ( m_systemd ) + { + MachineId::removeFile( root, target_systemd_machineid_file ); + } + + //Create new files + if ( m_entropy ) + { + auto r = MachineId::createEntropy( m_entropy_copy ? MachineId::EntropyGeneration::CopyFromHost + : MachineId::EntropyGeneration::New, + root, + target_entropy_file ); + if ( !r ) + { + return r; + } + } + if ( m_systemd ) + { + auto r = MachineId::createSystemdMachineId( root, target_systemd_machineid_file ); + if ( !r ) + { + return r; + } + } + if ( m_dbus ) + { + if ( m_dbus_symlink && QFile::exists( root + target_systemd_machineid_file ) ) + { + auto r = MachineId::createDBusLink( root, target_dbus_machineid_file, target_systemd_machineid_file ); + if ( !r ) + { + return r; + } + } + else + { + auto r = MachineId::createDBusMachineId( root, target_dbus_machineid_file ); + if ( !r ) + { + return r; + } + } + } + + return Calamares::JobResult::ok(); +} + + +void +MachineIdJob::setConfigurationMap( const QVariantMap& map ) +{ + m_systemd = CalamaresUtils::getBool( map, "systemd", false ); + + m_dbus = CalamaresUtils::getBool( map, "dbus", false ); + if ( map.contains( "dbus-symlink" ) ) + { + m_dbus_symlink = CalamaresUtils::getBool( map, "dbus-symlink", false ); + } + else if ( map.contains( "symlink" ) ) + { + m_dbus_symlink = CalamaresUtils::getBool( map, "symlink", false ); + cWarning() << "MachineId: configuration setting *symlink* is deprecated, use *dbus-symlink*."; + } + // else it's still false from the constructor + + // ignore it, though, if dbus is false + m_dbus_symlink = m_dbus && m_dbus_symlink; + + m_entropy = CalamaresUtils::getBool( map, "entropy", false ); + m_entropy_copy = CalamaresUtils::getBool( map, "entropy-copy", false ); +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( MachineIdJobFactory, registerPlugin< MachineIdJob >(); ) diff --git a/src/modules/machineid/MachineIdJob.h b/src/modules/machineid/MachineIdJob.h new file mode 100644 index 000000000..5d44b2017 --- /dev/null +++ b/src/modules/machineid/MachineIdJob.h @@ -0,0 +1,57 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef MACHINEIDJOB_H +#define MACHINEIDJOB_H + +#include +#include + +#include + +#include + +#include + +class PLUGINDLLEXPORT MachineIdJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit MachineIdJob( QObject* parent = nullptr ); + virtual ~MachineIdJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + bool m_systemd = false; ///< write systemd's files + + bool m_dbus = false; ///< write dbus files + bool m_dbus_symlink = false; ///< .. or just symlink to systemd + + bool m_entropy = false; ///< write an entropy file + bool m_entropy_copy = false; ///< copy from host system +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( MachineIdJobFactory ) + +#endif // MACHINEIDJOB_H diff --git a/src/modules/machineid/Tests.cpp b/src/modules/machineid/Tests.cpp new file mode 100644 index 000000000..273645e22 --- /dev/null +++ b/src/modules/machineid/Tests.cpp @@ -0,0 +1,109 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Workers.h" + +#include "utils/Logger.h" + + +#include +#include +#include + +class MachineIdTests : public QObject +{ + Q_OBJECT +public: + MachineIdTests() {} + virtual ~MachineIdTests() {} + +private Q_SLOTS: + void initTestCase(); + + void testRemoveFile(); + void testCopyFile(); + + void testPoolSize(); +}; + +void +MachineIdTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); +} + +void +MachineIdTests::testCopyFile() +{ + QTemporaryDir tempRoot( QDir::tempPath() + QStringLiteral( "/test-root-XXXXXX" ) ); + cDebug() << "Temporary files as" << QDir::tempPath(); + cDebug() << "Temp dir file at " << tempRoot.path(); + QVERIFY( !tempRoot.path().isEmpty() ); + + // This will pretend to be the host system + QTemporaryDir tempISOdir( QDir::tempPath() + QStringLiteral( "/test-live-XXXXXX" ) ); + QVERIFY( QDir( tempRoot.path() ).mkpath( tempRoot.path() + tempISOdir.path() ) ); + + QFile source( tempRoot.filePath( "example" ) ); + QVERIFY( !source.exists() ); + source.open( QIODevice::WriteOnly ); + source.write( "Derp" ); + source.close(); + QCOMPARE( source.size(), 4 ); + QVERIFY( source.exists() ); + + // This should fail since "example" isn't standard in our test directory + auto r0 = MachineId::copyFile( tempRoot.path(), "example" ); + QVERIFY( !r0 ); + + const QString sampleFile = QStringLiteral( "CMakeCache.txt" ); + if ( QFile::exists( sampleFile ) ) + { + auto r1 = MachineId::copyFile( tempRoot.path(), sampleFile ); + // Also fail, because it's not an absolute path + QVERIFY( !r1 ); + + QVERIFY( QFile::copy( sampleFile, tempISOdir.path() + '/' + sampleFile ) ); + auto r2 = MachineId::copyFile( tempRoot.path(), tempISOdir.path() + '/' + sampleFile ); + QVERIFY( r2 ); + } +} + +void +MachineIdTests::testRemoveFile() +{ +} + +void +MachineIdTests::testPoolSize() +{ +#ifdef Q_OS_FREEBSD + // It hardly makes sense, but also the /proc entry is missing + QCOMPARE( MachineId::getUrandomPoolSize(), 512 ); +#else + // Based on a sample size of 1, Netrunner + QCOMPARE( MachineId::getUrandomPoolSize(), 4096 ); +#endif +} + + +QTEST_GUILESS_MAIN( MachineIdTests ) + +#include "utils/moc-warnings.h" + +#include "Tests.moc" diff --git a/src/modules/machineid/Workers.cpp b/src/modules/machineid/Workers.cpp new file mode 100644 index 000000000..178f03de5 --- /dev/null +++ b/src/modules/machineid/Workers.cpp @@ -0,0 +1,199 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Kevin Kofler + * Copyright 2016, Philip Müller + * Copyright 2017, Alf Gaida + * Copyright 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 . + */ + +#include "Workers.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" + +#include + +namespace MachineId +{ + +static inline bool +isAbsolutePath( const QString& fileName ) +{ + return fileName.startsWith( '/' ); +} + +// might need to use a helper to remove the file +void +removeFile( const QString& rootMountPoint, const QString& fileName ) +{ + if ( isAbsolutePath( fileName ) ) + { + QFile::remove( rootMountPoint + fileName ); + } + // Otherwise, do nothing +} + +Calamares::JobResult +copyFile( const QString& rootMountPoint, const QString& fileName ) +{ + if ( !isAbsolutePath( fileName ) ) + { + return Calamares::JobResult::internalError( + QObject::tr( "File not found" ), + QObject::tr( "Path
%1
must be an absolute path." ).arg( fileName ), + 0 ); + } + + QFile f( fileName ); + if ( !f.exists() ) + { + return Calamares::JobResult::error( QObject::tr( "File not found" ), fileName ); + } + if ( !f.copy( rootMountPoint + fileName ) ) + { + return Calamares::JobResult::error( QObject::tr( "File not found" ), rootMountPoint + fileName ); + } + return Calamares::JobResult::ok(); +} + +int +getUrandomPoolSize() +{ + QFile f( "/proc/sys/kernel/random/poolsize" ); + constexpr const int minimumPoolSize = 512; + int poolSize = minimumPoolSize; + + if ( f.exists() && f.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + QByteArray v = f.read( 16 ); + if ( v.length() > 2 ) + { + if ( v.endsWith( '\n' ) ) + { + v.chop(1); + } + bool ok = false; + poolSize = v.toInt( &ok ); + if ( !ok ) + { + poolSize = minimumPoolSize; + } + } + } + return (poolSize >= minimumPoolSize) ? poolSize : minimumPoolSize; +} + +Calamares::JobResult +createNewEntropy( int poolSize, const QString& rootMountPoint, const QString& fileName ) +{ + QFile urandom( "/dev/urandom" ); + if ( urandom.exists() && urandom.open( QIODevice::ReadOnly ) ) + { + QByteArray data = urandom.read( poolSize ); + urandom.close(); + + QFile entropyFile( rootMountPoint + fileName ); + if ( entropyFile.exists() ) + { + cWarning() << "Entropy file" << ( rootMountPoint + fileName ) << "already exists."; + return Calamares::JobResult::ok(); // .. anyway + } + if ( !entropyFile.open( QIODevice::WriteOnly ) ) + { + return Calamares::JobResult::error( + QObject::tr( "File not found" ), + QObject::tr( "Could not create new random file
%1
." ).arg( fileName ) ); + } + entropyFile.write( data ); + entropyFile.close(); + if ( entropyFile.size() < data.length() ) + { + cWarning() << "Entropy file is" << entropyFile.size() << "bytes, random data was" << data.length(); + } + if ( data.length() < poolSize ) + { + cWarning() << "Entropy data is" << data.length() << "bytes, rather than poolSize" << poolSize; + } + } + return Calamares::JobResult::error( + QObject::tr( "File not found" ), + QObject::tr( "Could not read random file
%1
." ).arg( QStringLiteral( "/dev/urandom" ) ) ); +} + + +Calamares::JobResult +createEntropy( const EntropyGeneration kind, const QString& rootMountPoint, const QString& fileName ) +{ + if ( kind == EntropyGeneration::CopyFromHost ) + { + if ( QFile::exists( fileName ) ) + { + auto r = copyFile( rootMountPoint, fileName ); + if ( r ) + { + return r; + } + else + { + cWarning() << "Could not copy" << fileName << "for entropy, generating new."; + } + } + else + { + cWarning() << "Host system entropy does not exist at" << fileName; + } + } + + int poolSize = getUrandomPoolSize(); + return createNewEntropy( poolSize, rootMountPoint, fileName ); +} + +static Calamares::JobResult +runCmd( const QStringList& cmd ) +{ + auto r = CalamaresUtils::System::instance()->targetEnvCommand( cmd ); + if ( r.getExitCode() ) + { + return r.explainProcess( cmd, std::chrono::seconds( 0 ) ); + } + + return Calamares::JobResult::ok(); +} + +Calamares::JobResult +createSystemdMachineId( const QString& rootMountPoint, const QString& fileName ) +{ + Q_UNUSED( rootMountPoint ) + Q_UNUSED( fileName ) + return runCmd( QStringList { QStringLiteral( "systemd-machine-id-setup" ) } ); +} + +Calamares::JobResult +createDBusMachineId( const QString& rootMountPoint, const QString& fileName ) +{ + Q_UNUSED( rootMountPoint ) + Q_UNUSED( fileName ) + return runCmd( QStringList { QStringLiteral( "dbus-uuidgen" ), QStringLiteral( "--ensure" ) } ); +} + +Calamares::JobResult +createDBusLink( const QString& rootMountPoint, const QString& fileName, const QString& systemdFileName ) +{ + Q_UNUSED( rootMountPoint ) + return runCmd( QStringList { QStringLiteral( "ln" ), QStringLiteral( "-s" ), systemdFileName, fileName } ); +} + +} // namespace MachineId diff --git a/src/modules/machineid/Workers.h b/src/modules/machineid/Workers.h new file mode 100644 index 000000000..5cf6270d9 --- /dev/null +++ b/src/modules/machineid/Workers.h @@ -0,0 +1,82 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef WORKERS_H +#define WORKERS_H + +#include "Job.h" + +/// @brief Utility functions for doing the random-data stuff for MachineId +namespace MachineId +{ +/** @brief Utility functions + * + * These probably belong in libcalamares, since they're general utilities + * for moving files around in the target system. + */ + +/// @brief Remove @p fileName from the target system at @p rootMountPoint +void removeFile( const QString& rootMountPoint, const QString& fileName ); + +/// @brief Copy @p fileName from host into target system at @p rootMountPoint +Calamares::JobResult copyFile( const QString& rootMountPoint, const QString& fileName ); + + +/** @brief Entropy functions + * + * The target system may want to pre-seed the entropy pool with a suitable + * chunk of entropy data. During installation we have lots of disk access + * so plenty of entropy -- this is used mostly be Debian. + */ + +/// @brief How to generate entropy (bool-like) +enum class EntropyGeneration +{ + New, + CopyFromHost +}; + +/// @brief Returns a recommended size for the entropy pool (in bytes) +int getUrandomPoolSize(); + +/// @brief Creates a new entropy file @p fileName in the target system at @p rootMountPoint +Calamares::JobResult createNewEntropy( int poolSize, const QString& rootMountPoint, const QString& fileName ); + +/// @brief Create an entropy file @p fileName in the target system at @p rootMountPoint +Calamares::JobResult +createEntropy( const EntropyGeneration kind, const QString& rootMountPoint, const QString& fileName ); + + +/** @brief MachineID functions + * + * Creating UUIDs for DBUS and SystemD. + */ + +/// @brief Create a new DBus UUID file +Calamares::JobResult createDBusMachineId( const QString& rootMountPoint, const QString& fileName ); + +/// @brief Symlink DBus UUID file to the one from systemd (which must exist already) +Calamares::JobResult +createDBusLink( const QString& rootMountPoint, const QString& fileName, const QString& systemdFileName ); + +Calamares::JobResult createSystemdMachineId( const QString& rootMountPoint, const QString& fileName ); + + +} // namespace MachineId + +#endif // WORKERS_H diff --git a/src/modules/machineid/machineid.conf b/src/modules/machineid/machineid.conf index 263687263..97bd10a06 100644 --- a/src/modules/machineid/machineid.conf +++ b/src/modules/machineid/machineid.conf @@ -1,8 +1,24 @@ +# Machine-ID and other random data on the target system. +# +# This module can create a number of "random" things on the target: +# - a systemd machine-id file (hence the name of the Calamares module) +# with a random UUID. +# - a dbus machine-id file (or, optionally, link to the one from systemd) +# - an entropy file +# --- # Whether to create /etc/machine-id for systemd. systemd: true + # Whether to create /var/lib/dbus/machine-id for D-Bus. 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 +# Whether to copy entropy from the host +entropy-copy: false diff --git a/src/modules/machineid/module.desc b/src/modules/machineid/module.desc deleted file mode 100644 index 8d42b64f5..000000000 --- a/src/modules/machineid/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "machineid" -interface: "python" -script: "main.py" diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index ed649aead..b10c5c0bf 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -37,111 +37,106 @@ _ = gettext.translation("calamares-python", def pretty_name(): return _("Mounting partitions.") - -def mount_partitions(root_mount_point, partitions): +def mount_partition(root_mount_point, partition, partitions): """ - Pass back mount point and filesystem for each partition. + Do a single mount of @p partition inside @p root_mount_point. - :param root_mount_point: - :param partitions: + The @p partitions are used to handle btrfs special-cases: + then subvolumes are created for root and home. """ - for partition in partitions: - if "mountPoint" not in partition or not partition["mountPoint"]: - continue - # Create mount point with `+` rather than `os.path.join()` because - # `partition["mountPoint"]` starts with a '/'. - raw_mount_point = partition["mountPoint"] - mount_point = root_mount_point + raw_mount_point + # Create mount point with `+` rather than `os.path.join()` because + # `partition["mountPoint"]` starts with a '/'. + raw_mount_point = partition["mountPoint"] + mount_point = root_mount_point + raw_mount_point - # Ensure that the created directory has the correct SELinux context on - # SELinux-enabled systems. - os.makedirs(mount_point, exist_ok=True) - subprocess.call(['chcon', '--reference=' + raw_mount_point, - mount_point]) + # Ensure that the created directory has the correct SELinux context on + # SELinux-enabled systems. + os.makedirs(mount_point, exist_ok=True) + subprocess.call(['chcon', '--reference=' + raw_mount_point, + mount_point]) - fstype = partition.get("fs", "").lower() + fstype = partition.get("fs", "").lower() - if fstype == "fat16" or fstype == "fat32": - fstype = "vfat" + if fstype == "fat16" or fstype == "fat32": + fstype = "vfat" + + if "luksMapperName" in partition: + libcalamares.utils.debug( + "about to mount {!s}".format(partition["luksMapperName"])) + libcalamares.utils.mount( + "/dev/mapper/{!s}".format(partition["luksMapperName"]), + mount_point, + fstype, + partition.get("options", ""), + ) + + else: + libcalamares.utils.mount(partition["device"], + mount_point, + fstype, + partition.get("options", ""), + ) + + # If the root partition is btrfs, we create a subvolume "@" + # for the root mount point. + # If a separate /home partition isn't defined, we also create + # a subvolume "@home". + # Finally we remount all of the above on the correct paths. + if fstype == "btrfs" and partition["mountPoint"] == '/': + has_home_mount_point = False + for p in partitions: + if "mountPoint" not in p or not p["mountPoint"]: + continue + if p["mountPoint"] == "/home": + has_home_mount_point = True + break + + subprocess.check_call(['btrfs', 'subvolume', 'create', + root_mount_point + '/@']) + + if not has_home_mount_point: + subprocess.check_call(['btrfs', 'subvolume', 'create', + root_mount_point + '/@home']) + + subprocess.check_call(["umount", "-v", root_mount_point]) if "luksMapperName" in partition: - libcalamares.utils.debug( - "about to mount {!s}".format(partition["luksMapperName"])) libcalamares.utils.mount( "/dev/mapper/{!s}".format(partition["luksMapperName"]), mount_point, fstype, - partition.get("options", ""), + ",".join( + ["subvol=@", partition.get("options", "")]), ) - - else: - libcalamares.utils.mount(partition["device"], - mount_point, - fstype, - partition.get("options", ""), - ) - - # If the root partition is btrfs, we create a subvolume "@" - # for the root mount point. - # If a separate /home partition isn't defined, we also create - # a subvolume "@home". - # Finally we remount all of the above on the correct paths. - if fstype == "btrfs" and partition["mountPoint"] == '/': - has_home_mount_point = False - for p in partitions: - if "mountPoint" not in p or not p["mountPoint"]: - continue - if p["mountPoint"] == "/home": - has_home_mount_point = True - break - - subprocess.check_call(['btrfs', 'subvolume', 'create', - root_mount_point + '/@']) - if not has_home_mount_point: - subprocess.check_call(['btrfs', 'subvolume', 'create', - root_mount_point + '/@home']) - - subprocess.check_call(["umount", "-v", root_mount_point]) - - if "luksMapperName" in partition: libcalamares.utils.mount( "/dev/mapper/{!s}".format(partition["luksMapperName"]), - mount_point, + root_mount_point + "/home", fstype, ",".join( - ["subvol=@", partition.get("options", "")]), + ["subvol=@home", partition.get("options", "")]), ) - if not has_home_mount_point: - libcalamares.utils.mount( - "/dev/mapper/{!s}".format(partition["luksMapperName"]), - root_mount_point + "/home", - fstype, - ",".join( - ["subvol=@home", partition.get("options", "")]), - ) - else: + else: + libcalamares.utils.mount( + partition["device"], + mount_point, + fstype, + ",".join(["subvol=@", partition.get("options", "")]), + ) + if not has_home_mount_point: libcalamares.utils.mount( partition["device"], - mount_point, + root_mount_point + "/home", fstype, - ",".join(["subvol=@", partition.get("options", "")]), + ",".join( + ["subvol=@home", partition.get("options", "")]), ) - if not has_home_mount_point: - libcalamares.utils.mount( - partition["device"], - root_mount_point + "/home", - fstype, - ",".join( - ["subvol=@home", partition.get("options", "")]), - ) def run(): """ - Define mountpoints. - - :return: + Mount all the partitions from GlobalStorage and from the job configuration. + Partitions are mounted in-lexical-order of their mountPoint. """ partitions = libcalamares.globalstorage.value("partitions") @@ -158,17 +153,19 @@ def run(): if not extra_mounts and not extra_mounts_efi: libcalamares.utils.warning("No extra mounts defined. Does mount.conf exist?") - # Sort by mount points to ensure / is mounted before the rest - partitions.sort(key=lambda x: x["mountPoint"]) - mount_partitions(root_mount_point, partitions) - mount_partitions(root_mount_point, extra_mounts) - - all_extra_mounts = extra_mounts if libcalamares.globalstorage.value("firmwareType") == "efi": - mount_partitions(root_mount_point, extra_mounts_efi) - all_extra_mounts.extend(extra_mounts_efi) + extra_mounts.extend(extra_mounts_efi) + + # Add extra mounts to the partitions list and sort by mount points. + # This way, we ensure / is mounted before the rest, and every mount point + # is created on the right partition (e.g. if a partition is to be mounted + # under /tmp, we make sure /tmp is mounted before the partition) + mountable_partitions = [ p for p in partitions + extra_mounts if "mountPoint" in p and p["mountPoint"] ] + mountable_partitions.sort(key=lambda x: x["mountPoint"]) + for partition in mountable_partitions: + mount_partition(root_mount_point, partition, partitions) libcalamares.globalstorage.insert("rootMountPoint", root_mount_point) # Remember the extra mounts for the unpackfs module - libcalamares.globalstorage.insert("extraMounts", all_extra_mounts) + libcalamares.globalstorage.insert("extraMounts", extra_mounts) diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index dfa94744d..c3754e1c2 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -22,26 +22,24 @@ #include "NetInstallPage.h" #include "PackageModel.h" - #include "ui_page_netinst.h" + #include "JobQueue.h" +#include "network/Manager.h" #include "utils/Logger.h" #include "utils/Retranslator.h" #include "utils/Yaml.h" -#include -#include -#include - #include +#include using CalamaresUtils::yamlToVariant; NetInstallPage::NetInstallPage( QWidget* parent ) : QWidget( parent ) , ui( new Ui::Page_NetInst ) - , m_networkManager( this ) + , m_reply( nullptr ) , m_groups( nullptr ) { ui->setupUi( this ); @@ -55,14 +53,14 @@ NetInstallPage::readGroups( const QByteArray& yamlData ) YAML::Node groups = YAML::Load( yamlData.constData() ); if ( !groups.IsSequence() ) + { cWarning() << "netinstall groups data does not form a sequence."; + } Q_ASSERT( groups.IsSequence() ); m_groups = new PackageModel( groups ); - CALAMARES_RETRANSLATE( - m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) ); - m_groups->setHeaderData( 1, Qt::Horizontal, tr( "Description" ) ); ) + CALAMARES_RETRANSLATE( m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) ); + m_groups->setHeaderData( 1, Qt::Horizontal, tr( "Description" ) ); ) return true; - } catch ( YAML::Exception& e ) { @@ -71,28 +69,54 @@ NetInstallPage::readGroups( const QByteArray& yamlData ) } } -void -NetInstallPage::dataIsHere( QNetworkReply* reply ) +/// @brief Convenience to zero out and deleteLater on the reply, used in dataIsHere +struct ReplyDeleter { + QNetworkReply*& p; + + ~ReplyDeleter() + { + if ( p ) + { + p->deleteLater(); + } + p = nullptr; + } +}; + +void +NetInstallPage::dataIsHere() +{ + if ( !m_reply || !m_reply->isFinished() ) + { + cWarning() << "NetInstall data called too early."; + return; + } + + cDebug() << "NetInstall group data received" << m_reply->url(); + + ReplyDeleter d { m_reply }; + // If m_required is *false* then we still say we're ready // even if the reply is corrupt or missing. - if ( reply->error() != QNetworkReply::NoError ) + if ( m_reply->error() != QNetworkReply::NoError ) { cWarning() << "unable to fetch netinstall package lists."; - cDebug() << Logger::SubEntry << "Netinstall reply error: " << reply->error(); - cDebug() << Logger::SubEntry << "Request for url: " << reply->url().toString() << " failed with: " << reply->errorString(); - ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); + cDebug() << Logger::SubEntry << "Netinstall reply error: " << m_reply->error(); + cDebug() << Logger::SubEntry << "Request for url: " << m_reply->url().toString() + << " failed with: " << m_reply->errorString(); + ui->netinst_status->setText( + tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); emit checkReady( !m_required ); return; } - if ( !readGroups( reply->readAll() ) ) + if ( !readGroups( m_reply->readAll() ) ) { cWarning() << "netinstall groups data was received, but invalid."; - cDebug() << Logger::SubEntry << "Url: " << reply->url().toString(); - cDebug() << Logger::SubEntry << "Headers: " << reply->rawHeaderList(); + cDebug() << Logger::SubEntry << "Url: " << m_reply->url().toString(); + cDebug() << Logger::SubEntry << "Headers: " << m_reply->rawHeaderList(); ui->netinst_status->setText( tr( "Network Installation. (Disabled: Received invalid groups data)" ) ); - reply->deleteLater(); emit checkReady( !m_required ); return; } @@ -101,7 +125,6 @@ NetInstallPage::dataIsHere( QNetworkReply* reply ) ui->groupswidget->header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); ui->groupswidget->header()->setSectionResizeMode( 1, QHeaderView::Stretch ); - reply->deleteLater(); emit checkReady( true ); } @@ -109,7 +132,9 @@ PackageModel::PackageItemDataList NetInstallPage::selectedPackages() const { if ( m_groups ) + { return m_groups->getPackages(); + } else { cWarning() << "no netinstall groups are available."; @@ -120,17 +145,23 @@ NetInstallPage::selectedPackages() const void NetInstallPage::loadGroupList( const QString& confUrl ) { - QNetworkRequest request; - request.setUrl( QUrl( confUrl ) ); - // Follows all redirects except unsafe ones (https to http). - request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); - // Not everybody likes the default User Agent used by this class (looking at you, - // sourceforge.net), so let's set a more descriptive one. - request.setRawHeader( "User-Agent", "Mozilla/5.0 (compatible; Calamares)" ); + using namespace CalamaresUtils::Network; - connect( &m_networkManager, &QNetworkAccessManager::finished, - this, &NetInstallPage::dataIsHere ); - m_networkManager.get( request ); + cDebug() << "NetInstall loading groups from" << confUrl; + QNetworkReply* reply = Manager::instance().asynchronouseGet( + QUrl( confUrl ), + RequestOptions( RequestOptions::FakeUserAgent | RequestOptions::FollowRedirect, std::chrono::seconds( 30 ) ) ); + + if ( !reply ) + { + cDebug() << Logger::Continuation << "request failed immediately."; + ui->netinst_status->setText( tr( "Network Installation. (Disabled: Incorrect configuration)" ) ); + } + else + { + m_reply = reply; + connect( reply, &QNetworkReply::finished, this, &NetInstallPage::dataIsHere ); + } } void diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index b2887304b..fbd60a8fd 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -24,14 +24,10 @@ #include "PackageModel.h" #include "PackageTreeItem.h" -#include -#include +#include #include -// required forward declarations -class QByteArray; class QNetworkReply; -class QString; namespace Ui { @@ -57,10 +53,7 @@ public: // corrupt or unavailable data causes checkReady() to be emitted // true (not-required) or false. void setRequired( bool ); - bool getRequired() const - { - return m_required; - } + bool getRequired() const { return m_required; } // Returns the list of packages belonging to groups that are // selected in the view in this given moment. No data is cached here, so @@ -68,7 +61,7 @@ public: PackageModel::PackageItemDataList selectedPackages() const; public slots: - void dataIsHere( QNetworkReply* ); + void dataIsHere(); signals: void checkReady( bool ); @@ -81,11 +74,9 @@ private: Ui::Page_NetInst* ui; - // Handles connection with the remote URL storing the configuration. - QNetworkAccessManager m_networkManager; - + QNetworkReply* m_reply; PackageModel* m_groups; bool m_required; }; -#endif // NETINSTALLPAGE_H +#endif // NETINSTALLPAGE_H diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp index 80e553d2e..b3dc6fae7 100644 --- a/src/modules/netinstall/PackageTreeItem.cpp +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -45,7 +45,7 @@ PackageTreeItem::PackageTreeItem::PackageTreeItem() : PackageTreeItem( QString(), nullptr ) { m_data.selected = Qt::Checked; - m_data.name = QLatin1Literal( "" ); + m_data.name = QLatin1String( "" ); } PackageTreeItem::~PackageTreeItem() diff --git a/src/modules/netinstall/README.md b/src/modules/netinstall/README.md index 6478a844e..855754822 100644 --- a/src/modules/netinstall/README.md +++ b/src/modules/netinstall/README.md @@ -1,86 +1,116 @@ # Netinstall module -The netinstall module allows distribution maintainers to ship minimal ISOs with only a basic set of preinstall packages. -At installation time, the user is presented with the choice to install groups of packages from a predefined list. +The netinstall module allows distribution maintainers to ship minimal ISOs with +only a basic set of preinstall packages. At installation time, the user is +presented with the choice to install groups of packages from a predefined list. Calamares will then invoke the correct backend to install the packages. -## Configuration of the packages -Every distribution can choose which groups to display and which packages should be in the groups. +## Module Configuration -The *netinstall.conf* file should have this format: +The `netinstall.conf` file is self-describing, and at the very +lease should contain a *groupsUrl* key: +``` ---- groupsUrl: +``` -The URL must point to a YAML file. Here is a short example of how the YAML file should look. +The URL must point to a YAML file, the *groups* file. See below for +the format of that groups file. The URL may be a local file. - - name: "Group name" - description: "Description of the group" - packages: - - lsb-release - - avahi - - grub - - name: "Second group name" + +## Groups Configuration + + Here is a short example +of how the YAML file should look. + +``` + - name: "Group name" + description: "Description of the group" + packages: + - lsb-release + - avahi + - grub + - name: "Second group name" ... +``` -The file is composed of a list of entry, each describing one group. The keys *name*, *description* and *packages* are required. +The file is composed of a list of entries, each describing one group. The +keys *name*, *description* and *packages* are required for each group. -More keys are supported: +More keys (per group) are supported: - - hidden: if true, do not show the group on the page. Defaults to false. - - selected: if true, display the group as selected. Defaults to false. - - critical: if true, make the installation process fail if installing - any of the packages in the group fails. Otherwise, just log a warning. - Defaults to false. - - subgroups: if present this follows the same structure as the top level - of the YAML file, allowing there to be sub-groups of packages to an - arbitary depth - - pre-install: an optional command to run within the new system before - the group's packages are installed. It will run before each package in - the group is installed. - - post-install: an optional command to run within the new system after - the group's packages are installed. It will run after each package in - the group is installed. + - *hidden*: if true, do not show the group on the page. Defaults to false. + - *selected*: if true, display the group as selected. Defaults to false. + - critical*: if true, make the installation process fail if installing + any of the packages in the group fails. Otherwise, just log a warning. + Defaults to false. + - *subgroups*: if present this follows the same structure as the top level + of the YAML file, allowing there to be sub-groups of packages to an + arbitary depth + - *pre-install*: an optional command to run within the new system before + the group's packages are installed. It will run before each package in + the group is installed. + - *post-install*: an optional command to run within the new system after + the group's packages are installed. It will run after each package in + the group is installed. -If you set both *hidden* and *selected* for a group, you are basically creating a "default" group of packages -which will always be installed in the user's system. +If you set both *hidden* and *selected* for a group, you are basically creating +a "default" group of packages which will always be installed in the user's +system. -## Configuration of the module +> The note below applies to Calamares up-to-and-including 3.2.13, but will +> change in a later release. -Here is the set of instructions to have the module work in your Calamares. As of July 2016, this has been successfully -tested using the live installation of Chakra Fermi. +The *pre-install* and *post-install* commands are **not** passed to +a shell; see the **packages** module configuration (i.e. `packages.conf`) +for details. To use a full shell pipeline, call the shell explicitly. -First, if the module is used, we need to require a working Internet connection, otherwise the module will be -unable to fetch the package groups and to perform the installation. Requirements for the Calamares instance -are configured in the **welcome.conf** file (configuration for the **welcome** module). Make sure *internet* -is listed below *required*. -In the *settings.conf* file, decide where the **netinstall** page should be displayed. I put it just after the -**welcome** page, but any position between that and just before **partition** should make no difference. -If not present, add the **packages** job in the **exec** list. This is the job that calls the package manager -to install packages. Make sure it is configured to use the correct package manager for your distribution; this -is configured in src/modules/packages/packages.conf. +## Overall Configuration -The **exec** list in *settings.conf* should contain the following items in +Here is the set of instructions to have the module work in your Calamares. + +First, if the module is used, we need to require a working Internet connection, +otherwise the module will be unable to fetch the package groups and to perform +the installation. Requirements for the Calamares instance are configured in the +`welcome.conf` file (configuration for the **welcome** module). Make sure +*internet* is listed under the *required* checks. + +In the `settings.conf` file, decide where the **netinstall** page should be +displayed. I put it just after the **welcome** page, but any position between +that and just before **partition** should make no difference. + +If not present, add the **packages** job in the *exec* list. This is the job +that calls the package manager to install packages. Make sure it is configured +to use the correct package manager for your distribution; this is configured in +`packages.conf`. + +The *exec* list in `settings.conf` should contain the following items in order (it's ok for other jobs to be listed inbetween them, though): +``` - unpackfs - networkcfg - packages +``` -**unpackfs** creates the chroot where the installation is performed, and unpacks the root image with the filesystem -structure; **networkcfg** set ups a working network in the chroot; and finally **packages** can install packages -in the chroot. +**unpackfs** creates the chroot where the installation is performed, and unpacks +the root image with the filesystem structure; **networkcfg** set ups a working +network in the chroot; and finally **packages** can install packages in the +chroot. ## Common issues -If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this -is likely an error in the setup of the chroot; check that the parameter **rootMountPoint** is set to the correct -value in the Calamares configuration. +If launching the package manager command returns you negative exit statuses and +nothing is actually invoked, this is likely an error in the setup of the chroot; +check that the parameter **rootMountPoint** is set to the correct value in the +Calamares configuration. -If the command is run, but exits with error, check that the network is working in the chroot. Make sure /etc/resolv.conf -exists and that it's not empty. +If the command is run, but exits with error, check that the network is +working in the chroot. Make sure `/etc/resolv.conf` exists and that +it's not empty. diff --git a/src/modules/netinstall/netinstall.conf b/src/modules/netinstall/netinstall.conf index fe99eb2be..fd59c24c6 100644 --- a/src/modules/netinstall/netinstall.conf +++ b/src/modules/netinstall/netinstall.conf @@ -4,6 +4,13 @@ # groupsUrl: http://example.org/netinstall.php # or it can be a locally installed file: # groupsUrl: file:///usr/share/calamares/netinstall.yaml +# +# Note that the contents of the groups file is the **important** +# part of the configuration of this module. It specifies what +# the user may select and what commands are to be run. +# +# The format of the groups file is documented in `README.md`. +# # groupsUrl: file:///usr/share/calamares/netinstall.yaml # If the installation can proceed without netinstall (e.g. the Live CD diff --git a/src/modules/netinstall/netinstall.yaml b/src/modules/netinstall/netinstall.yaml index 8e9037f4d..e00f06c73 100644 --- a/src/modules/netinstall/netinstall.yaml +++ b/src/modules/netinstall/netinstall.yaml @@ -1,3 +1,7 @@ +# Example configuration with groups and packages, taken from Chakra Linux. +# +# This example is rather limited. See `README.md` for full documentation +# on the configuration format. - name: "Default" description: "Default group" hidden: true diff --git a/src/modules/packagechooser/CMakeLists.txt b/src/modules/packagechooser/CMakeLists.txt new file mode 100644 index 000000000..eeae655c9 --- /dev/null +++ b/src/modules/packagechooser/CMakeLists.txt @@ -0,0 +1,70 @@ +find_package( Qt5 COMPONENTS Core Gui Widgets REQUIRED ) +set( _extra_libraries "" ) +set( _extra_src "" ) + +### OPTIONAL AppData XML support in PackageModel +# +# +option( WITH_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON ) +if ( WITH_APPDATA ) + find_package(Qt5 COMPONENTS Xml) + if ( Qt5Xml_FOUND ) + add_definitions( -DHAVE_XML ) + list( APPEND _extra_libraries Qt5::Xml ) + list( APPEND _extra_src ItemAppData.cpp ) + endif() +endif() + +### OPTIONAL AppStream support in PackageModel +# +# +option( WITH_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON ) +if ( WITH_APPSTREAM ) + find_package(AppStreamQt) + set_package_properties( + AppStreamQt PROPERTIES + DESCRIPTION "Support for AppStream (cache) data" + URL "https://github.com/ximion/appstream" + PURPOSE "AppStream provides package data" + TYPE OPTIONAL + ) + if ( AppStreamQt_FOUND ) + add_definitions( -DHAVE_APPSTREAM ) + list( APPEND _extra_libraries AppStreamQt ) + list( APPEND _extra_src ItemAppStream.cpp ) + endif() +endif() + +calamares_add_plugin( packagechooser + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + PackageChooserPage.cpp + PackageChooserViewStep.cpp + PackageModel.cpp + ${_extra_src} + RESOURCES + packagechooser.qrc + UI + page_package.ui + LINK_PRIVATE_LIBRARIES + calamaresui + ${_extra_libraries} + SHARED_LIB +) + +if( ECM_FOUND AND BUILD_TESTING ) + ecm_add_test( + Tests.cpp + TEST_NAME + packagechoosertest + LINK_LIBRARIES + ${CALAMARES_LIBRARIES} + calamares_viewmodule_packagechooser + Qt5::Core + Qt5::Test + Qt5::Gui + ${_extra_libraries} + ) + calamares_automoc( packagechoosertest) +endif() diff --git a/src/modules/packagechooser/ItemAppData.cpp b/src/modules/packagechooser/ItemAppData.cpp new file mode 100644 index 000000000..ed0ba9223 --- /dev/null +++ b/src/modules/packagechooser/ItemAppData.cpp @@ -0,0 +1,234 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +/** @brief Loading items from AppData XML files. + * + * Only used if QtXML is found, implements PackageItem::fromAppData(). + */ +#include "PackageModel.h" + +#include "utils/Logger.h" +#include "utils/Variant.h" + +#include +#include +#include + +/** @brief try to load the given @p fileName XML document + * + * Returns a QDomDocument, which will be valid iff the file can + * be read and contains valid XML data. + */ +static inline QDomDocument +loadAppData( const QString& fileName ) +{ + QFile file( fileName ); + if ( !file.open( QIODevice::ReadOnly ) ) + { + return QDomDocument(); + } + QDomDocument doc( "AppData" ); + if ( !doc.setContent( &file ) ) + { + file.close(); + return QDomDocument(); + } + file.close(); + return doc; +} + +/** @brief gets the text of child element @p tagName + */ +static inline QString +getChildText( const QDomNode& n, const QString& tagName ) +{ + QDomElement e = n.firstChildElement( tagName ); + return e.isNull() ? QString() : e.text(); +} + +/** @brief Gets a suitable screenshot path + * + * The element contains zero or more + * elements, which can have a *type* associated with them. + * Scan the screenshot elements, return the path + * for the one labeled with type=default or, if there is no + * default, the first element. + */ +static inline QString +getScreenshotPath( const QDomNode& n ) +{ + QDomElement shotsNode = n.firstChildElement( "screenshots" ); + if ( shotsNode.isNull() ) + { + return QString(); + } + + const QDomNodeList shotList = shotsNode.childNodes(); + int firstScreenshot = -1; // Use which screenshot node? + for ( int i = 0; i < shotList.count(); ++i ) + { + if ( !shotList.at( i ).isElement() ) + { + continue; + } + QDomElement e = shotList.at( i ).toElement(); + if ( e.tagName() != "screenshot" ) + { + continue; + } + // If none has the "type=default" attribute, use the first one + if ( firstScreenshot < 0 ) + { + firstScreenshot = i; + } + // But type=default takes precedence. + if ( e.hasAttribute( "type" ) && e.attribute( "type" ) == "default" ) + { + firstScreenshot = i; + break; + } + } + + if ( firstScreenshot >= 0 ) + { + return shotList.at( firstScreenshot ).firstChildElement( "image" ).text(); + } + + return QString(); +} + +/** @brief Returns language of the given element @p e + * + * Transforms the attribute value for xml:lang to something + * suitable for TranslatedString (e.g. [lang]). + */ +static inline QString +getLanguage( const QDomElement& e ) +{ + QString language = e.attribute( "xml:lang" ); + if ( !language.isEmpty() ) + { + language.replace( '-', '_' ); + language.prepend( '[' ); + language.append( ']' ); + } + return language; +} + +/** @brief Scan the list of @p children for @p tagname elements and add them to the map + * + * Uses @p mapname instead of @p tagname for the entries in map @p m + * to allow renaming from XML to map keys (in particular for + * TranslatedString). Also transforms xml:lang attributes to suitable + * key-decorations on @p mapname. + */ +static inline void +fillMap( QVariantMap& m, const QDomNodeList& children, const QString& tagname, const QString& mapname ) +{ + for ( int i = 0; i < children.count(); ++i ) + { + if ( !children.at( i ).isElement() ) + { + continue; + } + + QDomElement e = children.at( i ).toElement(); + if ( e.tagName() != tagname ) + { + continue; + } + + m[ mapname + getLanguage( e ) ] = e.text(); + } +} + +/** @brief gets the and elements +* +* Builds up a map of the elements (which may have a *lang* +* attribute to indicate translations and paragraphs of the +* element (also with lang). Uses the +* elements to supplement the description if no description +* is available for a given language. +* +* Returns a map with keys suitable for use by TranslatedString. +*/ +static inline QVariantMap +getNameAndSummary( const QDomNode& n ) +{ + QVariantMap m; + + const QDomNodeList children = n.childNodes(); + fillMap( m, children, "name", "name" ); + fillMap( m, children, "summary", "description" ); + + const QDomElement description = n.firstChildElement( "description" ); + if ( !description.isNull() ) + { + fillMap( m, description.childNodes(), "p", "description" ); + } + + return m; +} + +PackageItem +fromAppData( const QVariantMap& item_map ) +{ + QString fileName = CalamaresUtils::getString( item_map, "appdata" ); + if ( fileName.isEmpty() ) + { + cWarning() << "Can't load AppData without a suitable key."; + return PackageItem(); + } + cDebug() << "Loading AppData XML from" << fileName; + + QDomDocument doc = loadAppData( fileName ); + if ( doc.isNull() ) + { + return PackageItem(); + } + + QDomElement componentNode = doc.documentElement(); + if ( !componentNode.isNull() && componentNode.tagName() == "component" ) + { + // An "id" entry in the Calamares config overrides ID in the AppData + QString id = CalamaresUtils::getString( item_map, "id" ); + if ( id.isEmpty() ) + { + id = getChildText( componentNode, "id" ); + } + if ( id.isEmpty() ) + { + return PackageItem(); + } + + // A "screenshot" entry in the Calamares config overrides AppData + QString screenshotPath = CalamaresUtils::getString( item_map, "screenshot" ); + if ( screenshotPath.isEmpty() ) + { + screenshotPath = getScreenshotPath( componentNode ); + } + + QVariantMap map = getNameAndSummary( componentNode ); + map.insert( "id", id ); + map.insert( "screenshot", screenshotPath ); + + return PackageItem( map ); + } + + return PackageItem(); +} diff --git a/src/modules/packagechooser/ItemAppData.h b/src/modules/packagechooser/ItemAppData.h new file mode 100644 index 000000000..72617ff0c --- /dev/null +++ b/src/modules/packagechooser/ItemAppData.h @@ -0,0 +1,37 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef ITEMAPPDATA_H +#define ITEMAPPDATA_H + +#include "PackageModel.h" + +/** @brief Loads an AppData XML file and returns a PackageItem + * + * The @p map must have a key *appdata*. That is used as the + * primary source of information, but keys *id* and *screenshotPath* + * may be used to override parts of the AppData -- so that the + * ID is under the control of Calamares, and the screenshot can be + * forced to a local path available on the installation medium. + * + * Requires XML support in libcalamares, if not present will + * return invalid PackageItems. + */ +PackageItem fromAppData( const QVariantMap& map ); + +#endif diff --git a/src/modules/packagechooser/ItemAppStream.cpp b/src/modules/packagechooser/ItemAppStream.cpp new file mode 100644 index 000000000..83837a9ca --- /dev/null +++ b/src/modules/packagechooser/ItemAppStream.cpp @@ -0,0 +1,159 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +/** @brief Loading items from AppData XML files. + * + * Only used if QtXML is found, implements PackageItem::fromAppData(). + */ +#include "PackageModel.h" + +#include "locale/LabelModel.h" +#include "utils/Logger.h" +#include "utils/Variant.h" + +#include +#include +#include + +/// @brief Return number of pixels in a size, for < ordering purposes +static inline quint64 +sizeOrder( const QSize& size ) +{ + return size.width() * size.height(); +} + +/// @brief Sets a screenshot in @p map from @p screenshot, if a usable one is found +static void +setScreenshot( QVariantMap& map, const AppStream::Screenshot& screenshot ) +{ + if ( screenshot.images().count() < 1 ) + { + return; + } + + // Pick the smallest + QUrl url; + quint64 size = sizeOrder( screenshot.images().first().size() ); + for ( const auto& img : screenshot.images() ) + { + if ( sizeOrder( img.size() ) <= size ) + { + url = img.url(); + } + } + + if ( url.isValid() ) + { + map.insert( "screenshot", url.toString() ); + } +} + +/// @brief Interpret an AppStream Component +static PackageItem +fromComponent( AppStream::Component& component ) +{ + QVariantMap map; + map.insert( "id", component.id() ); + map.insert( "package", component.packageNames().join( "," ) ); + + // Assume that the pool has loaded "ALL" locales, but it might be set + // to any of them; get the en_US locale as "untranslated" and then + // loop over Calamares locales (since there is no way to query for + // available locales in the Component) to see if there's anything else. + component.setActiveLocale( QStringLiteral( "en_US" ) ); + QString en_name = component.name(); + QString en_description = component.description(); + map.insert( "name", en_name ); + map.insert( "description", en_description ); + + for ( const QString& locale : CalamaresUtils::Locale::availableTranslations()->localeIds() ) + { + component.setActiveLocale( locale ); + QString name = component.name(); + if ( name != en_name ) + { + map.insert( QStringLiteral( "name[%1]" ).arg( locale ), name ); + } + QString description = component.description(); + if ( description != en_description ) + { + map.insert( QStringLiteral( "description[%1]" ).arg( locale ), description ); + } + } + + + auto screenshots = component.screenshots(); + if ( screenshots.count() > 0 ) + { + bool done = false; + for ( const auto& s : screenshots ) + { + if ( s.isDefault() ) + { + setScreenshot( map, s ); + done = true; + break; + } + } + if ( !done ) + { + setScreenshot( map, screenshots.first() ); + } + } + + return PackageItem( map ); +} + +PackageItem +fromAppStream( AppStream::Pool& pool, const QVariantMap& item_map ) +{ + QString appstreamId = CalamaresUtils::getString( item_map, "appstream" ); + if ( appstreamId.isEmpty() ) + { + cWarning() << "Can't load AppStream without a suitable appstreamId."; + return PackageItem(); + } + cDebug() << "Loading AppStream data for" << appstreamId; + + auto itemList = pool.componentsById( appstreamId ); + if ( itemList.count() < 1 ) + { + cWarning() << "No AppStream data for" << appstreamId; + return PackageItem(); + } + if ( itemList.count() > 1 ) + { + cDebug() << "Multiple AppStream data for" << appstreamId << "using first."; + } + + auto r = fromComponent( itemList.first() ); + if ( r.isValid() ) + { + QString id = CalamaresUtils::getString( item_map, "id" ); + QString screenshotPath = CalamaresUtils::getString( item_map, "screenshot" ); + if ( !id.isEmpty() ) + { + r.id = id; + } + if ( !screenshotPath.isEmpty() ) + { + r.screenshot = screenshotPath; + } + } + return r; +} diff --git a/src/modules/packagechooser/ItemAppStream.h b/src/modules/packagechooser/ItemAppStream.h new file mode 100644 index 000000000..c44b84b06 --- /dev/null +++ b/src/modules/packagechooser/ItemAppStream.h @@ -0,0 +1,43 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef ITEMAPPSTREAM_H +#define ITEMAPPSTREAM_H + +#include "PackageModel.h" + +namespace AppStream +{ +class Pool; +} + +/** @brief Loads an item from AppStream data. + * + * The @p map must have a key *appstream*. That is used as the + * primary source of information from the AppStream cache, but + * keys *id* and *screenshotPath* may be used to override parts + * of the AppStream data -- so that the ID is under the control + * of Calamares, and the screenshot can be forced to a local path + * available on the installation medium. + * + * Requires AppStreamQt, if not present will return invalid + * PackageItems. + */ +PackageItem fromAppStream( AppStream::Pool& pool, const QVariantMap& map ); + +#endif diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp new file mode 100644 index 000000000..16f50abab --- /dev/null +++ b/src/modules/packagechooser/PackageChooserPage.cpp @@ -0,0 +1,185 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "PackageChooserPage.h" + +#include "ui_page_package.h" + +#include "utils/CalamaresUtilsGui.h" +#include "utils/Logger.h" +#include "utils/Retranslator.h" + +#include + +PackageChooserPage::PackageChooserPage( PackageChooserMode mode, QWidget* parent ) + : QWidget( parent ) + , ui( new Ui::PackageChooserPage ) + , m_introduction( QString(), + QString(), + tr( "Package Selection" ), + tr( "Please pick a product from the list. The selected product will be installed." ) ) +{ + m_introduction.screenshot = QPixmap( QStringLiteral( ":/images/no-selection.png" ) ); + + ui->setupUi( this ); + CALAMARES_RETRANSLATE( updateLabels(); ) + + switch ( mode ) + { + case PackageChooserMode::Optional: + FALLTHRU; + case PackageChooserMode::Required: + ui->products->setSelectionMode( QAbstractItemView::SingleSelection ); + break; + case PackageChooserMode::OptionalMultiple: + FALLTHRU; + case PackageChooserMode::RequiredMultiple: + ui->products->setSelectionMode( QAbstractItemView::ExtendedSelection ); + } + + ui->products->setMinimumWidth( 10 * CalamaresUtils::defaultFontHeight() ); +} + +/** @brief size the given @p pixmap to @p size + * + * This is "smart" in the sense that it tries to keep the image un-scaled + * (if it's just a little too big) and otherwise scales as needed. + * + * Returns a copy if any modifications are done. + */ +static QPixmap +smartClip( const QPixmap& pixmap, QSize size ) +{ + auto pixSize = pixmap.size(); + if ( ( pixSize.width() <= size.width() ) && ( pixSize.height() <= size.height() ) ) + { + return pixmap; + } + + // only slightly bigger? Trim the edges + constexpr int margin = 16; + if ( ( pixSize.width() <= size.width() + margin ) && ( pixSize.height() <= size.height() + margin ) ) + { + int x = pixSize.width() <= size.width() ? 0 : ( pixSize.width() - size.width() / 2 ); + int new_width = pixSize.width() <= size.width() ? pixSize.width() : size.width(); + int y = pixSize.height() <= size.height() ? 0 : ( pixSize.height() - size.height() / 2 ); + int new_height = pixSize.height() <= size.height() ? pixSize.height() : size.height(); + + return pixmap.copy( x, y, new_width, new_height ); + } + + return pixmap.scaled( size, Qt::KeepAspectRatio ); +} + +void +PackageChooserPage::currentChanged( const QModelIndex& index ) +{ + if ( !index.isValid() || !ui->products->selectionModel()->hasSelection() ) + { + ui->productName->setText( m_introduction.name.get() ); + ui->productScreenshot->setPixmap( m_introduction.screenshot ); + ui->productDescription->setText( m_introduction.description.get() ); + } + else + { + const auto* model = ui->products->model(); + + ui->productName->setText( model->data( index, PackageListModel::NameRole ).toString() ); + ui->productDescription->setText( model->data( index, PackageListModel::DescriptionRole ).toString() ); + + QPixmap currentScreenshot = model->data( index, PackageListModel::ScreenshotRole ).value< QPixmap >(); + if ( currentScreenshot.isNull() ) + { + ui->productScreenshot->setPixmap( m_introduction.screenshot ); + } + else + { + ui->productScreenshot->setPixmap( smartClip( currentScreenshot, ui->productScreenshot->size() ) ); + } + } +} + +void +PackageChooserPage::updateLabels() +{ + if ( ui && ui->products && ui->products->selectionModel() ) + { + currentChanged( ui->products->selectionModel()->currentIndex() ); + } + else + { + currentChanged( QModelIndex() ); + } + emit selectionChanged(); +} + +void +PackageChooserPage::setModel( QAbstractItemModel* model ) +{ + ui->products->setModel( model ); + currentChanged( QModelIndex() ); + connect( ui->products->selectionModel(), + &QItemSelectionModel::selectionChanged, + this, + &PackageChooserPage::updateLabels ); +} + +void +PackageChooserPage::setSelection( const QModelIndex& index ) +{ + if ( index.isValid() ) + { + ui->products->selectionModel()->select( index, QItemSelectionModel::Select ); + currentChanged( index ); + } +} + +bool +PackageChooserPage::hasSelection() const +{ + return ui && ui->products && ui->products->selectionModel() && ui->products->selectionModel()->hasSelection(); +} + +QStringList +PackageChooserPage::selectedPackageIds() const +{ + if ( !( ui && ui->products && ui->products->selectionModel() ) ) + { + return QStringList(); + } + + const auto* model = ui->products->model(); + QStringList ids; + for ( const auto& index : ui->products->selectionModel()->selectedIndexes() ) + { + QString pid = model->data( index, PackageListModel::IdRole ).toString(); + if ( !pid.isEmpty() ) + { + ids.append( pid ); + } + } + return ids; +} + +void +PackageChooserPage::setIntroduction( const PackageItem& item ) +{ + m_introduction.name = item.name; + m_introduction.description = item.description; + m_introduction.screenshot = item.screenshot; +} diff --git a/src/modules/packagechooser/PackageChooserPage.h b/src/modules/packagechooser/PackageChooserPage.h new file mode 100644 index 000000000..b4ef2169b --- /dev/null +++ b/src/modules/packagechooser/PackageChooserPage.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef PACKAGECHOOSERPAGE_H +#define PACKAGECHOOSERPAGE_H + +#include "PackageModel.h" + +#include +#include + +namespace Ui +{ +class PackageChooserPage; +} + +class PackageChooserPage : public QWidget +{ + Q_OBJECT +public: + explicit PackageChooserPage( PackageChooserMode mode, QWidget* parent = nullptr ); + + /// @brief Sets the data model for the listview + void setModel( QAbstractItemModel* model ); + + /// @brief Sets the introductory (no-package-selected) texts + void setIntroduction( const PackageItem& item ); + /// @brief Selects a listview item + void setSelection( const QModelIndex& index ); + /// @brief Is anything selected? + bool hasSelection() const; + /** @brief Get the list of selected ids + * + * This list may be empty (if none is selected). + */ + QStringList selectedPackageIds() const; + +public slots: + void currentChanged( const QModelIndex& index ); + void updateLabels(); + +signals: + void selectionChanged(); + +private: + Ui::PackageChooserPage* ui; + PackageItem m_introduction; +}; + +#endif // PACKAGECHOOSERPAGE_H diff --git a/src/modules/packagechooser/PackageChooserViewStep.cpp b/src/modules/packagechooser/PackageChooserViewStep.cpp new file mode 100644 index 000000000..c933147ee --- /dev/null +++ b/src/modules/packagechooser/PackageChooserViewStep.cpp @@ -0,0 +1,322 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "PackageChooserViewStep.h" + +#ifdef HAVE_XML +#include "ItemAppData.h" +#endif +#ifdef HAVE_APPSTREAM +#include "ItemAppStream.h" +#include +#include +#endif +#include "PackageChooserPage.h" +#include "PackageModel.h" + +#include "GlobalStorage.h" +#include "JobQueue.h" + +#include "locale/TranslatableConfiguration.h" +#include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" +#include "utils/Variant.h" + +#include +#include + +CALAMARES_PLUGIN_FACTORY_DEFINITION( PackageChooserViewStepFactory, registerPlugin< PackageChooserViewStep >(); ) + +PackageChooserViewStep::PackageChooserViewStep( QObject* parent ) + : Calamares::ViewStep( parent ) + , m_widget( nullptr ) + , m_model( nullptr ) + , m_mode( PackageChooserMode::Required ) + , m_stepName( nullptr ) +{ + emit nextStatusChanged( false ); +} + + +PackageChooserViewStep::~PackageChooserViewStep() +{ + if ( m_widget && m_widget->parent() == nullptr ) + { + m_widget->deleteLater(); + } + delete m_model; + delete m_stepName; +} + + +QString +PackageChooserViewStep::prettyName() const +{ + return m_stepName ? m_stepName->get() : tr( "Packages" ); +} + + +QWidget* +PackageChooserViewStep::widget() +{ + if ( !m_widget ) + { + m_widget = new PackageChooserPage( m_mode, nullptr ); + connect( m_widget, &PackageChooserPage::selectionChanged, [=]() { + emit nextStatusChanged( this->isNextEnabled() ); + } ); + + if ( m_model ) + { + hookupModel(); + } + else + { + cWarning() << "PackageChooser Widget created before model."; + } + } + return m_widget; +} + + +bool +PackageChooserViewStep::isNextEnabled() const +{ + if ( !m_model ) + { + return false; + } + + if ( !m_widget ) + { + // No way to have changed anything + return true; + } + + switch ( m_mode ) + { + case PackageChooserMode::Optional: + case PackageChooserMode::OptionalMultiple: + // zero or one OR zero or more + return true; + case PackageChooserMode::Required: + case PackageChooserMode::RequiredMultiple: + // exactly one OR one or more + return m_widget->hasSelection(); + } + + NOTREACHED return true; +} + + +bool +PackageChooserViewStep::isBackEnabled() const +{ + return true; +} + + +bool +PackageChooserViewStep::isAtBeginning() const +{ + return true; +} + + +bool +PackageChooserViewStep::isAtEnd() const +{ + return true; +} + +void +PackageChooserViewStep::onActivate() +{ + if ( !m_widget->hasSelection() ) + { + m_widget->setSelection( m_defaultIdx ); + } +} + +void +PackageChooserViewStep::onLeave() +{ + QString key = QStringLiteral( "packagechooser_%1" ).arg( m_id ); + QString value; + if ( m_widget->hasSelection() ) + { + value = m_widget->selectedPackageIds().join( ',' ); + } + Calamares::JobQueue::instance()->globalStorage()->insert( key, value ); + + cDebug() << "PackageChooser" << key << "selected" << value; +} + +Calamares::JobList +PackageChooserViewStep::jobs() const +{ + Calamares::JobList l; + return l; +} + +void +PackageChooserViewStep::setConfigurationMap( const QVariantMap& configurationMap ) +{ + QString mode = CalamaresUtils::getString( configurationMap, "mode" ); + bool mode_ok = false; + if ( !mode.isEmpty() ) + { + m_mode = roleNames().find( mode, mode_ok ); + } + if ( !mode_ok ) + { + m_mode = PackageChooserMode::Required; + } + + m_id = CalamaresUtils::getString( configurationMap, "id" ); + if ( m_id.isEmpty() ) + { + // Not set, so use the instance id + // TODO: use a stronger type than QString for structured IDs + m_id = moduleInstanceKey().split( '@' ).last(); + } + + bool labels_ok = false; + auto labels = CalamaresUtils::getSubMap( configurationMap, "labels", labels_ok ); + if ( labels_ok ) + { + if ( labels.contains( "step" ) ) + { + m_stepName = new CalamaresUtils::Locale::TranslatedString( labels, "step" ); + } + } + + QString default_item_id = CalamaresUtils::getString( configurationMap, "default" ); + m_defaultIdx = QModelIndex(); + + bool first_time = !m_model; + if ( configurationMap.contains( "items" ) ) + { + fillModel( configurationMap.value( "items" ).toList() ); + } + + if ( first_time && m_widget && m_model ) + { + hookupModel(); + } + + // find default item + if ( first_time && m_model && !default_item_id.isEmpty() ) + { + for ( int item_n = 0; item_n < m_model->packageCount(); ++item_n ) + { + QModelIndex item_idx = m_model->index( item_n, 0 ); + QVariant item_id = m_model->data( item_idx, PackageListModel::IdRole ); + + if ( item_id.toString() == default_item_id ) + { + m_defaultIdx = item_idx; + break; + } + } + } +} + +void +PackageChooserViewStep::fillModel( const QVariantList& items ) +{ + if ( !m_model ) + { + m_model = new PackageListModel( nullptr ); + } + + if ( items.isEmpty() ) + { + cWarning() << "No *items* for PackageChooser module."; + return; + } + +#ifdef HAVE_APPSTREAM + std::unique_ptr< AppStream::Pool > pool; + bool poolOk = false; +#endif + + cDebug() << "Loading PackageChooser model items from config"; + int item_index = 0; + for ( const auto& item_it : items ) + { + ++item_index; + QVariantMap item_map = item_it.toMap(); + if ( item_map.isEmpty() ) + { + cWarning() << "PackageChooser entry" << item_index << "is not valid."; + continue; + } + + if ( item_map.contains( "appdata" ) ) + { +#ifdef HAVE_XML + m_model->addPackage( fromAppData( item_map ) ); +#else + cWarning() << "Loading AppData XML is not supported."; +#endif + } + else if ( item_map.contains( "appstream" ) ) + { +#ifdef HAVE_APPSTREAM + if ( !pool ) + { + pool = std::make_unique< AppStream::Pool >(); + pool->setLocale( QStringLiteral( "ALL" ) ); + poolOk = pool->load(); + } + if ( pool && poolOk ) + { + m_model->addPackage( fromAppStream( *pool, item_map ) ); + } +#else + cWarning() << "Loading AppStream data is not supported."; +#endif + } + else + { + m_model->addPackage( PackageItem( item_map ) ); + } + } +} + +void +PackageChooserViewStep::hookupModel() +{ + if ( !m_model || !m_widget ) + { + cError() << "Can't hook up model until widget and model both exist."; + return; + } + + m_widget->setModel( m_model ); + for ( int i = 0; i < m_model->packageCount(); ++i ) + { + const auto& package = m_model->packageData( i ); + if ( package.id.isEmpty() ) + { + m_widget->setIntroduction( package ); + break; + } + } +} diff --git a/src/modules/packagechooser/PackageChooserViewStep.h b/src/modules/packagechooser/PackageChooserViewStep.h new file mode 100644 index 000000000..29e65ef82 --- /dev/null +++ b/src/modules/packagechooser/PackageChooserViewStep.h @@ -0,0 +1,76 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef PACKAGECHOOSERVIEWSTEP_H +#define PACKAGECHOOSERVIEWSTEP_H + +#include "PluginDllMacro.h" +#include "locale/TranslatableConfiguration.h" +#include "utils/PluginFactory.h" +#include "viewpages/ViewStep.h" + +#include "PackageModel.h" + +#include +#include +#include + +class PackageChooserPage; + +class PLUGINDLLEXPORT PackageChooserViewStep : public Calamares::ViewStep +{ + Q_OBJECT + +public: + explicit PackageChooserViewStep( QObject* parent = nullptr ); + virtual ~PackageChooserViewStep() override; + + QString prettyName() const override; + + QWidget* widget() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + void onActivate() override; + void onLeave() override; + + Calamares::JobList jobs() const override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + void fillModel( const QVariantList& items ); + void hookupModel(); + + PackageChooserPage* m_widget; + PackageListModel* m_model; + + // Configuration + PackageChooserMode m_mode; + QString m_id; + CalamaresUtils::Locale::TranslatedString* m_stepName; // As it appears in the sidebar + QModelIndex m_defaultIdx; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( PackageChooserViewStepFactory ) + +#endif // PACKAGECHOOSERVIEWSTEP_H diff --git a/src/modules/packagechooser/PackageModel.cpp b/src/modules/packagechooser/PackageModel.cpp new file mode 100644 index 000000000..12995fad5 --- /dev/null +++ b/src/modules/packagechooser/PackageModel.cpp @@ -0,0 +1,155 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "PackageModel.h" + +#include "utils/Logger.h" +#include "utils/Variant.h" + +const NamedEnumTable< PackageChooserMode >& +roleNames() +{ + static const NamedEnumTable< PackageChooserMode > names { + { "optional", PackageChooserMode::Optional }, + { "required", PackageChooserMode::Required }, + { "optionalmultiple", PackageChooserMode::OptionalMultiple }, + { "requiredmultiple", PackageChooserMode::RequiredMultiple }, + // and a bunch of aliases + { "zero-or-one", PackageChooserMode::Optional }, + { "radio", PackageChooserMode::Required }, + { "one", PackageChooserMode::Required }, + { "set", PackageChooserMode::OptionalMultiple }, + { "zero-or-more", PackageChooserMode::OptionalMultiple }, + { "multiple", PackageChooserMode::RequiredMultiple }, + { "one-or-more", PackageChooserMode::RequiredMultiple } + }; + return names; +} + +PackageItem::PackageItem() {} + +PackageItem::PackageItem( const QString& a_id, + const QString& a_package, + const QString& a_name, + const QString& a_description ) + : id( a_id ) + , package( a_package ) + , name( a_name ) + , description( a_description ) +{ +} + +PackageItem::PackageItem( const QString& a_id, + const QString& a_package, + const QString& a_name, + const QString& a_description, + const QString& screenshotPath ) + : id( a_id ) + , package( a_package ) + , name( a_name ) + , description( a_description ) + , screenshot( screenshotPath ) +{ +} + +PackageItem::PackageItem::PackageItem( const QVariantMap& item_map ) + : id( CalamaresUtils::getString( item_map, "id" ) ) + , package( CalamaresUtils::getString( item_map, "package" ) ) + , name( CalamaresUtils::Locale::TranslatedString( item_map, "name" ) ) + , description( CalamaresUtils::Locale::TranslatedString( item_map, "description" ) ) + , screenshot( CalamaresUtils::getString( item_map, "screenshot" ) ) +{ + if ( name.isEmpty() && id.isEmpty() ) + { + name = QObject::tr( "No product" ); + } + else if ( name.isEmpty() ) + { + cWarning() << "PackageChooser item" << id << "has an empty name."; + } + if ( description.isEmpty() ) + { + description = QObject::tr( "No description provided." ); + } +} + +PackageListModel::PackageListModel( QObject* parent ) + : QAbstractListModel( parent ) +{ +} + +PackageListModel::PackageListModel( PackageList&& items, QObject* parent ) + : QAbstractListModel( parent ) + , m_packages( std::move( items ) ) +{ +} + +PackageListModel::~PackageListModel() {} + +void +PackageListModel::addPackage( PackageItem&& p ) +{ + // Only add valid packages + if ( p.isValid() ) + { + int c = m_packages.count(); + beginInsertRows( QModelIndex(), c, c ); + m_packages.append( p ); + endInsertRows(); + } +} + +int +PackageListModel::rowCount( const QModelIndex& index ) const +{ + // For lists, valid indexes have zero children; only the root index has them + return index.isValid() ? 0 : m_packages.count(); +} + +QVariant +PackageListModel::data( const QModelIndex& index, int role ) const +{ + if ( !index.isValid() ) + { + return QVariant(); + } + int row = index.row(); + if ( row >= m_packages.count() || row < 0 ) + { + return QVariant(); + } + + if ( role == Qt::DisplayRole /* Also PackageNameRole */ ) + { + return m_packages[ row ].name.get(); + } + else if ( role == DescriptionRole ) + { + return m_packages[ row ].description.get(); + } + else if ( role == ScreenshotRole ) + { + return m_packages[ row ].screenshot; + } + else if ( role == IdRole ) + { + return m_packages[ row ].id; + } + + return QVariant(); +} diff --git a/src/modules/packagechooser/PackageModel.h b/src/modules/packagechooser/PackageModel.h new file mode 100644 index 000000000..ee3b30185 --- /dev/null +++ b/src/modules/packagechooser/PackageModel.h @@ -0,0 +1,128 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef PACKAGEMODEL_H +#define PACKAGEMODEL_H + +#include "locale/TranslatableConfiguration.h" +#include "utils/NamedEnum.h" + +#include +#include +#include +#include + +enum class PackageChooserMode +{ + Optional, // zero or one + Required, // exactly one + OptionalMultiple, // zero or more + RequiredMultiple // one or more +}; + +const NamedEnumTable< PackageChooserMode >& roleNames(); + +struct PackageItem +{ + QString id; + // FIXME: unused + QString package; + CalamaresUtils::Locale::TranslatedString name; + CalamaresUtils::Locale::TranslatedString description; + QPixmap screenshot; + + /// @brief Create blank PackageItem + PackageItem(); + /** @brief Creates a PackageItem from given strings + * + * This constructor sets all the text members, + * but leaves the screenshot blank. Set that separately. + */ + PackageItem( const QString& id, const QString& package, const QString& name, const QString& description ); + + /** @brief Creates a PackageItem from given strings. + * + * Set all the text members and load the screenshot from the given + * @p screenshotPath, which may be a QRC path (:/path/in/qrc) or + * a filesystem path, whatever QPixmap understands. + */ + PackageItem( const QString& id, + const QString& package, + const QString& name, + const QString& description, + const QString& screenshotPath ); + + /** @brief Creates a PackageItem from a QVariantMap + * + * This is intended for use when loading PackageItems from a + * configuration map. It will look up the various keys in the map + * and handle translation strings as well. + */ + PackageItem( const QVariantMap& map ); + + /** @brief Is this item valid? + * + * A valid item has an untranslated name available. + */ + bool isValid() const { return !name.isEmpty(); } + + /** @brief Is this a (the) No-Package package? + * + * There should be at most one No-Package item in a collection + * of PackageItems. That one will be used to describe a + * "no package" situation. + */ + bool isNonePackage() const { return id.isEmpty(); } +}; + +using PackageList = QVector< PackageItem >; + +class PackageListModel : public QAbstractListModel +{ +public: + PackageListModel( PackageList&& items, QObject* parent ); + PackageListModel( QObject* parent ); + virtual ~PackageListModel() override; + + /** @brief Add a package @p to the model + * + * Only valid packages are added -- that is, they must have a name. + */ + void addPackage( PackageItem&& p ); + + int rowCount( const QModelIndex& index ) const override; + QVariant data( const QModelIndex& index, int role ) const override; + + /// @brief Direct (non-abstract) access to package data + const PackageItem& packageData( int r ) const { return m_packages[ r ]; } + /// @brief Direct (non-abstract) count of package data + int packageCount() const { return m_packages.count(); } + + enum Roles : int + { + NameRole = Qt::DisplayRole, + DescriptionRole = Qt::UserRole, + ScreenshotRole, + IdRole + }; + +private: + PackageList m_packages; +}; + +#endif diff --git a/src/modules/packagechooser/Tests.cpp b/src/modules/packagechooser/Tests.cpp new file mode 100644 index 000000000..639d06d65 --- /dev/null +++ b/src/modules/packagechooser/Tests.cpp @@ -0,0 +1,91 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#include "Tests.h" + +#ifdef HAVE_XML +#include "ItemAppData.h" +#endif +#ifdef HAVE_APPSTREAM +#include "ItemAppStream.h" +#endif +#include "PackageModel.h" + +#include "utils/Logger.h" + +#include + +QTEST_MAIN( PackageChooserTests ) + +PackageChooserTests::PackageChooserTests() {} + +PackageChooserTests::~PackageChooserTests() {} + +void +PackageChooserTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); +} + +void +PackageChooserTests::testBogus() +{ + QVERIFY( true ); +} + +void +PackageChooserTests::testAppData() +{ + // Path from the build-dir and from the running-the-test varies, + // for in-source build, for build/, and for tests-in-build/, + // so look in multiple places. + QString appdataName( "io.calamares.calamares.appdata.xml" ); + for ( const auto& prefix : QStringList { "", "../", "../../../", "../../../../" } ) + { + if ( QFile::exists( prefix + appdataName ) ) + { + appdataName = prefix + appdataName; + break; + } + } + QVERIFY( QFile::exists( appdataName ) ); + + QVariantMap m; + m.insert( "appdata", appdataName ); + +#ifdef HAVE_XML + PackageItem p1 = fromAppData( m ); + QVERIFY( p1.isValid() ); + QCOMPARE( p1.id, "io.calamares.calamares.desktop" ); + QCOMPARE( p1.name.get(), "Calamares" ); + // The entry has precedence + QCOMPARE( p1.description.get(), "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" ) ), "Calamares Linux Installer" ); + QCOMPARE( p1.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." ); + QVERIFY( p1.screenshot.isNull() ); + + m.insert( "id", "calamares" ); + m.insert( "screenshot", ":/images/calamares.png" ); + PackageItem p2 = fromAppData( m ); + QVERIFY( p2.isValid() ); + QCOMPARE( p2.id, "calamares" ); + QCOMPARE( p2.description.get( QLocale( "nl" ) ), "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 new file mode 100644 index 000000000..62efe92cc --- /dev/null +++ b/src/modules/packagechooser/Tests.h @@ -0,0 +1,37 @@ +/* === This file is part of Calamares - === + * + * Copyright 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 . + */ + +#ifndef PACKAGECHOOSERTESTS_H +#define PACKAGECHOOSERTESTS_H + +#include + +class PackageChooserTests : public QObject +{ + Q_OBJECT +public: + PackageChooserTests(); + ~PackageChooserTests() override; + +private Q_SLOTS: + void initTestCase(); + void testBogus(); + void testAppData(); +}; + +#endif diff --git a/src/modules/packagechooser/images/calamares.png b/src/modules/packagechooser/images/calamares.png new file mode 100644 index 000000000..452e4450c Binary files /dev/null and b/src/modules/packagechooser/images/calamares.png differ diff --git a/src/modules/packagechooser/images/no-selection.png b/src/modules/packagechooser/images/no-selection.png new file mode 100644 index 000000000..437c97051 Binary files /dev/null and b/src/modules/packagechooser/images/no-selection.png differ diff --git a/src/modules/packagechooser/packagechooser.conf b/src/modules/packagechooser/packagechooser.conf new file mode 100644 index 000000000..68330337b --- /dev/null +++ b/src/modules/packagechooser/packagechooser.conf @@ -0,0 +1,113 @@ +# Configuration for the low-density software chooser +--- +# The packagechooser writes a GlobalStorage value for the choice that +# has been made. The key is *packagechooser_*. If *id* is set here, +# it is substituted into the key name. If it is not set, the module's +# instance name is used; see the *instances* section of `settings.conf`. +# If there is just one packagechooser module, and no *id* is set, +# resulting GS key is probably *packagechooser_packagechooser*. +# +# The GS value is a comma-separated list of the IDs of the selected +# packages, or an empty string if none is selected. +# +# id: "" + +# Software selection mode, to set whether the software packages +# can be chosen singly, or multiply. +# +# Possible modes are "optional", "required" (for zero or one) +# or "optionalmultiple", "requiredmultiple" (for zero-or-more +# or one-or-more). +mode: required + +# Human-visible strings in this module. These are all optional. +# The following translated keys are used: +# - *step*, used in the overall progress view (left-hand pane) +# +# Each key can have a [locale] added to it, which is used as +# the translated string for that locale. For the strings +# associated with the "no-selection" item, see *items*, below +# with the explicit id "". +# +labels: + step: "Packages" + step[nl]: "Pakketten" + +# (Optional) 'id' of pre-selected list-view item. +# Pre-selects one of the items below. +# default: kde + +# Items to display in the chooser. In general, this should be a +# pretty short list to avoid overwhelming the UI. This is a list +# of objects, and the items are displayed in list order. +# +# Either provide the data for an item in the list (using the keys +# below), or use existing AppData XML files, or use AppStream cache +# as a source for the data. +# +# For data provided by the list: the item has an id, which is used in +# setting the value of *packagechooser_*. The following fields +# are mandatory: +# +# - *id* : ID for the product. The ID "" is special, and is used for +# "no package selected". Only include this if the mode allows +# selecting none. +# - *package* : Package name for the product. While mandatory, this is +# not actually used anywhere. +# - *name* : Human-readable name of the product. To provide translations, +# add a *[lang]* decoration as part of the key name, +# e.g. `name[nl]` for Dutch. +# The list of usable languages can be found in +# `CMakeLists.txt` or as part of the debug output of Calamares. +# - *description* : Human-readable description. These can be translated +# as well. +# - *screenshot* : Path to a single screenshot of the product. May be +# a filesystem path or a QRC path, +# e.g. ":/images/no-selection.png". +# +# Use the empty string "" as ID / key for the "no selection" item if +# you want to customize the display of that item as well. +# +# For data provided by AppData XML: the item has an *appdata* +# key which points to an AppData XML file in the local filesystem. +# This file is parsed to provide the id (from AppData id), name +# (from AppData name), description (from AppData description paragraphs +# or the summary entries), and a screenshot (the default screenshot +# from AppData). No package is set (but that is unused anyway). +# +# AppData may contain IDs that are not useful inside Calamares, +# and the screenshot URL may be remote -- a remote URL will not +# be loaded and the screenshot will be missing. An item with *appdata* +# **may** specify an ID or screenshot path, as above. This will override +# the settings from AppData. +# +# For data provided by AppStream cache: the item has an *appstream* +# key which matches the AppStream identifier in the cache (e.g. +# *org.kde.kwrite.desktop*). Data is retrieved from the AppStream +# cache for that ID. The package name is set from the AppStream data. +# +# An item for AppStream may also contain an *id* and a *screenshot* +# key which will override the data from AppStream. +items: + - id: "" + package: "" + name: "No Desktop" + name[nl]: "Geen desktop" + description: "Please pick a desktop environment from the list. If you don't want to install a desktop, that's fine, your system will start up in text-only mode and you can install a desktop environment later." + description[nl]: "Kies eventueel een desktop-omgeving uit deze lijst. Als u geen desktop-omgeving wenst te gebruiken, kies er dan geen. In dat geval start het systeem straks op in tekst-modus en kunt u later alsnog een desktop-omgeving installeren." + screenshot: ":/images/no-selection.png" + - id: kde + package: kde + name: Plasma Desktop + description: "KDE Plasma Desktop, simple by default, a clean work area for real-world usage which intends to stay out of your way. Plasma is powerful when needed, enabling the user to create the workflow that makes them more effective to complete their tasks." + screenshot: ":/images/kde.png" + - id: gnome + package: gnome + name: GNOME + description: GNU Networked Object Modeling Environment Desktop + screenshot: ":/images/gnome.png" + - id: calamares + appdata: ../io.calamares.calamares.appdata.xml + screenshot: ":/images/calamares.png" + - id: kate + appstream: org.kde.kwrite.desktop diff --git a/src/modules/packagechooser/packagechooser.qrc b/src/modules/packagechooser/packagechooser.qrc new file mode 100644 index 000000000..3b9c96a5b --- /dev/null +++ b/src/modules/packagechooser/packagechooser.qrc @@ -0,0 +1,6 @@ + + + images/no-selection.png + images/calamares.png + + diff --git a/src/modules/packagechooser/page_package.ui b/src/modules/packagechooser/page_package.ui new file mode 100644 index 000000000..8349f2b52 --- /dev/null +++ b/src/modules/packagechooser/page_package.ui @@ -0,0 +1,87 @@ + + + PackageChooserPage + + + + 0 + 0 + 400 + 500 + + + + + 0 + 1 + + + + Form + + + + + + + + + 0 + 1 + + + + + + + + + + Product Name + + + + + + + + 1 + 0 + + + + TextLabel + + + Qt::AlignCenter + + + + + + + + 0 + 2 + + + + Long Product Description + + + true + + + true + + + + + + + + + + + + diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index 94f3cfdb6..e42e8e9b8 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -31,9 +31,9 @@ backend: dummy # # Set "update_db" to 'true' for refreshing the database on the # target system. On target installations, which got installed by -# unsquashing, a full system update may be needed. Otherwise +# unsquashing, a full system update may be needed. Otherwise # post-installing additional packages may result in conflicts. -# Therefore set also "update_system" to 'true'. +# Therefore set also "update_system" to 'true'. # skip_if_no_internet: false update_db: true @@ -87,9 +87,25 @@ update_system: false # pre-script: touch /tmp/installing-vi # post-script: rm -f /tmp/installing-vi # -# The pre- and post-scripts are optional, but you cannot leave both out: using -# "package: vi" with neither script option will trick Calamares into -# trying to install a package named "package: vi", which is unlikely to work. +# The pre- and post-scripts are optional, but you cannot leave both out +# if you do use the *package* key: using "package: vi" with neither script +# option will trick Calamares into trying to install a package named +# "package: vi", which is unlikely to work. +# +# The pre- and post-scripts are **not** executed by a shell unless you +# explicitly invoke `/bin/sh` in them. The command-lines are passed +# to exec(), which does not understand shell syntax. In other words: +# +# pre-script: ls | wc -l +# +# Will fail, because `|` is passed as a command-line argument to ls, +# as are `wc`, and `-l`. No shell pipeline is set up, and ls is likely +# to complain. Invoke the shell explicitly: +# +# pre-script: /bin/sh -c \"ls | wc -l\" +# +# The above note on shell-expansion applies to versions up-to-and-including +# Calamares 3.2.12, but will change in future. # # Any package name may be localized; this is used to install localization # packages for software based on the selected system locale. By including @@ -104,7 +120,7 @@ update_system: false # # Take care that just plain `LOCALE` will not be replaced, so `foo-LOCALE` will # be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE` -# **will** be removed from the list of packages (i.e. not installed), if +# **will** be removed from the list of packages (i.e. not installed), if # English is selected. If a non-English locale is selected, then `foo-LOCALE` # will be installed, unchanged (no language-name-substitution occurs). # diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 3ca93ec8f..2ac926346 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -5,6 +5,8 @@ option( DEBUG_PARTITION_UNSAFE "Allow unsafe partitioning choices." OFF ) option( DEBUG_PARTITION_LAME "Unsafe partitioning will error out on exec." ON ) +include_directories( ${CMAKE_SOURCE_DIR} ) # For 3rdparty + set( _partition_defs ) if( DEBUG_PARTITION_UNSAFE ) if( DEBUG_PARTITION_LAME ) @@ -20,15 +22,16 @@ set_package_properties( KPMcore PROPERTIES PURPOSE "For partition module" ) +find_package( KF5Config CONFIG ) +find_package( KF5I18n CONFIG ) +find_package( KF5WidgetsAddons CONFIG ) -if ( KPMcore_FOUND ) - find_package( Qt5 REQUIRED DBus ) - find_package( KF5 REQUIRED Config CoreAddons I18n WidgetsAddons ) - - if( KPMcore_VERSION VERSION_GREATER_EQUAL "4.0" ) - list( APPEND _partition_defs WITH_KPMCORE4API ) # kpmcore 4 with new API - elseif( KPMcore_VERSION VERSION_GREATER "3.3.70" ) - message( FATAL_ERROR "KPMCore beta versions ${KPMcore_VERSION} are not supported" ) +if ( KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND ) + if ( KPMcore_VERSION VERSION_GREATER "3.3.0") + list( APPEND _partition_defs WITH_KPMCORE331API) # kpmcore > 3.3.0 with deprecations + endif() + if ( KPMcore_VERSION VERSION_GREATER "3.90") + list( APPEND _partition_defs WITH_KPMCORE4API) # kpmcore 4 with new API endif() include_directories( ${KPMCORE_INCLUDE_DIR} ) @@ -102,5 +105,9 @@ if ( KPMcore_FOUND ) SHARED_LIB ) else() - calamares_skip_module( "partition (missing suitable KPMcore)" ) + if ( NOT KPMcore_FOUND ) + calamares_skip_module( "partition (missing suitable KPMcore)" ) + else() + calamares_skip_module( "partition (missing dependencies for KPMcore)" ) + endif() endif() diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 5443a5d74..b1eee4cef 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -450,7 +450,7 @@ isEfiBootable( const Partition* candidate ) QString findFS( QString fsName, FileSystem::Type* fsType ) { - QStringList fsLanguage { QLatin1Literal( "C" ) }; // Required language list to turn off localization + QStringList fsLanguage { QLatin1String( "C" ) }; // Required language list to turn off localization if ( fsName.isEmpty() ) fsName = QStringLiteral( "ext4" ); diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp index 4d37e3b39..ea318e85c 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.cpp +++ b/src/modules/partition/gui/DeviceInfoWidget.cpp @@ -65,7 +65,7 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) m_ptIcon->setPalette( palette ); m_ptLabel->setPalette( palette ); - CALAMARES_RETRANSLATE( retranslateUi(); ) + CALAMARES_RETRANSLATE_SLOT( &DeviceInfoWidget::retranslateUi ) } diff --git a/src/modules/partition/gui/PartitionLabelsView.cpp b/src/modules/partition/gui/PartitionLabelsView.cpp index f47dc41e1..270710e02 100644 --- a/src/modules/partition/gui/PartitionLabelsView.cpp +++ b/src/modules/partition/gui/PartitionLabelsView.cpp @@ -276,7 +276,7 @@ PartitionLabelsView::drawLabels( QPainter* painter, 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().background().color().lighter( 102 ) ); + painter->setBrush( QPalette().window().color().lighter( 102 ) ); painter->setPen( Qt::NoPen ); painter->drawRoundedRect( hoverRect, CORNER_RADIUS, CORNER_RADIUS ); diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index db282e975..17a001237 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -277,7 +277,7 @@ PartitionViewStep::createSummaryWidget() const jobsLabel->setText( jobsLines.join( "
" ) ); jobsLabel->setMargin( CalamaresUtils::defaultFontHeight() / 2 ); QPalette pal; - pal.setColor( QPalette::Background, pal.background().color().lighter( 108 ) ); + pal.setColor( QPalette::Background, pal.window().color().lighter( 108 ) ); jobsLabel->setAutoFillBackground( true ); jobsLabel->setPalette( pal ); } @@ -646,7 +646,7 @@ PartitionViewStep::checkRequirements() Calamares::RequirementsList l; l.append( { - QLatin1Literal( "partitions" ), + QLatin1String( "partitions" ), []{ return tr( "has at least one disk device available." ); }, []{ return tr( "There are no partitons to install on." ); }, m_core->deviceModel()->rowCount() > 0, // satisfied diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index 9084be2cc..85479fbb3 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -19,7 +19,7 @@ #include "ScanningDialog.h" -#include "widgets/waitingspinnerwidget.h" +#include "3rdparty/waitingspinnerwidget.h" #include #include diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 385269fc7..6fbb44cb4 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -131,4 +131,7 @@ defaultFileSystemType: "ext4" # # The value is in Gibibytes (GiB). # +# BIG FAT WARNING: except for OEM-phase-0 use, you should be using +# the welcome module, **and** configure this value in +# `welcome.conf`, not here. # requiredStorage: 3.5 diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index c1021eeda..f6cd98008 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -8,6 +8,7 @@ calamares_add_plugin( preservefiles PreserveFiles.cpp LINK_PRIVATE_LIBRARIES calamares + # REQUIRES mount # To set the rootMountPoint SHARED_LIB EMERGENCY ) diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp index 96d26274c..175f8e4f8 100644 --- a/src/modules/preservefiles/PreserveFiles.cpp +++ b/src/modules/preservefiles/PreserveFiles.cpp @@ -52,7 +52,7 @@ QString targetPrefix() } } - return QLatin1Literal( "/" ); + return QLatin1String( "/" ); } QString atReplacements( QString s ) diff --git a/src/modules/shellprocess/ShellProcessJob.cpp b/src/modules/shellprocess/ShellProcessJob.cpp index d688540ae..ff73e83af 100644 --- a/src/modules/shellprocess/ShellProcessJob.cpp +++ b/src/modules/shellprocess/ShellProcessJob.cpp @@ -18,13 +18,13 @@ #include "ShellProcessJob.h" -#include #include +#include #include #include "CalamaresVersion.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" #include "utils/CommandList.h" #include "utils/Logger.h" @@ -55,7 +55,7 @@ Calamares::JobResult ShellProcessJob::exec() { - if ( ! m_commands || m_commands->isEmpty() ) + if ( !m_commands || m_commands->isEmpty() ) { cWarning() << "No commands to execute" << moduleInstanceKey(); return Calamares::JobResult::ok(); @@ -69,18 +69,25 @@ void ShellProcessJob::setConfigurationMap( const QVariantMap& configurationMap ) { bool dontChroot = CalamaresUtils::getBool( configurationMap, "dontChroot", false ); - int timeout = CalamaresUtils::getInteger( configurationMap, "timeout", 10 ); + qint64 timeout = CalamaresUtils::getInteger( configurationMap, "timeout", 10 ); if ( timeout < 1 ) + { timeout = 10; + } if ( configurationMap.contains( "script" ) ) { - m_commands = new CalamaresUtils::CommandList( configurationMap.value( "script" ), !dontChroot, timeout ); + m_commands = new CalamaresUtils::CommandList( + configurationMap.value( "script" ), !dontChroot, std::chrono::seconds( timeout ) ); if ( m_commands->isEmpty() ) + { cDebug() << "ShellProcessJob: \"script\" contains no commands for" << moduleInstanceKey(); + } } else + { cWarning() << "No script given for ShellProcessJob" << moduleInstanceKey(); + } } -CALAMARES_PLUGIN_FACTORY_DEFINITION( ShellProcessJobFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( ShellProcessJobFactory, registerPlugin< ShellProcessJob >(); ) diff --git a/src/modules/shellprocess/ShellProcessJob.h b/src/modules/shellprocess/ShellProcessJob.h index 3111fc26e..b9a255d95 100644 --- a/src/modules/shellprocess/ShellProcessJob.h +++ b/src/modules/shellprocess/ShellProcessJob.h @@ -50,4 +50,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( ShellProcessJobFactory ) -#endif // SHELLPROCESSJOB_H +#endif // SHELLPROCESSJOB_H diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index 488f4a7af..943a70957 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -34,14 +34,12 @@ QTEST_GUILESS_MAIN( ShellProcessTests ) using CommandList = CalamaresUtils::CommandList; +using std::operator""s; -ShellProcessTests::ShellProcessTests() -{ -} -ShellProcessTests::~ShellProcessTests() -{ -} +ShellProcessTests::ShellProcessTests() {} + +ShellProcessTests::~ShellProcessTests() {} void ShellProcessTests::initTestCase() @@ -64,15 +62,16 @@ ShellProcessTests::testProcessListSampleConfig() } } - CommandList cl( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); QVERIFY( !cl.isEmpty() ); QCOMPARE( cl.count(), 3 ); - QCOMPARE( cl.at(0).timeout(), -1 ); - QCOMPARE( cl.at(2).timeout(), 3600 ); // slowloris + + QCOMPARE( cl.at( 0 ).timeout(), CalamaresUtils::CommandLine::TimeoutNotSet() ); + QCOMPARE( cl.at( 2 ).timeout(), 3600s ); // slowloris } -void ShellProcessTests::testProcessListFromList() +void +ShellProcessTests::testProcessListFromList() { YAML::Node doc = YAML::Load( R"(--- script: @@ -80,8 +79,7 @@ script: - "ls /nonexistent" - "/bin/false" )" ); - CommandList cl( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); QVERIFY( !cl.isEmpty() ); QCOMPARE( cl.count(), 3 ); @@ -92,51 +90,51 @@ script: - false - "ls /nonexistent" )" ); - CommandList cl1( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl1( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); QVERIFY( !cl1.isEmpty() ); QCOMPARE( cl1.count(), 2 ); // One element ignored } -void ShellProcessTests::testProcessListFromString() +void +ShellProcessTests::testProcessListFromString() { YAML::Node doc = YAML::Load( R"(--- script: "ls /tmp" )" ); - CommandList cl( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + QVERIFY( !cl.isEmpty() ); QCOMPARE( cl.count(), 1 ); - QCOMPARE( cl.at(0).timeout(), 10 ); - QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); + QCOMPARE( cl.at( 0 ).timeout(), 10s ); + QCOMPARE( cl.at( 0 ).command(), QStringLiteral( "ls /tmp" ) ); // Not a string doc = YAML::Load( R"(--- script: false )" ); - CommandList cl1( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl1( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); QVERIFY( cl1.isEmpty() ); QCOMPARE( cl1.count(), 0 ); - } -void ShellProcessTests::testProcessFromObject() +void +ShellProcessTests::testProcessFromObject() { YAML::Node doc = YAML::Load( R"(--- script: command: "ls /tmp" timeout: 20 )" ); - CommandList cl( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + QVERIFY( !cl.isEmpty() ); QCOMPARE( cl.count(), 1 ); - QCOMPARE( cl.at(0).timeout(), 20 ); - QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); + QCOMPARE( cl.at( 0 ).timeout(), 20s ); + QCOMPARE( cl.at( 0 ).command(), QStringLiteral( "ls /tmp" ) ); } -void ShellProcessTests::testProcessListFromObject() +void +ShellProcessTests::testProcessListFromObject() { YAML::Node doc = YAML::Load( R"(--- script: @@ -144,34 +142,36 @@ script: timeout: 12 - "-/bin/false" )" ); - CommandList cl( - CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); + CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ) ); QVERIFY( !cl.isEmpty() ); QCOMPARE( cl.count(), 2 ); - QCOMPARE( cl.at(0).timeout(), 12 ); - QCOMPARE( cl.at(0).command(), QStringLiteral( "ls /tmp" ) ); - QCOMPARE( cl.at(1).timeout(), -1 ); // not set + QCOMPARE( cl.at( 0 ).timeout(), 12s ); + QCOMPARE( cl.at( 0 ).command(), QStringLiteral( "ls /tmp" ) ); + QCOMPARE( cl.at( 1 ).timeout(), CalamaresUtils::CommandLine::TimeoutNotSet() ); // not set } -void ShellProcessTests::testRootSubstitution() +void +ShellProcessTests::testRootSubstitution() { YAML::Node doc = YAML::Load( R"(--- script: - "ls /tmp" )" ); QVariant plainScript = CalamaresUtils::yamlMapToVariant( doc ).toMap().value( "script" ); - QVariant rootScript = CalamaresUtils::yamlMapToVariant( - YAML::Load( R"(--- + QVariant rootScript = CalamaresUtils::yamlMapToVariant( YAML::Load( R"(--- script: - "ls @@ROOT@@" -)" ) ).toMap().value( "script" ); - QVariant userScript = CalamaresUtils::yamlMapToVariant( - YAML::Load( R"(--- +)" ) ) + .toMap() + .value( "script" ); + QVariant userScript = CalamaresUtils::yamlMapToVariant( YAML::Load( R"(--- script: - mktemp -d @@ROOT@@/calatestXXXXXXXX - "chown @@USER@@ @@ROOT@@/calatest*" - rm -rf @@ROOT@@/calatest* -)" ) ).toMap().value( "script" ); +)" ) ) + .toMap() + .value( "script" ); if ( !Calamares::JobQueue::instance() ) (void)new Calamares::JobQueue( nullptr ); @@ -182,30 +182,31 @@ script: QVERIFY( gs != nullptr ); qDebug() << "Expect WARNING, ERROR, WARNING"; + // Doesn't use @@ROOT@@, so no failures - QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); + QVERIFY( bool( CommandList( plainScript, false, 10s ).run() ) ); // Doesn't use @@ROOT@@, but does chroot, so fails - QVERIFY( !bool(CommandList(plainScript, true, 10 ).run()) ); + QVERIFY( !bool( CommandList( plainScript, true, 10s ).run() ) ); // Does use @@ROOT@@, which is not set, so fails - QVERIFY( !bool(CommandList(rootScript, false, 10 ).run()) ); + QVERIFY( !bool( CommandList( rootScript, false, 10s ).run() ) ); // .. fails for two reasons - QVERIFY( !bool(CommandList(rootScript, true, 10 ).run()) ); + QVERIFY( !bool( CommandList( rootScript, true, 10s ).run() ) ); gs->insert( "rootMountPoint", "/tmp" ); // Now that the root is set, two variants work .. still can't // chroot, unless the rootMountPoint contains a full system, // *and* we're allowed to chroot (ie. running tests as root). qDebug() << "Expect no output."; - QVERIFY( bool(CommandList(plainScript, false, 10 ).run()) ); - QVERIFY( bool(CommandList(rootScript, false, 10 ).run()) ); + QVERIFY( bool( CommandList( plainScript, false, 10s ).run() ) ); + QVERIFY( bool( CommandList( rootScript, false, 10s ).run() ) ); qDebug() << "Expect ERROR"; // But no user set yet - QVERIFY( !bool(CommandList(userScript, false, 10 ).run()) ); + QVERIFY( !bool( CommandList( userScript, false, 10s ).run() ) ); // Now play dangerous games with shell expansion gs->insert( "username", "`id -u`" ); - QVERIFY( bool(CommandList(userScript, false, 10 ).run()) ); + QVERIFY( bool( CommandList( userScript, false, 10s ).run() ) ); } diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp index 997a7bb9f..61a9c2ec2 100644 --- a/src/modules/summary/SummaryPage.cpp +++ b/src/modules/summary/SummaryPage.cpp @@ -184,7 +184,7 @@ SummaryPage::createBodyLabel( const QString& text ) const QLabel* label = new QLabel; label->setMargin( CalamaresUtils::defaultFontHeight() / 2 ); QPalette pal( palette() ); - pal.setColor( QPalette::Background, palette().background().color().lighter( 108 ) ); + pal.setColor( QPalette::Background, palette().window().color().lighter( 108 ) ); label->setAutoFillBackground( true ); label->setPalette( pal ); label->setText( text ); diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 7875ee6db..f101c8e6c 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -18,121 +18,109 @@ #include "TrackingJobs.h" +#include "network/Manager.h" #include "utils/CalamaresUtilsSystem.h" #include "utils/Logger.h" -#include -#include -#include #include #include +#include + TrackingInstallJob::TrackingInstallJob( const QString& url ) : m_url( url ) - , m_networkManager( nullptr ) { } TrackingInstallJob::~TrackingInstallJob() { - delete m_networkManager; } -QString TrackingInstallJob::prettyName() const +QString +TrackingInstallJob::prettyName() const { return tr( "Installation feedback" ); } -QString TrackingInstallJob::prettyDescription() const +QString +TrackingInstallJob::prettyDescription() const { return prettyName(); } -QString TrackingInstallJob::prettyStatusMessage() const +QString +TrackingInstallJob::prettyStatusMessage() const { return tr( "Sending installation feedback." ); } -Calamares::JobResult TrackingInstallJob::exec() +Calamares::JobResult +TrackingInstallJob::exec() { - m_networkManager = new QNetworkAccessManager(); + using CalamaresUtils::Network::Manager; + using CalamaresUtils::Network::RequestOptions; + using CalamaresUtils::Network::RequestStatus; - QNetworkRequest request; - request.setUrl( QUrl( m_url ) ); - // Follows all redirects except unsafe ones (https to http). - request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); - // Not everybody likes the default User Agent used by this class (looking at you, - // sourceforge.net), so let's set a more descriptive one. - request.setRawHeader( "User-Agent", "Mozilla/5.0 (compatible; Calamares)" ); - - QTimer timeout; - timeout.setSingleShot(true); - - QEventLoop loop; - - connect( m_networkManager, &QNetworkAccessManager::finished, - this, &TrackingInstallJob::dataIsHere ); - connect( m_networkManager, &QNetworkAccessManager::finished, - &loop, &QEventLoop::quit ); - connect( &timeout, &QTimer::timeout, - &loop, &QEventLoop::quit ); - - m_networkManager->get( request ); // The semaphore is released when data is received - timeout.start( 5000 /* ms */ ); - - loop.exec(); - - if ( !timeout.isActive() ) + auto result = Manager::instance().synchronousPing( + QUrl( m_url ), + RequestOptions( RequestOptions::FollowRedirect | RequestOptions::FakeUserAgent, + RequestOptions::milliseconds( 5000 ) ) ); + if ( result.status == RequestStatus::Timeout ) { cWarning() << "install-tracking request timed out."; return Calamares::JobResult::error( tr( "Internal error in install-tracking." ), tr( "HTTP request timed out." ) ); } - timeout.stop(); - return Calamares::JobResult::ok(); } -void TrackingInstallJob::dataIsHere( QNetworkReply* reply ) -{ - cDebug() << "Installation feedback request OK"; - reply->deleteLater(); -} - -QString TrackingMachineNeonJob::prettyName() const +QString +TrackingMachineNeonJob::prettyName() const { return tr( "Machine feedback" ); } -QString TrackingMachineNeonJob::prettyDescription() const +QString +TrackingMachineNeonJob::prettyDescription() const { return prettyName(); } -QString TrackingMachineNeonJob::prettyStatusMessage() const +QString +TrackingMachineNeonJob::prettyStatusMessage() const { return tr( "Configuring machine feedback." ); } -Calamares::JobResult TrackingMachineNeonJob::exec() +Calamares::JobResult +TrackingMachineNeonJob::exec() { - int r = CalamaresUtils::System::instance()->targetEnvCall( - "/bin/sh", - QString(), // Working dir - QString( -R"x(MACHINE_ID=`cat /etc/machine-id` + static const auto script = QStringLiteral( + R"x( +MACHINE_ID=`cat /etc/machine-id` sed -i "s,URI =.*,URI = http://releases.neon.kde.org/meta-release/${MACHINE_ID}," /etc/update-manager/meta-release sed -i "s,URI_LTS =.*,URI_LTS = http://releases.neon.kde.org/meta-release-lts/${MACHINE_ID}," /etc/update-manager/meta-release true -)x"), - 1); +)x" ); + int r = CalamaresUtils::System::instance()->targetEnvCall( "/bin/sh", + QString(), // Working dir + script, + std::chrono::seconds( 1 ) ); if ( r == 0 ) + { return Calamares::JobResult::ok(); + } else if ( r > 0 ) - return Calamares::JobResult::error( tr( "Error in machine feedback configuration." ), - tr( "Could not configure machine feedback correctly, script error %1." ).arg( r ) ); + { + return Calamares::JobResult::error( + tr( "Error in machine feedback configuration." ), + tr( "Could not configure machine feedback correctly, script error %1." ).arg( r ) ); + } else - return Calamares::JobResult::error( tr( "Error in machine feedback configuration." ), - tr( "Could not configure machine feedback correctly, Calamares error %1." ).arg( r ) ); + { + return Calamares::JobResult::error( + tr( "Error in machine feedback configuration." ), + tr( "Could not configure machine feedback correctly, Calamares error %1." ).arg( r ) ); + } } diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index a379441c9..7351c3346 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -21,13 +21,10 @@ #include "Job.h" -class QNetworkAccessManager; -class QNetworkReply; class QSemaphore; class TrackingInstallJob : public Calamares::Job { - Q_OBJECT public: TrackingInstallJob( const QString& url ); ~TrackingInstallJob() override; @@ -37,13 +34,8 @@ public: QString prettyStatusMessage() const override; Calamares::JobResult exec() override; -public slots: - void dataIsHere( QNetworkReply* ); - private: const QString m_url; - - QNetworkAccessManager* m_networkManager; }; class TrackingMachineNeonJob : public Calamares::Job diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 924ac43d9..82ee6b01d 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -21,18 +21,18 @@ #include "ui_page_trackingstep.h" #include "Branding.h" -#include "JobQueue.h" #include "GlobalStorage.h" -#include "utils/Logger.h" -#include "utils/CalamaresUtilsGui.h" -#include "utils/Retranslator.h" +#include "JobQueue.h" #include "ViewManager.h" +#include "utils/CalamaresUtilsGui.h" +#include "utils/Logger.h" +#include "utils/Retranslator.h" #include #include #include -TrackingPage::TrackingPage(QWidget *parent) +TrackingPage::TrackingPage( QWidget* parent ) : QWidget( parent ) , ui( new Ui::TrackingPage ) { @@ -40,14 +40,22 @@ TrackingPage::TrackingPage(QWidget *parent) ui->setupUi( this ); CALAMARES_RETRANSLATE( - ui->retranslateUi( this ); - ui->generalExplanation->setText( tr( "Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area." ).arg( *StringEntry::ShortProductName ) ); - ui->installExplanation->setText( tr( "By selecting this you will send information about your installation and hardware. This information will only be sent once after the installation finishes." ) ); - ui->machineExplanation->setText( tr( "By selecting this you will periodically send information about your installation, hardware and applications, to %1." ).arg( *StringEntry::ShortProductName ) ); - ui->userExplanation->setText( tr( "By selecting this you will regularly send information about your installation, hardware, applications and usage patterns, to %1." ).arg( *StringEntry::ShortProductName ) ); - ) + ui->retranslateUi( this ); ui->generalExplanation->setText( + tr( "Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with " + "the last two options below), get continuous information about preferred applications. To see what " + "will be sent, please click the help icon next to each area." ) + .arg( *StringEntry::ShortProductName ) ); + ui->installExplanation->setText( + tr( "By selecting this you will send information about your installation and hardware. This information " + "will only be sent once after the installation finishes." ) ); + ui->machineExplanation->setText( tr( "By selecting this you will periodically send information about " + "your installation, hardware and applications, to %1." ) + .arg( *StringEntry::ShortProductName ) ); + ui->userExplanation->setText( tr( "By selecting this you will regularly send information about your " + "installation, hardware, applications and usage patterns, to %1." ) + .arg( *StringEntry::ShortProductName ) ); ) - QButtonGroup *group = new QButtonGroup( this ); + QButtonGroup* group = new QButtonGroup( this ); group->setExclusive( true ); group->addButton( ui->noneRadio ); group->addButton( ui->installRadio ); @@ -56,114 +64,143 @@ TrackingPage::TrackingPage(QWidget *parent) ui->noneRadio->setChecked( true ); } -void TrackingPage::enableTrackingOption(TrackingType t, bool enabled) +void +TrackingPage::enableTrackingOption( TrackingType t, bool enabled ) { QWidget* group = nullptr; switch ( t ) { - case TrackingType::InstallTracking: - group = ui->installGroup; - break; - case TrackingType::MachineTracking: - group = ui->machineGroup; - break; - case TrackingType::UserTracking: - group = ui->userGroup; - break; + case TrackingType::InstallTracking: + group = ui->installGroup; + break; + case TrackingType::MachineTracking: + group = ui->machineGroup; + break; + case TrackingType::UserTracking: + group = ui->userGroup; + break; } if ( group != nullptr ) { if ( enabled ) + { group->show(); + } else + { group->hide(); + } } else - cWarning() << "unknown tracking option" << int(t); + { + cWarning() << "unknown tracking option" << int( t ); + } } -bool TrackingPage::getTrackingOption(TrackingType t) +bool +TrackingPage::getTrackingOption( TrackingType t ) { bool enabled = false; // A tracking type is enabled if it is checked, or // any higher level is checked. -#define ch(x) ui->x->isChecked() +#define ch( x ) ui->x->isChecked() switch ( t ) { - case TrackingType::InstallTracking: - enabled = ch(installRadio) || ch(machineRadio) || ch(userRadio); - break; - case TrackingType::MachineTracking: - enabled = ch(machineRadio) || ch(userRadio); - break; - case TrackingType::UserTracking: - enabled = ch(userRadio); - break; + case TrackingType::InstallTracking: + enabled = ch( installRadio ) || ch( machineRadio ) || ch( userRadio ); + break; + case TrackingType::MachineTracking: + enabled = ch( machineRadio ) || ch( userRadio ); + break; + case TrackingType::UserTracking: + enabled = ch( userRadio ); + break; } #undef ch return enabled; } -void TrackingPage::setTrackingPolicy(TrackingType t, QString url) +void +TrackingPage::setTrackingPolicy( TrackingType t, QString url ) { - QToolButton *button = nullptr; - switch( t ) + QToolButton* button = nullptr; + switch ( t ) { - case TrackingType::InstallTracking: - button = ui->installPolicyButton; - break; - case TrackingType::MachineTracking: - button = ui->machinePolicyButton; - break; - case TrackingType::UserTracking: - button = ui->userPolicyButton; - break; + case TrackingType::InstallTracking: + button = ui->installPolicyButton; + break; + case TrackingType::MachineTracking: + button = ui->machinePolicyButton; + break; + case TrackingType::UserTracking: + button = ui->userPolicyButton; + break; } if ( button != nullptr ) if ( url.isEmpty() ) + { button->hide(); + } else { - connect( button, &QToolButton::clicked, [url]{ QDesktopServices::openUrl( url ); } ); - cDebug() << "Tracking policy" << int(t) << "set to" << url; + connect( button, &QToolButton::clicked, [url] { QDesktopServices::openUrl( url ); } ); + cDebug() << "Tracking policy" << int( t ) << "set to" << url; } - else - cWarning() << "unknown tracking option" << int(t); -} - -void TrackingPage::setGeneralPolicy( QString url ) -{ - if ( url.isEmpty() ) - ui->generalPolicyLabel->hide(); else { - ui->generalPolicyLabel->show(); - ui->generalPolicyLabel->setTextInteractionFlags(Qt::TextBrowserInteraction); - ui->generalPolicyLabel->show(); - connect( ui->generalPolicyLabel, &QLabel::linkActivated, [url]{ QDesktopServices::openUrl( url ); } ); + cWarning() << "unknown tracking option" << int( t ); } } -void TrackingPage::setTrackingLevel(const QString& l) +void +TrackingPage::setGeneralPolicy( QString url ) +{ + if ( url.isEmpty() ) + { + ui->generalPolicyLabel->hide(); + } + else + { + ui->generalPolicyLabel->show(); + ui->generalPolicyLabel->setTextInteractionFlags( Qt::TextBrowserInteraction ); + ui->generalPolicyLabel->show(); + connect( ui->generalPolicyLabel, &QLabel::linkActivated, [url] { QDesktopServices::openUrl( url ); } ); + } +} + +void +TrackingPage::setTrackingLevel( const QString& l ) { QString level = l.toLower(); QRadioButton* button = nullptr; - if (level.isEmpty() || level == "none") + if ( level.isEmpty() || level == "none" ) + { button = ui->noneRadio; - else if (level == "install") + } + else if ( level == "install" ) + { button = ui->installRadio; - else if (level == "machine") + } + else if ( level == "machine" ) + { button = ui->machineRadio; - else if (level == "user") + } + else if ( level == "user" ) + { button = ui->userRadio; + } if ( button != nullptr ) + { button->setChecked( true ); + } else + { cWarning() << "unknown default tracking level" << l; + } } diff --git a/src/modules/tracking/TrackingPage.h b/src/modules/tracking/TrackingPage.h index ac667d5e6..560115b92 100644 --- a/src/modules/tracking/TrackingPage.h +++ b/src/modules/tracking/TrackingPage.h @@ -21,8 +21,8 @@ #include "TrackingType.h" -#include #include +#include namespace Ui { @@ -61,4 +61,4 @@ private: Ui::TrackingPage* ui; }; -#endif //TRACKINGPAGE_H +#endif //TRACKINGPAGE_H diff --git a/src/modules/tracking/TrackingType.h b/src/modules/tracking/TrackingType.h index 5c97e8485..02dbd934e 100644 --- a/src/modules/tracking/TrackingType.h +++ b/src/modules/tracking/TrackingType.h @@ -24,6 +24,6 @@ enum class TrackingType InstallTracking, MachineTracking, UserTracking -} ; +}; -#endif //TRACKINGTYPE_H +#endif //TRACKINGTYPE_H diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index cb48b340b..a51864ea9 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -21,20 +21,21 @@ #include "TrackingJobs.h" #include "TrackingPage.h" -#include "JobQueue.h" #include "GlobalStorage.h" +#include "JobQueue.h" -#include "utils/Logger.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" #include "utils/Variant.h" #include #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( TrackingViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( TrackingViewStepFactory, registerPlugin< TrackingViewStep >(); ) /** @brief Is @p s a valid machine-tracking style. */ -static bool isValidStyle( const QString& s ) +static bool +isValidStyle( const QString& s ) { static QStringList knownStyles { "neon" }; return knownStyles.contains( s ); @@ -51,7 +52,9 @@ TrackingViewStep::TrackingViewStep( QObject* parent ) TrackingViewStep::~TrackingViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -97,11 +100,12 @@ TrackingViewStep::isAtEnd() const } -void TrackingViewStep::onLeave() +void +TrackingViewStep::onLeave() { - m_installTracking.userEnabled = m_widget->getTrackingOption( TrackingType::InstallTracking ); - m_machineTracking.userEnabled = m_widget->getTrackingOption( TrackingType::MachineTracking ); - m_userTracking.userEnabled = m_widget->getTrackingOption( TrackingType::UserTracking ); + m_installTracking.userEnabled = m_widget->getTrackingOption( TrackingType::InstallTracking ); + m_machineTracking.userEnabled = m_widget->getTrackingOption( TrackingType::MachineTracking ); + m_userTracking.userEnabled = m_widget->getTrackingOption( TrackingType::UserTracking ); cDebug() << "Install tracking:" << m_installTracking.enabled(); cDebug() << "Machine tracking:" << m_machineTracking.enabled(); cDebug() << " User tracking:" << m_userTracking.enabled(); @@ -123,10 +127,7 @@ TrackingViewStep::jobs() const memory.setNum( s->getTotalMemoryB().first ); disk.setNum( s->getTotalDiskB() ); - installUrl - .replace( "$CPU", s->getCpuDescription() ) - .replace( "$MEMORY", memory ) - .replace( "$DISK", disk ); + installUrl.replace( "$CPU", s->getCpuDescription() ).replace( "$MEMORY", memory ).replace( "$DISK", disk ); cDebug() << Logger::SubEntry << "install-tracking URL" << installUrl; @@ -137,13 +138,16 @@ TrackingViewStep::jobs() const { Q_ASSERT( isValidStyle( m_machineTrackingStyle ) ); if ( m_machineTrackingStyle == "neon" ) + { l.append( Calamares::job_ptr( new TrackingMachineNeonJob() ) ); + } } return l; } -QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configurationMap, const QString& key, TrackingType t) +QVariantMap +TrackingViewStep::setTrackingOption( const QVariantMap& configurationMap, const QString& key, TrackingType t ) { bool settingEnabled = false; @@ -159,8 +163,8 @@ QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configuration trackingConfiguration.settingEnabled = settingEnabled; trackingConfiguration.userEnabled = false; - m_widget->enableTrackingOption(t, settingEnabled); - m_widget->setTrackingPolicy(t, CalamaresUtils::getString( config, "policy" ) ); + m_widget->enableTrackingOption( t, settingEnabled ); + m_widget->setTrackingPolicy( t, CalamaresUtils::getString( config, "policy" ) ); return config; } @@ -176,7 +180,9 @@ TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap ) config = setTrackingOption( configurationMap, "machine", TrackingType::MachineTracking ); auto s = CalamaresUtils::getString( config, "style" ); if ( isValidStyle( s ) ) + { m_machineTrackingStyle = s; + } setTrackingOption( configurationMap, "user", TrackingType::UserTracking ); diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index aaaf3bbae..dc952253a 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -21,9 +21,9 @@ #include "TrackingType.h" +#include #include #include -#include #include #include @@ -65,12 +65,13 @@ private: struct TrackingEnabled { bool settingEnabled; // Enabled in config file - bool userEnabled; // User checked "yes" + bool userEnabled; // User checked "yes" TrackingEnabled() : settingEnabled( false ) , userEnabled( false ) - {} + { + } bool enabled() const { return settingEnabled && userEnabled; } }; @@ -78,15 +79,21 @@ private: inline TrackingEnabled& tracking( TrackingType t ) { - if (t == TrackingType::UserTracking) + if ( t == TrackingType::UserTracking ) + { return m_userTracking; - else if (t == TrackingType::MachineTracking) + } + else if ( t == TrackingType::MachineTracking ) + { return m_machineTracking; + } else + { return m_installTracking; + } } }; CALAMARES_PLUGIN_FACTORY_DECLARATION( TrackingViewStepFactory ) -#endif // TRACKINGVIEWSTEP_H +#endif // TRACKINGVIEWSTEP_H diff --git a/src/modules/tracking/tracking.conf b/src/modules/tracking/tracking.conf index 84c3f553f..46ba7fed6 100644 --- a/src/modules/tracking/tracking.conf +++ b/src/modules/tracking/tracking.conf @@ -50,7 +50,7 @@ # If blank or commented out, no link is displayed on the tracking # page. It is recommended to either provide policy URLs for each # area, *or* one general link, and not to mix them. -policy: "https://github.com/calamares/calamares/wiki/Users-Guide#installation-tracking" +policy: "https://github.com/calamares/calamares/wiki/Use-Guide#installation-tracking" # This is the default level to enable for tracking. If commented out, # empty, or otherwise invalid, "none" is used, so no tracking by default. @@ -71,7 +71,7 @@ default: user # module then. install: enabled: false - policy: "https://github.com/calamares/calamares/wiki/Users-Guide#installation-tracking" + policy: "https://github.com/calamares/calamares/wiki/Use-Guide#installation-tracking" # url: "https://example.com/install.php?c=$CPU&m=$MEMORY" # The machine area has one specific configuration key: diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 7a8d1d977..89eaefe2f 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -49,25 +49,38 @@ class UnpackEntry: :param sourcefs: :param destination: """ - __slots__ = ['source', 'sourcefs', 'destination', 'copied', 'total'] + __slots__ = ['source', 'sourcefs', 'destination', 'copied', 'total', 'exclude', 'excludeFile'] def __init__(self, source, sourcefs, destination): + """ + @p source is the source file name (might be an image file, or + a directory, too) + @p sourcefs is a type indication; "file" is special, as is + "squashfs". + @p destination is where the files from the source go. This is + **already** prefixed by rootMountPoint, so should be a + valid absolute path within the host system. + + The members copied and total are filled in by the copying process. + """ self.source = source self.sourcefs = sourcefs self.destination = destination + self.exclude = None + self.excludeFile = None self.copied = 0 self.total = 0 + def is_file(self): + return self.sourcefs == "file" + ON_POSIX = 'posix' in sys.builtin_module_names -def list_excludes(destination): +def global_excludes(): """ List excludes for rsync. - - :param destination: - :return: """ lst = [] extra_mounts = globalstorage.value("extraMounts") @@ -82,16 +95,18 @@ def list_excludes(destination): return lst - -def file_copy(source, dest, progress_cb): +def file_copy(source, entry, progress_cb): """ Extract given image using rsync. - :param source: - :param dest: - :param progress_cb: - :return: + :param source: Source file. This may be the place the entry's + image is mounted, or if it's a single file, the entry's source value. + :param entry: The UnpackEntry being copied. + :param progress_cb: A callback function for progress reporting. + Takes a number and a total-number. """ + dest = entry.destination + # Environment used for executing rsync properly # Setting locale to C (fix issue with tr_TR locale) at_env = os.environ @@ -100,13 +115,19 @@ def file_copy(source, dest, progress_cb): # `source` *must* end with '/' otherwise a directory named after the source # will be created in `dest`: ie if `source` is "/foo/bar" and `dest` is # "/dest", then files will be copied in "/dest/bar". - if not source.endswith("/"): + if not source.endswith("/") and not os.path.isfile(source): source += "/" + num_files_total_local = 0 num_files_copied = 0 # Gets updated through rsync output args = ['rsync', '-aHAXr'] - args.extend(list_excludes(dest)) + args.extend(global_excludes()) + if entry.excludeFile: + args.extend(["--exclude-from=" + entry.excludeFile]) + if entry.exclude: + for f in entry.exclude: + args.extend(["--exclude", f]) args.extend(['--progress', source, dest]) process = subprocess.Popen( args, env=at_env, bufsize=1, stdout=subprocess.PIPE, close_fds=ON_POSIX @@ -207,7 +228,7 @@ class UnpackOperation: imgbasename = os.path.splitext( os.path.basename(entry.source))[0] imgmountdir = os.path.join(source_mount_path, imgbasename) - os.mkdir(imgmountdir) + os.makedirs(imgmountdir, exist_ok=True) self.mount_image(entry, imgmountdir) @@ -224,11 +245,16 @@ class UnpackOperation: ["unsquashfs", "-l", entry.source] ) - if entry.sourcefs == "ext4": + elif entry.sourcefs == "ext4": fslist = subprocess.check_output( ["find", imgmountdir, "-type", "f"] ) + elif entry.is_file(): + # Hasn't been mounted, copy directly; find handles both + # files and directories. + fslist = subprocess.check_output(["find", entry.source, "-type", "f"]) + entry.total = len(fslist.splitlines()) self.report_progress() @@ -246,11 +272,17 @@ class UnpackOperation: """ Mount given @p entry as loop device on @p imgmountdir. + A *file* entry (e.g. one with *sourcefs* set to *file*) + is not mounted and just ignored. + :param entry: the entry to mount (source is the important property) :param imgmountdir: where to mount it :returns: None, but throws if the mount failed """ + if entry.is_file(): + return + if os.path.isdir(entry.source): r = libcalamares.utils.mount(entry.source, imgmountdir, "", "--bind") elif os.path.isfile(entry.source): @@ -281,12 +313,18 @@ class UnpackOperation: self.report_progress() try: - return file_copy(imgmountdir, entry.destination, progress_cb) + if entry.is_file(): + source = entry.source + else: + source = imgmountdir + + return file_copy(source, entry, progress_cb) finally: - subprocess.check_call(["umount", "-l", imgmountdir]) + if not entry.is_file(): + subprocess.check_call(["umount", "-l", imgmountdir]) -def get_supported_filesystems(): +def get_supported_filesystems_kernel(): """ Reads /proc/filesystems (the list of supported filesystems for the current kernel) and returns a list of (names of) @@ -304,6 +342,14 @@ def get_supported_filesystems(): return [] +def get_supported_filesystems(): + """ + Returns a list of all the supported filesystems + (valid values for the *sourcefs* key in an item. + """ + return ["file"] + get_supported_filesystems_kernel() + + def run(): """ Unsquash filesystem. @@ -324,8 +370,7 @@ def run(): supported_filesystems = get_supported_filesystems() - unpack = list() - + # Bail out before we start when there are obvious problems for entry in job.configuration["unpack"]: source = os.path.abspath(entry["source"]) sourcefs = entry["sourcefs"] @@ -334,20 +379,35 @@ def run(): utils.warning("The filesystem for \"{}\" ({}) is not supported".format(source, sourcefs)) return (_("Bad unsquash configuration"), _("The filesystem for \"{}\" ({}) is not supported").format(source, sourcefs)) - - destination = os.path.abspath(root_mount_point + entry["destination"]) - if not os.path.exists(source): utils.warning("The source filesystem \"{}\" does not exist".format(source)) return (_("Bad unsquash configuration"), _("The source filesystem \"{}\" does not exist").format(source)) - if not os.path.isdir(destination): + unpack = list() + + is_first = True + for entry in job.configuration["unpack"]: + source = os.path.abspath(entry["source"]) + sourcefs = entry["sourcefs"] + destination = os.path.abspath(root_mount_point + entry["destination"]) + + if not os.path.isdir(destination) and sourcefs != "file": utils.warning(("The destination \"{}\" in the target system is not a directory").format(destination)) - return (_("Bad unsquash configuration"), - _("The destination \"{}\" in the target system is not a directory").format(destination)) + if is_first: + return (_("Bad unsquash configuration"), + _("The destination \"{}\" in the target system is not a directory").format(destination)) + else: + utils.debug(".. assuming that the previous targets will create that directory.") unpack.append(UnpackEntry(source, sourcefs, destination)) + # Optional settings + if entry.get("exclude", None): + unpack[-1].exclude = entry["exclude"] + if entry.get("excludeFile", None): + unpack[-1].excludeFile = entry["excludeFile"] + + is_first = False unpackop = UnpackOperation(unpack) diff --git a/src/modules/unpackfs/module.desc b/src/modules/unpackfs/module.desc index 67a56b06c..4b3086e44 100644 --- a/src/modules/unpackfs/module.desc +++ b/src/modules/unpackfs/module.desc @@ -4,3 +4,5 @@ type: "job" name: "unpackfs" interface: "python" script: "main.py" +requiredModules: + - mount diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf index 9720f19a1..454e82e66 100644 --- a/src/modules/unpackfs/unpackfs.conf +++ b/src/modules/unpackfs/unpackfs.conf @@ -9,30 +9,81 @@ # target dir relative to rootMountPoint. --- -unpack: # Each list item is unpacked, in order, to the target system. -# Each list item has the following attributes: -# source: path relative to the live / intstalling system to the image -# sourcefs: ext4 or squashfs (may be others if mount supports it) -# destination: path relative to rootMountPoint (so in the target -# system) where this filesystem is unpacked. - +# +# Each list item has the following **mandatory** attributes: +# - *source* path relative to the live / intstalling system to the image +# - *sourcefs* the type of the source files; valid entries are +# - `ext4` (copies the filesystem contents) +# - `squashfs` (unsquashes) +# - `file` (copies a file or directory) +# - (may be others if mount supports it) +# - *destination* path relative to rootMountPoint (so in the target +# system) where this filesystem is unpacked. It may be an +# empty string, which effectively is / (the root) of the target +# system. +# +# Each list item **optionally** can include the following attributes: +# - *exclude* is a list of values that is expanded into --exclude +# arguments for rsync (each entry in exclude gets its own --exclude). +# - *excludeFile* is a single file that is passed to rsync as an +# --exclude-file argument. This should be a full pathname +# inside the **host** filesystem. +# +# EXAMPLES +# # Usually you list a filesystem image to unpack; you can use -# squashfs or an ext4 image. +# squashfs or an ext4 image. An empty destination is equivalent to "/", +# the root of the target system. The destination directory must exist +# in the target system. # # - source: "/path/to/filesystem.sqfs" # sourcefs: "squashfs" # destination: "" - -# You can list more than one filesystem. +# +# Multiple entries are unpacked in-order; if there is more than one +# item then only the first must exist beforehand -- it's ok to +# create directories with one unsquash and then to use those +# directories as a target from a second unsquash. # # - source: "/path/to/another/filesystem.img" # sourcefs: "ext4" # destination: "" +# - source: "/path/to/another/filesystem2.img" +# sourcefs: "ext4" +# destination: "/usr/lib/extra" # - # You can list filesystem source paths relative to the Calamares run # directory, if you use -d (this is only useful for testing, though). - - source: ./example.sqfs - sourcefs: squashfs - destination: "" +# +# - source: ./example.sqfs +# sourcefs: squashfs +# destination: "" +# +# You can list individual files (copied one-by-one), or directories +# (the files inside this directory are copied directly to the destination, +# so no "dummycpp/" subdirectory is created in this example). +# Do note that the target directory must exist already (e.g. from +# extracting some other filesystem). +# +# - source: ../CHANGES +# sourcefs: file +# destination: "/tmp/derp" +# - source: ../src/modules/dummycpp +# sourcefs: file +# destination: "/tmp/derp" +# +# The *destination* and *source* are handed off to rsync, so the semantics +# of trailing slashes apply. In order to *rename* a file as it is +# copied, specify one single file (e.g. CHANGES) and a full pathname +# for its destination name, as in the example below. + +unpack: + - source: ../CHANGES + sourcefs: file + destination: "/tmp/changes.txt" + - source: src/qml/calamares/slideshow + sourcefs: file + destination: "/tmp/slideshow/" + exclude: [ "*.qmlc", "qmldir" ] + # excludeFile: /etc/calamares/modules/unpackfs/exclude-list.txt diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index 7fa13f124..39c1f79de 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -31,19 +31,15 @@ #include PasswordCheck::PasswordCheck() - : m_message() - , m_accept( []( const QString& ){ return true; } ) + : m_weight( 0 ) + , m_message() + , m_accept( []( const QString& ) { return true; } ) { } -PasswordCheck::PasswordCheck( const QString& m, AcceptFunc a ) - : m_message( [m](){ return m; } ) - , m_accept( a ) -{ -} - -PasswordCheck::PasswordCheck( MessageFunc m, AcceptFunc a ) - : m_message( m ) +PasswordCheck::PasswordCheck( MessageFunc m, AcceptFunc a, Weight weight ) + : m_weight( weight ) + , m_message( m ) , m_accept( a ) { } @@ -52,21 +48,15 @@ DEFINE_CHECK_FUNC( minLength ) { int minLength = -1; if ( value.canConvert( QVariant::Int ) ) + { minLength = value.toInt(); + } if ( minLength > 0 ) { 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; - } - ) ); + checks.push_back( PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is too short" ); }, + [minLength]( const QString& s ) { return s.length() >= minLength; }, + PasswordCheck::Weight( 10 ) ) ); } } @@ -74,21 +64,15 @@ DEFINE_CHECK_FUNC( maxLength ) { int maxLength = -1; if ( value.canConvert( QVariant::Int ) ) + { maxLength = value.toInt(); + } if ( maxLength > 0 ) { 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; - } - ) ); + checks.push_back( PasswordCheck( []() { return QCoreApplication::translate( "PWQ", "Password is too long" ); }, + [maxLength]( const QString& s ) { return s.length() <= maxLength; }, + PasswordCheck::Weight( 10 ) ) ); } } @@ -101,15 +85,17 @@ DEFINE_CHECK_FUNC( maxLength ) */ /// @brief Handle libpwquality using void* to represent a long -static inline long mungeLong( void* p ) +static inline long +mungeLong( void* p ) { - return static_cast( reinterpret_cast( p ) ); + return static_cast< long >( reinterpret_cast< intptr_t >( p ) ); } /// @brief Handle libpwquality using void* to represent a char* -static inline const char* mungeString( void* p ) +static inline const char* +mungeString( void* p ) { - return reinterpret_cast( p ); + return reinterpret_cast< const char* >( p ); } /** @@ -128,16 +114,10 @@ public: { } - ~PWSettingsHolder() - { - pwquality_free_settings( m_settings ); - } + ~PWSettingsHolder() { pwquality_free_settings( m_settings ); } /// Sets an option via the configuration string @p v, = style. - int set( const QString& v ) - { - return pwquality_set_option( m_settings, v.toUtf8().constData() ); - } + int set( const QString& v ) { return pwquality_set_option( m_settings, v.toUtf8().constData() ); } /// Checks the given password @p pwd against the current configuration int check( const QString& pwd ) @@ -148,10 +128,7 @@ public: return r; } - bool hasExplanation() const - { - return m_rv < 0; - } + bool hasExplanation() const { return m_rv < 0; } /* This is roughly the same as the function pwquality_strerror, * only with QStrings instead, and using the Qt translation scheme. @@ -164,16 +141,21 @@ public: m_auxerror = nullptr; if ( m_rv >= arbitrary_minimum_strength ) + { return QString(); + } if ( m_rv >= 0 ) - return QCoreApplication::translate( "PWQ", "Password is too weak" ); + { + return QCoreApplication::translate( "PWQ", "Password is too weak" ); + } switch ( m_rv ) { case PWQ_ERROR_MEM_ALLOC: if ( auxerror ) { - QString s = QCoreApplication::translate( "PWQ", "Memory allocation error when setting '%1'" ).arg( mungeString( auxerror ) ); + QString s = QCoreApplication::translate( "PWQ", "Memory allocation error when setting '%1'" ) + .arg( mungeString( auxerror ) ); free( auxerror ); return s; } @@ -189,58 +171,94 @@ public: case PWQ_ERROR_USER_CHECK: return QCoreApplication::translate( "PWQ", "The password contains the user name in some form" ); case PWQ_ERROR_GECOS_CHECK: - return QCoreApplication::translate( "PWQ", "The password contains words from the real name of the user in some form" ); + return QCoreApplication::translate( + "PWQ", "The password contains words from the real name of the user in some form" ); case PWQ_ERROR_BAD_WORDS: return QCoreApplication::translate( "PWQ", "The password contains forbidden words in some form" ); case PWQ_ERROR_MIN_DIGITS: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains less than %1 digits" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", "The password contains less than %1 digits" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password contains too few digits" ); case PWQ_ERROR_MIN_UPPERS: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains less than %1 uppercase letters" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", "The password contains less than %1 uppercase letters" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password contains too few uppercase letters" ); case PWQ_ERROR_MIN_LOWERS: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains less than %1 lowercase letters" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", "The password contains less than %1 lowercase letters" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password contains too few lowercase letters" ); case PWQ_ERROR_MIN_OTHERS: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains less than %1 non-alphanumeric characters" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", + "The password contains less than %1 non-alphanumeric characters" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password contains too few non-alphanumeric characters" ); case PWQ_ERROR_MIN_LENGTH: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password is shorter than %1 characters" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", "The password is shorter than %1 characters" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password is too short" ); case PWQ_ERROR_ROTATED: return QCoreApplication::translate( "PWQ", "The password is just rotated old one" ); case PWQ_ERROR_MIN_CLASSES: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains less than %1 character classes" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", "The password contains less than %1 character classes" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password does not contain enough character classes" ); case PWQ_ERROR_MAX_CONSECUTIVE: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains more than %1 same characters consecutively" ).arg( mungeLong( auxerror ) ); + { + return QCoreApplication::translate( "PWQ", + "The password contains more than %1 same characters consecutively" ) + .arg( mungeLong( auxerror ) ); + } return QCoreApplication::translate( "PWQ", "The password contains too many same characters consecutively" ); case PWQ_ERROR_MAX_CLASS_REPEAT: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains more than %1 characters of the same class consecutively" ).arg( mungeLong( auxerror ) ); - return QCoreApplication::translate( "PWQ", "The password contains too many characters of the same class consecutively" ); + { + return QCoreApplication::translate( + "PWQ", "The password contains more than %1 characters of the same class consecutively" ) + .arg( mungeLong( auxerror ) ); + } + return QCoreApplication::translate( + "PWQ", "The password contains too many characters of the same class consecutively" ); case PWQ_ERROR_MAX_SEQUENCE: if ( auxerror ) - return QCoreApplication::translate( "PWQ", "The password contains monotonic sequence longer than %1 characters" ).arg( mungeLong( auxerror ) ); - return QCoreApplication::translate( "PWQ", "The password contains too long of a monotonic character sequence" ); + { + return QCoreApplication::translate( + "PWQ", "The password contains monotonic sequence longer than %1 characters" ) + .arg( mungeLong( auxerror ) ); + } + return QCoreApplication::translate( "PWQ", + "The password contains too long of a monotonic character sequence" ); case PWQ_ERROR_EMPTY_PASSWORD: return QCoreApplication::translate( "PWQ", "No password supplied" ); case PWQ_ERROR_RNG: return QCoreApplication::translate( "PWQ", "Cannot obtain random numbers from the RNG device" ); case PWQ_ERROR_GENERATION_FAILED: - return QCoreApplication::translate( "PWQ", "Password generation failed - required entropy too low for settings" ); + return QCoreApplication::translate( "PWQ", + "Password generation failed - required entropy too low for settings" ); case PWQ_ERROR_CRACKLIB_CHECK: if ( auxerror ) { /* Here the string comes from cracklib, don't free? */ - return QCoreApplication::translate( "PWQ", "The password fails the dictionary check - %1" ).arg( mungeString( auxerror ) ); + return QCoreApplication::translate( "PWQ", "The password fails the dictionary check - %1" ) + .arg( mungeString( auxerror ) ); } return QCoreApplication::translate( "PWQ", "The password fails the dictionary check" ); case PWQ_ERROR_UNKNOWN_SETTING: @@ -254,7 +272,8 @@ public: case PWQ_ERROR_INTEGER: if ( auxerror ) { - QString s = QCoreApplication::translate( "PWQ", "Bad integer value of setting - %1" ).arg( mungeString( auxerror ) ); + QString s = QCoreApplication::translate( "PWQ", "Bad integer value of setting - %1" ) + .arg( mungeString( auxerror ) ); free( auxerror ); return s; } @@ -262,7 +281,8 @@ public: case PWQ_ERROR_NON_INT_SETTING: if ( auxerror ) { - QString s = QCoreApplication::translate( "PWQ", "Setting %1 is not of integer type" ).arg( mungeString( auxerror ) ); + QString s = QCoreApplication::translate( "PWQ", "Setting %1 is not of integer type" ) + .arg( mungeString( auxerror ) ); free( auxerror ); return s; } @@ -270,7 +290,8 @@ public: case PWQ_ERROR_NON_STR_SETTING: if ( auxerror ) { - QString s = QCoreApplication::translate( "PWQ", "Setting %1 is not of string type" ).arg( mungeString( auxerror ) ); + QString s = QCoreApplication::translate( "PWQ", "Setting %1 is not of string type" ) + .arg( mungeString( auxerror ) ); free( auxerror ); return s; } @@ -290,7 +311,7 @@ private: pwquality_settings_t* m_settings; int m_rv; void* m_auxerror; -} ; +}; DEFINE_CHECK_FUNC( libpwquality ) { @@ -302,7 +323,7 @@ DEFINE_CHECK_FUNC( libpwquality ) QVariantList l = value.toList(); unsigned int requirement_count = 0; - auto settings = std::make_shared(); + auto settings = std::make_shared< PWSettingsHolder >(); for ( const auto& v : l ) { if ( v.type() == QVariant::String ) @@ -310,7 +331,9 @@ DEFINE_CHECK_FUNC( libpwquality ) QString option = v.toString(); int r = settings->set( option ); if ( r ) + { cWarning() << "unrecognized libpwquality setting" << option; + } else { cDebug() << Logger::SubEntry << "libpwquality setting" << option; @@ -318,28 +341,28 @@ DEFINE_CHECK_FUNC( libpwquality ) } } else + { cWarning() << "unrecognized libpwquality setting" << v; + } } /* Something actually added? */ if ( requirement_count ) { - checks.push_back( - PasswordCheck( - [settings]() - { - return settings->explanation(); - }, - [settings]( const QString& s ) - { - int r = settings->check( s ); - if ( r < 0 ) - cWarning() << "libpwquality error" << r; - else if ( r < settings->arbitrary_minimum_strength ) - cDebug() << "Password strength" << r << "too low"; - return r >= settings->arbitrary_minimum_strength; - } - ) ); + checks.push_back( PasswordCheck( [settings]() { return settings->explanation(); }, + [settings]( const QString& s ) { + int r = settings->check( s ); + if ( r < 0 ) + { + cWarning() << "libpwquality error" << r; + } + else if ( r < settings->arbitrary_minimum_strength ) + { + cDebug() << "Password strength" << r << "too low"; + } + return r >= settings->arbitrary_minimum_strength; + }, + PasswordCheck::Weight( 100 ) ) ); } } #endif diff --git a/src/modules/users/CheckPWQuality.h b/src/modules/users/CheckPWQuality.h index 07760c75b..1aeb34ba8 100644 --- a/src/modules/users/CheckPWQuality.h +++ b/src/modules/users/CheckPWQuality.h @@ -35,14 +35,21 @@ class PasswordCheck { public: /** Return true if the string is acceptable. */ - using AcceptFunc = std::function; - using MessageFunc = std::function; + using AcceptFunc = std::function< bool( const QString& ) >; + using MessageFunc = std::function< QString() >; - /** Generate a @p message if @p filter returns true */ - PasswordCheck( MessageFunc message, AcceptFunc filter ); - /** Yields @p message if @p filter returns true */ - PasswordCheck( const QString& message, AcceptFunc filter ); - /** Null check, always returns empty */ + using Weight = size_t; + + /** @brief Generate a @p message if @p filter returns true + * + * When @p filter returns true on the proposed password, the + * password is accepted (by this check). If false, then the + * @p message will be shown to the user. + * + * @p weight is used to order the checks (low-weight goes first). + */ + PasswordCheck( MessageFunc message, AcceptFunc filter, Weight weight = 1000 ); + /** @brief Null check, always accepts, no message */ PasswordCheck(); /** Applies this check to the given password string @p s @@ -50,17 +57,18 @@ public: * according to this filter. Returns a message describing * what is wrong if not. */ - QString filter( const QString& s ) const - { - return m_accept( s ) ? QString() : m_message(); - } + QString filter( const QString& s ) const { return m_accept( s ) ? QString() : m_message(); } + + Weight weight() const { return m_weight; } + bool operator<( const PasswordCheck& other ) const { return weight() < other.weight(); } private: + Weight m_weight; MessageFunc m_message; AcceptFunc m_accept; -} ; +}; -using PasswordCheckList = QVector; +using PasswordCheckList = QVector< PasswordCheck >; /* Each of these functions adds a check (if possible) to the list * of checks; they use the configuration value(s) from the @@ -68,16 +76,14 @@ using PasswordCheckList = QVector; * may skip adding a check, and do nothing (it should log * an error, though). */ -#define _xDEFINE_CHECK_FUNC(x) \ - add_check_##x( PasswordCheckList& checks, const QVariant& value ) -#define DEFINE_CHECK_FUNC(x) void _xDEFINE_CHECK_FUNC(x) -#define DECLARE_CHECK_FUNC(x) void _xDEFINE_CHECK_FUNC(x); +#define _xDEFINE_CHECK_FUNC( x ) add_check_##x( PasswordCheckList& checks, const QVariant& value ) +#define DEFINE_CHECK_FUNC( x ) void _xDEFINE_CHECK_FUNC( x ) +#define DECLARE_CHECK_FUNC( x ) void _xDEFINE_CHECK_FUNC( x ); -DECLARE_CHECK_FUNC(minLength) -DECLARE_CHECK_FUNC(maxLength) +DECLARE_CHECK_FUNC( minLength ) +DECLARE_CHECK_FUNC( maxLength ) #ifdef HAVE_LIBPWQUALITY -DECLARE_CHECK_FUNC(libpwquality) +DECLARE_CHECK_FUNC( libpwquality ) #endif #endif - diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index d7e356231..53b8e1521 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -19,10 +19,10 @@ #include -#include "JobQueue.h" #include "GlobalStorage.h" -#include "utils/Logger.h" +#include "JobQueue.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" #include #include @@ -72,17 +72,22 @@ CreateUserJob::exec() Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); QDir destDir( gs->value( "rootMountPoint" ).toString() ); - if ( gs->contains( "sudoersGroup" ) && - !gs->value( "sudoersGroup" ).toString().isEmpty() ) + if ( gs->contains( "sudoersGroup" ) && !gs->value( "sudoersGroup" ).toString().isEmpty() ) { + cDebug() << "[CREATEUSER]: preparing sudoers"; + QFileInfo sudoersFi( destDir.absoluteFilePath( "etc/sudoers.d/10-installer" ) ); if ( !sudoersFi.absoluteDir().exists() ) + { return Calamares::JobResult::error( tr( "Sudoers dir is not writable." ) ); + } QFile sudoersFile( sudoersFi.absoluteFilePath() ); - if (!sudoersFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + if ( !sudoersFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { return Calamares::JobResult::error( tr( "Cannot create sudoers file for writing." ) ); + } QString sudoersGroup = gs->value( "sudoersGroup" ).toString(); @@ -93,14 +98,17 @@ CreateUserJob::exec() 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 ) ) + { 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 ) + for ( QStringList::iterator it = groupsLines.begin(); it != groupsLines.end(); ++it ) { int indexOfFirstToDrop = it->indexOf( ':' ); it->truncate( indexOfFirstToDrop ); @@ -108,15 +116,13 @@ CreateUserJob::exec() foreach ( const QString& group, m_defaultGroups ) if ( !groupsLines.contains( group ) ) - CalamaresUtils::System::instance()-> - targetEnvCall( { "groupadd", 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() ) + if ( gs->contains( "autologinGroup" ) && !gs->value( "autologinGroup" ).toString().isEmpty() ) { autologinGroup = gs->value( "autologinGroup" ).toString(); CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", autologinGroup } ); @@ -131,26 +137,22 @@ CreateUserJob::exec() QDir existingHome( destDir.absolutePath() + shellFriendlyHome ); if ( existingHome.exists() ) { - QString backupDirName = "dotfiles_backup_" + - QDateTime::currentDateTime() - .toString( "yyyy-MM-dd_HH-mm-ss" ); + QString backupDirName = "dotfiles_backup_" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_HH-mm-ss" ); existingHome.mkdir( backupDirName ); - CalamaresUtils::System::instance()-> - targetEnvCall( { "sh", - "-c", - "mv -f " + - shellFriendlyHome + "/.* " + - shellFriendlyHome + "/" + - backupDirName - } ); + CalamaresUtils::System::instance()->targetEnvCall( + { "sh", "-c", "mv -f " + shellFriendlyHome + "/.* " + shellFriendlyHome + "/" + backupDirName } ); } } - QStringList useradd{ "useradd", "-m", "-U" }; + cDebug() << "[CREATEUSER]: creating user"; + + QStringList useradd { "useradd", "-m", "-U" }; QString shell = gs->value( "userShell" ).toString(); if ( !shell.isEmpty() ) + { useradd << "-s" << shell; + } useradd << "-c" << m_fullName; useradd << m_userName; @@ -158,25 +160,24 @@ CreateUserJob::exec() if ( commandResult.getExitCode() ) { cError() << "useradd failed" << commandResult.getExitCode(); - return commandResult.explainProcess( useradd, 10 /* bogus timeout */ ); + return commandResult.explainProcess( useradd, std::chrono::seconds( 10 ) /* bogus timeout */ ); } - commandResult = CalamaresUtils::System::instance()->targetEnvCommand( - { "usermod", "-aG", defaultGroups, m_userName } ); + commandResult + = CalamaresUtils::System::instance()->targetEnvCommand( { "usermod", "-aG", defaultGroups, m_userName } ); if ( commandResult.getExitCode() ) { cError() << "usermod failed" << commandResult.getExitCode(); - return commandResult.explainProcess( "usermod", 10 ); + return commandResult.explainProcess( "usermod", std::chrono::seconds( 10 ) /* bogus timeout */ ); } 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 } ); + commandResult = CalamaresUtils::System::instance()->targetEnvCommand( { "chown", "-R", userGroup, homeDir } ); if ( commandResult.getExitCode() ) { cError() << "chown failed" << commandResult.getExitCode(); - return commandResult.explainProcess( "chown", 10 ); + return commandResult.explainProcess( "chown", std::chrono::seconds( 10 ) /* bogus timeout */ ); } return Calamares::JobResult::ok(); diff --git a/src/modules/users/CreateUserJob.h b/src/modules/users/CreateUserJob.h index d3459fc8a..98d7c001e 100644 --- a/src/modules/users/CreateUserJob.h +++ b/src/modules/users/CreateUserJob.h @@ -27,10 +27,7 @@ class CreateUserJob : public Calamares::Job { Q_OBJECT public: - CreateUserJob( const QString& userName, - const QString& fullName, - bool autologin, - const QStringList& defaultGroups ); + CreateUserJob( const QString& userName, const QString& fullName, bool autologin, const QStringList& defaultGroups ); QString prettyName() const override; QString prettyDescription() const override; QString prettyStatusMessage() const override; diff --git a/src/modules/users/PasswordTests.cpp b/src/modules/users/PasswordTests.cpp index d4526351a..0c1b4bffc 100644 --- a/src/modules/users/PasswordTests.cpp +++ b/src/modules/users/PasswordTests.cpp @@ -24,13 +24,9 @@ QTEST_GUILESS_MAIN( PasswordTests ) -PasswordTests::PasswordTests() -{ -} +PasswordTests::PasswordTests() {} -PasswordTests::~PasswordTests() -{ -} +PasswordTests::~PasswordTests() {} void PasswordTests::initTestCase() @@ -41,7 +37,7 @@ void PasswordTests::testSalt() { QString s = SetPasswordJob::make_salt( 8 ); - QCOMPARE( s.length(), 4 + 8 ); // 8 salt chars, plus $6$, plus trailing $ + QCOMPARE( s.length(), 4 + 8 ); // 8 salt chars, plus $6$, plus trailing $ QVERIFY( s.startsWith( "$6$" ) ); QVERIFY( s.endsWith( '$' ) ); qDebug() << "Obtained salt" << s; diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 62b1c61a7..b03d7a200 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -21,11 +21,11 @@ #include "SetHostNameJob.h" #include "GlobalStorage.h" -#include "utils/Logger.h" #include "JobQueue.h" +#include "utils/Logger.h" -#include #include +#include SetHostNameJob::SetHostNameJob( const QString& hostname ) : Calamares::Job() @@ -33,7 +33,8 @@ SetHostNameJob::SetHostNameJob( const QString& hostname ) { } -QString SetHostNameJob::prettyName() const +QString +SetHostNameJob::prettyName() const { return tr( "Set hostname %1" ).arg( m_hostname ); } @@ -52,7 +53,8 @@ SetHostNameJob::prettyStatusMessage() const return tr( "Setting hostname %1." ).arg( m_hostname ); } -Calamares::JobResult SetHostNameJob::exec() +Calamares::JobResult +SetHostNameJob::exec() { Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); @@ -90,11 +92,21 @@ Calamares::JobResult SetHostNameJob::exec() // We also need to write the appropriate entries for /etc/hosts QTextStream hostsfileout( &hostsfile ); // ipv4 support - hostsfileout << "127.0.0.1" << "\t" << "localhost" << "\n"; - hostsfileout << "127.0.1.1" << "\t" << m_hostname << "\n"; + hostsfileout << "127.0.0.1" + << "\t" + << "localhost" + << "\n"; + hostsfileout << "127.0.1.1" + << "\t" << m_hostname << "\n"; // ipv6 support - hostsfileout << "::1" << "\t" << "localhost ip6-localhost ip6-loopback" << "\n"; - hostsfileout << "ff02::1 ip6-allnodes" << "\n" << "ff02::2 ip6-allrouters" << "\n"; + hostsfileout << "::1" + << "\t" + << "localhost ip6-localhost ip6-loopback" + << "\n"; + hostsfileout << "ff02::1 ip6-allnodes" + << "\n" + << "ff02::2 ip6-allrouters" + << "\n"; hostsfile.close(); return Calamares::JobResult::ok(); diff --git a/src/modules/users/SetHostNameJob.h b/src/modules/users/SetHostNameJob.h index 11e296fce..ca2481dd4 100644 --- a/src/modules/users/SetHostNameJob.h +++ b/src/modules/users/SetHostNameJob.h @@ -31,9 +31,10 @@ public: QString prettyDescription() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; + private: const QString m_hostname; }; -#endif // SETHOSTNAMEJOB_CPP_H +#endif // SETHOSTNAMEJOB_CPP_H diff --git a/src/modules/users/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 9c560106d..325d24fe3 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -19,10 +19,10 @@ #include -#include "JobQueue.h" #include "GlobalStorage.h" -#include "utils/Logger.h" +#include "JobQueue.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Logger.h" #include @@ -58,29 +58,27 @@ SetPasswordJob::prettyStatusMessage() const /// Returns a modular hashing salt for method 6 (SHA512) with a 16 character random salt. QString -SetPasswordJob::make_salt(int length) +SetPasswordJob::make_salt( int length ) { - Q_ASSERT(length >= 8); - Q_ASSERT(length <= 128); + Q_ASSERT( length >= 8 ); + Q_ASSERT( length <= 128 ); - static const char salt_chars[] = { - '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', - 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', - 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + static const char salt_chars[] = { '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', + 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', + 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', + 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; - static_assert( sizeof(salt_chars) == 64, "Missing salt_chars"); + static_assert( sizeof( salt_chars ) == 64, "Missing salt_chars" ); std::random_device r; - std::seed_seq seed{r(), r(), r(), r(), r(), r(), r(), r()}; - std::mt19937_64 twister(seed); + std::seed_seq seed { r(), r(), r(), r(), r(), r(), r(), r() }; + std::mt19937_64 twister( seed ); std::uint64_t next; int current_length = 0; QString salt_string; - salt_string.reserve(length + 10); + salt_string.reserve( length + 10 ); while ( current_length < length ) { @@ -89,11 +87,13 @@ SetPasswordJob::make_salt(int length) // to a single salt character. for ( unsigned int char_count = 0; char_count < 10; ++char_count ) { - char c = salt_chars[next & 0b0111111]; + char c = salt_chars[ next & 0b0111111 ]; next >>= 6; salt_string.append( c ); - if (++current_length >= length) + if ( ++current_length >= length ) + { break; + } } } @@ -112,34 +112,21 @@ SetPasswordJob::exec() return Calamares::JobResult::error( tr( "Bad destination system path." ), tr( "rootMountPoint is %1" ).arg( destDir.absolutePath() ) ); - if ( m_userName == "root" && - m_newPassword.isEmpty() ) //special case for disabling root account + if ( m_userName == "root" && m_newPassword.isEmpty() ) //special case for disabling root account { - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "passwd", - "-dl", - m_userName } ); + int ec = CalamaresUtils::System::instance()->targetEnvCall( { "passwd", "-dl", m_userName } ); if ( ec ) return Calamares::JobResult::error( tr( "Cannot disable root account." ), - tr( "passwd terminated with error code %1." ) - .arg( ec ) ); + tr( "passwd terminated with error code %1." ).arg( ec ) ); return Calamares::JobResult::ok(); } - QString encrypted = QString::fromLatin1( - crypt( m_newPassword.toUtf8(), - make_salt( 16 ).toUtf8() ) ); + QString encrypted = QString::fromLatin1( crypt( m_newPassword.toUtf8(), make_salt( 16 ).toUtf8() ) ); - int ec = CalamaresUtils::System::instance()-> - targetEnvCall( { "usermod", - "-p", - encrypted, - m_userName } ); + int ec = CalamaresUtils::System::instance()->targetEnvCall( { "usermod", "-p", encrypted, m_userName } ); if ( ec ) - return Calamares::JobResult::error( tr( "Cannot set password for user %1." ) - .arg( m_userName ), - tr( "usermod terminated with error code %1." ) - .arg( ec ) ); + return Calamares::JobResult::error( tr( "Cannot set password for user %1." ).arg( m_userName ), + tr( "usermod terminated with error code %1." ).arg( ec ) ); return Calamares::JobResult::ok(); } diff --git a/src/modules/users/SetPasswordJob.h b/src/modules/users/SetPasswordJob.h index c4ec59c2a..d2ebf64aa 100644 --- a/src/modules/users/SetPasswordJob.h +++ b/src/modules/users/SetPasswordJob.h @@ -27,13 +27,12 @@ class SetPasswordJob : public Calamares::Job { Q_OBJECT public: - SetPasswordJob( const QString& userName, - const QString& newPassword ); + SetPasswordJob( const QString& userName, const QString& newPassword ); QString prettyName() const override; QString prettyStatusMessage() const override; Calamares::JobResult exec() override; - static QString make_salt(int length); + static QString make_salt( int length ); private: QString m_userName; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 62292b76c..a7c72ce69 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -27,8 +27,8 @@ #include "ui_page_usersetup.h" #include "CreateUserJob.h" -#include "SetPasswordJob.h" #include "SetHostNameJob.h" +#include "SetPasswordJob.h" #include "GlobalStorage.h" #include "JobQueue.h" @@ -45,12 +45,28 @@ #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. */ static inline void -labelError( QLabel* pix, QLabel* label, const QString& message ) +labelError( QLabel* pix, QLabel* label, const QString& message, Badness bad = Badness::Fatal ) { label->setText( message ); - pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, CalamaresUtils::Original, label->size() ) ); + pix->setPixmap( CalamaresUtils::defaultPixmap( ( bad == Badness::Fatal ) ? CalamaresUtils::StatusError + : CalamaresUtils::StatusWarning, + CalamaresUtils::Original, + label->size() ) ); } /** Clear error, indicate OK on a label. */ @@ -74,25 +90,22 @@ UsersPage::UsersPage( QWidget* parent ) 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->checkBoxReusePassword, &QCheckBox::stateChanged, - this, [this]( int checked ) + 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 ) { ui->labelChooseRootPassword->setVisible( !checked ); - ui->labelExtraRootPassword->setVisible( !checked ); ui->labelRootPassword->setVisible( !checked ); ui->labelRootPasswordError->setVisible( !checked ); ui->textBoxRootPassword->setVisible( !checked ); @@ -105,47 +118,50 @@ UsersPage::UsersPage( QWidget* parent ) setWriteRootPassword( true ); ui->checkBoxReusePassword->setChecked( true ); + ui->checkBoxValidatePassword->setChecked( true ); - // Don't expand the explanations to "stupid wide", but keep them vaguely as-wide-as - // the things they are explaining. - int boxWidth = qMax( qMax( ui->textBoxUsername->width(), ui->textBoxHostname->width() ), ui->textBoxUserPassword->width() ); - ui->username_extra_label_2->setMaximumWidth( 3 * boxWidth ); - ui->hostname_extra_label_2->setMaximumWidth( 3 * boxWidth ); - ui->password_extra_label_3->setMaximumWidth( 3 * boxWidth ); + setPasswordCheckboxVisible( false ); - CALAMARES_RETRANSLATE( - ui->retranslateUi( this ); - if ( Calamares::Settings::instance()->isSetupMode() ) - { - ui->username_extra_label_2->setText( tr( "If more than one person will " - "use this computer, you can create multiple " - "accounts after setup." ) ); - } - else - { - ui->username_extra_label_2->setText( tr( "If more than one person will " - "use this computer, you can create multiple " - "accounts after installation." ) ); - } - ) + CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate ); } - UsersPage::~UsersPage() { delete ui; } +void +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." ) ); + } + 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; + bool readyFields = m_readyFullName && m_readyHostname && m_readyPassword && m_readyUsername; if ( !m_writeRootPassword || ui->checkBoxReusePassword->isChecked() ) + { return readyFields; + } return readyFields && m_readyRootPassword; } @@ -156,38 +172,40 @@ 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->textBoxFullName->text().isEmpty() ? ui->textBoxUsername->text() + : ui->textBoxFullName->text(), ui->checkBoxAutoLogin->isChecked(), defaultGroupsList ); list.append( Calamares::job_ptr( j ) ); - j = new SetPasswordJob( ui->textBoxUsername->text(), - ui->textBoxUserPassword->text() ); + j = new SetPasswordJob( ui->textBoxUsername->text(), ui->textBoxUserPassword->text() ); list.append( Calamares::job_ptr( j ) ); if ( m_writeRootPassword ) { gs->insert( "reuseRootPassword", ui->checkBoxReusePassword->isChecked() ); if ( ui->checkBoxReusePassword->isChecked() ) - j = new SetPasswordJob( "root", - ui->textBoxUserPassword->text() ); + { + j = new SetPasswordJob( "root", ui->textBoxUserPassword->text() ); + } else - j = new SetPasswordJob( "root", - ui->textBoxRootPassword->text() ); + { + j = new SetPasswordJob( "root", ui->textBoxRootPassword->text() ); + } list.append( Calamares::job_ptr( j ) ); } else { j = new SetPasswordJob( "root", - "" ); //explicitly disable root password + "" ); //explicitly disable root password list.append( Calamares::job_ptr( j ) ); } @@ -196,7 +214,9 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) 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() ) ); @@ -209,6 +229,8 @@ void UsersPage::onActivate() { ui->textBoxFullName->setFocus(); + onPasswordTextChanged( QString() ); + onRootPasswordTextChanged( QString() ); } @@ -228,16 +250,19 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) 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() ) ); + ui->labelFullName->setPixmap( + CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, ui->labelFullName->size() ) ); m_readyFullName = true; fillSuggestions(); } @@ -250,8 +275,7 @@ UsersPage::fillSuggestions() { QString fullName = ui->textBoxFullName->text(); QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive ); - QString cleanName = CalamaresUtils::removeDiacritics( fullName ) - .toLower().replace( rx, " " ).simplified(); + QString cleanName = CalamaresUtils::removeDiacritics( fullName ).toLower().replace( rx, " " ).simplified(); QStringList cleanParts = cleanName.split( ' ' ); if ( !m_customUsername ) @@ -262,7 +286,9 @@ UsersPage::fillSuggestions() 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 ) { @@ -301,8 +327,8 @@ void UsersPage::validateUsernameText( const QString& textRef ) { QString text( textRef ); - QRegExp rx( USERNAME_RX ); - QRegExpValidator val( rx ); + QRegExpValidator val_whole( USERNAME_RX ); + QRegExpValidator val_start( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator int pos = -1; if ( text.isEmpty() ) @@ -313,14 +339,21 @@ UsersPage::validateUsernameText( const QString& textRef ) } else if ( text.length() > USERNAME_MAX_LENGTH ) { - labelError( ui->labelUsername, ui->labelUsernameError, - tr( "Your username is too long." ) ); + labelError( ui->labelUsername, ui->labelUsernameError, tr( "Your username is too long." ) ); m_readyUsername = false; } - else if ( val.validate( text, pos ) == QValidator::Invalid ) + else if ( val_start.validate( text, pos ) == QValidator::Invalid ) { - labelError( ui->labelUsername, ui->labelUsernameError, - tr( "Your username contains invalid characters. Only lowercase letters and numbers are allowed." ) ); + 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 @@ -345,32 +378,30 @@ void UsersPage::validateHostnameText( const QString& textRef ) { QString text = textRef; - QRegExp rx( HOSTNAME_RX ); - QRegExpValidator val( rx ); + QRegExpValidator val( HOSTNAME_RX ); int pos = -1; if ( text.isEmpty() ) { ui->labelHostnameError->clear(); ui->labelHostname->clear(); - m_readyHostname= false; + m_readyHostname = false; } else if ( text.length() < HOSTNAME_MIN_LENGTH ) { - labelError( ui->labelHostname, ui->labelHostnameError, - tr( "Your hostname is too short." ) ); + 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." ) ); + 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( "Your hostname contains invalid characters. Only letters, numbers and dashes are allowed." ) ); + labelError( ui->labelHostname, + ui->labelHostnameError, + tr( "Only letters, numbers, underscore and hyphen are allowed." ) ); m_readyHostname = false; } else @@ -382,46 +413,58 @@ UsersPage::validateHostnameText( const QString& textRef ) emit checkReady( isReady() ); } -void -UsersPage::onPasswordTextChanged( const QString& ) +bool +UsersPage::checkPasswordAcceptance( const QString& pw1, const QString& pw2, QLabel* badge, QLabel* message ) { - QString pw1 = ui->textBoxUserPassword->text(); - QString pw2 = ui->textBoxUserVerifiedPassword->text(); - - // TODO: 3.3: remove empty-check and leave it to passwordRequirements - if ( pw1.isEmpty() && pw2.isEmpty() ) + if ( pw1 != pw2 ) { - ui->labelUserPasswordError->clear(); - ui->labelUserPassword->clear(); - m_readyPassword = false; - } - else if ( pw1 != pw2 ) - { - labelError( ui->labelUserPassword, ui->labelUserPasswordError, - tr( "Your passwords do not match!" ) ); - m_readyPassword = false; + labelError( badge, message, tr( "Your passwords do not match!" ) ); + return false; } else { - bool ok = true; + 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( ui->labelUserPassword, ui->labelUserPasswordError, s ); - ok = false; - m_readyPassword = false; - break; + labelError( badge, message, s, failureIsFatal ? Badness::Fatal : Badness::Warning ); + failureFound = true; + if ( failureIsFatal ) + { + return false; + } } } - if ( ok ) + if ( !failureFound ) { - labelOk( ui->labelUserPassword, ui->labelUserPasswordError ); - m_readyPassword = true; + 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; } +} + +void +UsersPage::onPasswordTextChanged( const QString& ) +{ + m_readyPassword = checkPasswordAcceptance( ui->textBoxUserPassword->text(), + ui->textBoxUserVerifiedPassword->text(), + ui->labelUserPassword, + ui->labelUserPasswordError ); emit checkReady( isReady() ); } @@ -429,48 +472,27 @@ UsersPage::onPasswordTextChanged( const QString& ) void UsersPage::onRootPasswordTextChanged( const QString& ) { - QString pw1 = ui->textBoxRootPassword->text(); - QString pw2 = ui->textBoxVerifiedRootPassword->text(); - - // TODO: 3.3: remove empty-check and leave it to passwordRequirements - if ( pw1.isEmpty() && pw2.isEmpty() ) - { - ui->labelRootPasswordError->clear(); - ui->labelRootPassword->clear(); - m_readyRootPassword = false; - } - else if ( pw1 != pw2 ) - { - labelError( ui->labelRootPassword, ui->labelRootPasswordError, - tr( "Your passwords do not match!" ) ); - m_readyRootPassword = false; - } - else - { - bool ok = true; - for ( auto pc : m_passwordChecks ) - { - QString s = pc.filter( pw1 ); - if ( !s.isEmpty() ) - { - labelError( ui->labelRootPassword, ui->labelRootPasswordError, s ); - ok = false; - m_readyRootPassword = false; - break; - } - } - - if ( ok ) - { - labelOk( ui->labelRootPassword, ui->labelRootPasswordError ); - m_readyRootPassword = true; - } - } - + m_readyRootPassword = checkPasswordAcceptance( ui->textBoxRootPassword->text(), + ui->textBoxVerifiedRootPassword->text(), + ui->labelRootPassword, + ui->labelRootPasswordError ); emit checkReady( isReady() ); } +void +UsersPage::setPasswordCheckboxVisible( bool visible ) +{ + ui->checkBoxValidatePassword->setVisible( visible ); +} + +void +UsersPage::setValidatePasswordDefault( bool checked ) +{ + ui->checkBoxValidatePassword->setChecked( checked ); + emit checkReady( isReady() ); +} + void UsersPage::setAutologinDefault( bool checked ) { @@ -488,6 +510,8 @@ UsersPage::setReusePasswordDefault( bool checked ) void UsersPage::addPasswordCheck( const QString& key, const QVariant& value ) { + m_passwordChecksChanged = true; + if ( key == "minLength" ) { add_check_minLength( m_passwordChecks, value ); @@ -496,12 +520,24 @@ UsersPage::addPasswordCheck( const QString& key, const QVariant& value ) { 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 +#endif // CHECK_PWQUALITY else + { cWarning() << "Unknown password-check key" << key; + } } diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index ac1e1f9db..c6bf87ecf 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -29,6 +29,8 @@ #include +class QLabel; + namespace Ui { class Page_UserSetup; @@ -48,6 +50,8 @@ public: void onActivate(); void setWriteRootPassword( bool show ); + void setPasswordCheckboxVisible( bool visible ); + void setValidatePasswordDefault( bool checked ); void setAutologinDefault( bool checked ); void setReusePasswordDefault( bool checked ); @@ -73,15 +77,20 @@ signals: void checkReady( bool ); 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; - - const QRegExp USERNAME_RX = QRegExp( "^[a-z_][a-z0-9_-]*[$]?$" ); - const QRegExp HOSTNAME_RX = QRegExp( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); - const int USERNAME_MAX_LENGTH = 31; - const int HOSTNAME_MIN_LENGTH = 2; - const int HOSTNAME_MAX_LENGTH = 63; + bool m_passwordChecksChanged = false; bool m_readyFullName; bool m_readyUsername; @@ -94,4 +103,4 @@ private: bool m_writeRootPassword; }; -#endif // USERSPAGE_H +#endif // USERSPAGE_H diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 4582a9e85..b898f00c8 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -29,22 +29,23 @@ #include "GlobalStorage.h" #include "JobQueue.h" -CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin< UsersViewStep >(); ) UsersViewStep::UsersViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new UsersPage() ) { emit nextStatusChanged( true ); - connect( m_widget, &UsersPage::checkReady, - this, &UsersViewStep::nextStatusChanged ); + connect( m_widget, &UsersPage::checkReady, this, &UsersViewStep::nextStatusChanged ); } UsersViewStep::~UsersViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -116,68 +117,71 @@ UsersViewStep::onLeave() void UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - if ( configurationMap.contains( "defaultGroups" ) && - configurationMap.value( "defaultGroups" ).type() == QVariant::List ) + if ( configurationMap.contains( "defaultGroups" ) + && configurationMap.value( "defaultGroups" ).type() == QVariant::List ) { m_defaultGroups = configurationMap.value( "defaultGroups" ).toStringList(); } else { cWarning() << "Using fallback groups. Please check defaultGroups in users.conf"; - m_defaultGroups = QStringList{ "lp", "video", "network", "storage", "wheel", "audio" }; + m_defaultGroups = QStringList { "lp", "video", "network", "storage", "wheel", "audio" }; } - if ( configurationMap.contains( "autologinGroup" ) && - configurationMap.value( "autologinGroup" ).type() == QVariant::String ) + if ( configurationMap.contains( "autologinGroup" ) + && configurationMap.value( "autologinGroup" ).type() == QVariant::String ) { - Calamares::JobQueue::instance()->globalStorage()->insert( "autologinGroup", - configurationMap.value( "autologinGroup" ).toString() ); + Calamares::JobQueue::instance()->globalStorage()->insert( + "autologinGroup", configurationMap.value( "autologinGroup" ).toString() ); } - if ( configurationMap.contains( "sudoersGroup" ) && - configurationMap.value( "sudoersGroup" ).type() == QVariant::String ) + if ( configurationMap.contains( "sudoersGroup" ) + && configurationMap.value( "sudoersGroup" ).type() == QVariant::String ) { Calamares::JobQueue::instance()->globalStorage()->insert( "sudoersGroup", - configurationMap.value( "sudoersGroup" ).toString() ); + configurationMap.value( "sudoersGroup" ).toString() ); } - if ( configurationMap.contains( "setRootPassword" ) && - configurationMap.value( "setRootPassword" ).type() == QVariant::Bool ) + if ( configurationMap.contains( "setRootPassword" ) + && configurationMap.value( "setRootPassword" ).type() == QVariant::Bool ) { - Calamares::JobQueue::instance()->globalStorage()->insert( "setRootPassword", - configurationMap.value( "setRootPassword" ).toBool() ); + Calamares::JobQueue::instance()->globalStorage()->insert( + "setRootPassword", configurationMap.value( "setRootPassword" ).toBool() ); m_widget->setWriteRootPassword( configurationMap.value( "setRootPassword" ).toBool() ); } - if ( configurationMap.contains( "doAutologin" ) && - configurationMap.value( "doAutologin" ).type() == QVariant::Bool ) + if ( configurationMap.contains( "doAutologin" ) + && configurationMap.value( "doAutologin" ).type() == QVariant::Bool ) { m_widget->setAutologinDefault( configurationMap.value( "doAutologin" ).toBool() ); } - if ( configurationMap.contains( "doReusePassword" ) && - configurationMap.value( "doReusePassword" ).type() == QVariant::Bool ) + if ( configurationMap.contains( "doReusePassword" ) + && configurationMap.value( "doReusePassword" ).type() == QVariant::Bool ) { m_widget->setReusePasswordDefault( configurationMap.value( "doReusePassword" ).toBool() ); } - if ( configurationMap.contains( "passwordRequirements" ) && - configurationMap.value( "passwordRequirements" ).type() == QVariant::Map ) + 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) + for ( decltype( pr_checks )::const_iterator i = pr_checks.constBegin(); i != pr_checks.constEnd(); ++i ) { m_widget->addPasswordCheck( i.key(), i.value() ); } } - QString shell( QLatin1Literal( "/bin/bash" ) ); // as if it's not set at all + m_widget->setPasswordCheckboxVisible( CalamaresUtils::getBool( configurationMap, "allowWeakPasswords", false ) ); + m_widget->setValidatePasswordDefault( !CalamaresUtils::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 + } + // Now it might be explicitly set to empty, which is ok Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell ); } - diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index a1995497c..6fced76b9 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -65,4 +65,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( UsersViewStepFactory ) -#endif // USERSPAGEPLUGIN_H +#endif // USERSPAGEPLUGIN_H diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index c93912c01..b778647d8 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -47,6 +47,9 @@ 0 + + Your Full Name + @@ -137,6 +140,9 @@ 0 + + login + @@ -191,19 +197,6 @@ - - - - font-weight: normal - - - <Username extra label 2 text> - - - true - - - @@ -246,6 +239,12 @@ 0 + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + Computer Name + @@ -300,19 +299,6 @@ - - - - font-weight: normal - - - <small>This name will be used if you make the computer visible to others on a network.</small> - - - false - - - @@ -355,9 +341,15 @@ 0 + + <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> + QLineEdit::Password + + Password + @@ -374,9 +366,15 @@ 0 + + <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> + QLineEdit::Password + + Repeat Password + @@ -431,19 +429,6 @@ - - - - font-weight: normal - - - <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> - - - true - - - @@ -460,6 +445,16 @@ + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + Require strong passwords. + + + @@ -516,9 +511,15 @@ 0 + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + QLineEdit::Password + + Password + @@ -535,9 +536,15 @@ 0 + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + QLineEdit::Password + + Repeat Password + @@ -592,19 +599,6 @@ - - - - font-weight: normal - - - <small>Enter the same password twice, so that it can be checked for typing errors.</small> - - - true - - - diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 0c40faeff..00747195c 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -27,31 +27,45 @@ defaultGroups: # the desktop environment on boot. # Disable when your Distribution does not require such a group. autologinGroup: autologin -# You can control the initial state for the 'autologin checkbox' in UsersViewStep here. -# Possible values are: true to enable or false to disable the checkbox by default +# You can control the initial state for the 'autologin checkbox' here. +# Possible values are: +# - true to check or +# - false to uncheck +# These set the **initial** state of the checkbox. doAutologin: true -# When set to a non-empty string, Calamares creates a sudoers file for the user. -# /etc/sudoers.d/10-installer -# Remember to add sudoersGroup to defaultGroups. +# When *sudoersGroup* is set to a non-empty string, Calamares creates a +# sudoers file for the user. This file is located at: +# `/etc/sudoers.d/10-installer` +# Remember to add the (value of) *sudoersGroup* to *defaultGroups*. # # If your Distribution already sets up a group of sudoers in its packaging, # remove this setting (delete or comment out the line below). Otherwise, -# the setting will be duplicated in the /etc/sudoers.d/10-installer file, +# the setting will be duplicated in the `/etc/sudoers.d/10-installer` file, # potentially confusing users. sudoersGroup: wheel # Setting this to false , causes the root account to be disabled. setRootPassword: true -# You can control the initial state for the 'root password checkbox' in UsersViewStep here. -# Possible values are: true to enable or false to disable the checkbox by default. -# When enabled the user password is used for the root account too. -# NOTE: doReusePassword requires setRootPassword to be enabled. +# You can control the initial state for the 'reuse password for root' +# checkbox here. Possible values are: +# - true to check or +# - false to uncheck +# +# When checked, the user password is used for the root account too. +# +# NOTE: *doReusePassword* requires *setRootPassword* to be enabled. doReusePassword: true # These are optional password-requirements that a distro can enforce -# on the user. The values given in this sample file disable each check, -# as if the check was not listed at all. +# on the user. The values given in this sample file set only very weak +# validation settings. +# +# - nonempty rejects empty passwords +# - there are no length validations +# - libpwquality (if it is enabled at all) has no length of class +# restrictions, although it will still reject palindromes and +# dictionary words with these settings. # # Checks may be listed multiple times; each is checked separately, # and no effort is done to ensure that the checks are consistent @@ -68,12 +82,37 @@ doReusePassword: true # # (additional checks may be implemented in CheckPWQuality.cpp and # wired into UsersPage.cpp) +# +# - To disable specific password validations: +# comment out the relevant 'passwordRequirements' keys below. +# - To disable all password validations: +# set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true. +# (That will show the box *Allow weak passwords* in the user- +# interface, and check it by default). passwordRequirements: + nonempty: true minLength: -1 # Password at least this many characters maxLength: -1 # Password at most this many characters libpwquality: - minlen=0 - minclass=0 + +# You can control the visibility of the 'strong passwords' checkbox here. +# Possible values are: +# - true to show or +# - false to hide (default) +# the checkbox. This checkbox allows the user to choose to disable +# password-strength-checks. By default the box is **hidden**, so +# that you have to pick a password that satisfies the checks. +allowWeakPasswords: false +# You can control the initial state for the 'strong passwords' checkbox here. +# Possible values are: +# - true to uncheck or +# - false to check (default) +# the checkbox by default. Since the box is labeled to enforce strong +# passwords, in order to **allow** weak ones by default, the box needs +# to be unchecked. +allowWeakPasswordsDefault: false # Shell to be used for the regular user of the target system. # There are three possible kinds of settings: diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index b29b2e23e..02f91f79f 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -20,8 +20,8 @@ #include "WelcomePage.h" -#include "ui_WelcomePage.h" #include "checker/CheckerContainer.h" +#include "ui_WelcomePage.h" #include "Branding.h" #include "CalamaresVersion.h" @@ -32,6 +32,7 @@ #include "modulesystem/ModuleManager.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" +#include "utils/NamedEnum.h" #include "utils/Retranslator.h" #include @@ -48,9 +49,18 @@ WelcomePage::WelcomePage( QWidget* parent ) , m_checkingWidget( new CheckerContainer( this ) ) , m_languages( nullptr ) { - connect( Calamares::ModuleManager::instance(), &Calamares::ModuleManager::requirementsResult, m_checkingWidget, &CheckerContainer::requirementsChecked ); - connect( Calamares::ModuleManager::instance(), &Calamares::ModuleManager::requirementsComplete, m_checkingWidget, &CheckerContainer::requirementsComplete ); - connect( Calamares::ModuleManager::instance(), &Calamares::ModuleManager::requirementsProgress, m_checkingWidget, &CheckerContainer::requirementsProgress ); + connect( Calamares::ModuleManager::instance(), + &Calamares::ModuleManager::requirementsResult, + m_checkingWidget, + &CheckerContainer::requirementsChecked ); + connect( Calamares::ModuleManager::instance(), + &Calamares::ModuleManager::requirementsComplete, + m_checkingWidget, + &CheckerContainer::requirementsComplete ); + connect( Calamares::ModuleManager::instance(), + &Calamares::ModuleManager::requirementsProgress, + m_checkingWidget, + &CheckerContainer::requirementsProgress ); ui->setupUi( this ); ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() * 2 ); @@ -61,66 +71,18 @@ WelcomePage::WelcomePage( QWidget* parent ) ui->mainText->setOpenExternalLinks( true ); cDebug() << "Welcome string" << Calamares::Branding::instance()->welcomeStyleCalamares() - << *Calamares::Branding::VersionedName; + << *Calamares::Branding::VersionedName; - CALAMARES_RETRANSLATE( - QString message; + CALAMARES_RETRANSLATE_SLOT( &WelcomePage::retranslate ) - if ( Calamares::Settings::instance()->isSetupMode() ) - message = Calamares::Branding::instance()->welcomeStyleCalamares() - ? tr( "

Welcome to the Calamares setup program for %1.

" ) - : tr( "

Welcome to %1 setup.

" ); - else - message = Calamares::Branding::instance()->welcomeStyleCalamares() - ? tr( "

Welcome to the Calamares installer for %1.

" ) - : tr( "

Welcome to the %1 installer.

" ); + ui->aboutButton->setIcon( CalamaresUtils::defaultPixmap( + CalamaresUtils::Information, + CalamaresUtils::Original, + 2 * QSize( CalamaresUtils::defaultFontHeight(), CalamaresUtils::defaultFontHeight() ) ) ); + connect( ui->aboutButton, &QPushButton::clicked, this, &WelcomePage::showAboutBox ); - ui->mainText->setText( message.arg( *Calamares::Branding::VersionedName ) ); - ui->retranslateUi( this ); - ) - - ui->aboutButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Information, - CalamaresUtils::Original, - 2*QSize( CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() ) ) ); - connect( ui->aboutButton, &QPushButton::clicked, - this, [ this ] - { - QString title = Calamares::Settings::instance()->isSetupMode() - ? tr( "About %1 setup" ) - : tr( "About %1 installer" ); - QMessageBox mb( QMessageBox::Information, - title.arg( CALAMARES_APPLICATION_NAME ), - tr( - "

%1


" - "%2
" - "for %3


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

" - "Calamares " - "development is sponsored by
" - "Blue Systems - " - "Liberating Software." - ) - .arg( CALAMARES_APPLICATION_NAME ) - .arg( CALAMARES_VERSION ) - .arg( *Calamares::Branding::VersionedName ), - QMessageBox::Ok, - this ); - mb.setIconPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Squid, - CalamaresUtils::Original, - QSize( CalamaresUtils::defaultFontHeight() * 6, - CalamaresUtils::defaultFontHeight() * 6 ) ) ); - QGridLayout* layout = reinterpret_cast( mb.layout() ); - if ( layout ) - layout->setColumnMinimumWidth( 2, CalamaresUtils::defaultFontHeight() * 24 ); - mb.exec(); - } ); - - ui->verticalLayout->insertWidget( 3, m_checkingWidget); + int welcome_text_idx = ui->verticalLayout->indexOf( ui->mainText ); + ui->verticalLayout->insertWidget( welcome_text_idx + 1, m_checkingWidget ); } @@ -139,15 +101,16 @@ WelcomePage::initLanguages() QLocale defaultLocale = QLocale( QLocale::system().name() ); cDebug() << "Matching locale" << defaultLocale; - int matchedLocaleIndex = m_languages->find( - [&](const QLocale& x){ return x.language() == defaultLocale.language() && x.country() == defaultLocale.country(); } ); + int matchedLocaleIndex = m_languages->find( [&]( const QLocale& x ) { + return x.language() == defaultLocale.language() && x.country() == defaultLocale.country(); + } ); if ( matchedLocaleIndex < 0 ) { cDebug() << Logger::SubEntry << "Matching approximate locale" << defaultLocale.language(); - matchedLocaleIndex = m_languages->find( - [&](const QLocale& x){ return x.language() == defaultLocale.language(); } ); + matchedLocaleIndex + = m_languages->find( [&]( const QLocale& x ) { return x.language() == defaultLocale.language(); } ); } if ( matchedLocaleIndex < 0 ) @@ -159,7 +122,9 @@ WelcomePage::initLanguages() // Now, if it matched, because we didn't match the system locale, switch to the one found if ( matchedLocaleIndex >= 0 ) + { QLocale::setDefault( m_languages->locale( matchedLocaleIndex ).locale() ); + } } if ( matchedLocaleIndex >= 0 ) @@ -171,89 +136,82 @@ WelcomePage::initLanguages() ui->languageWidget->setCurrentIndex( matchedLocaleIndex ); } else + { cWarning() << "No available translation matched" << defaultLocale; + } connect( ui->languageWidget, static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), this, - [&]( int newIndex ) - { + [&]( int newIndex ) { const auto& selectedLocale = m_languages->locale( newIndex ).locale(); cDebug() << "Selected locale" << selectedLocale; QLocale::setDefault( selectedLocale ); - CalamaresUtils::installTranslator( selectedLocale, - Calamares::Branding::instance()->translationsDirectory(), - qApp ); + CalamaresUtils::installTranslator( + selectedLocale, Calamares::Branding::instance()->translationsDirectory(), qApp ); } ); } void -WelcomePage::setUpLinks( bool showSupportUrl, - bool showKnownIssuesUrl, - bool showReleaseNotesUrl ) +WelcomePage::setupButton( Button role, const QString& url ) { - using namespace Calamares; - if ( showSupportUrl && !( *Branding::SupportUrl ).isEmpty() ) + QPushButton* button = nullptr; + CalamaresUtils::ImageType icon = CalamaresUtils::Information; + + switch ( role ) { - CALAMARES_RETRANSLATE( - ui->supportButton->setText( tr( "%1 support" ) - .arg( *Branding::ShortProductName ) ); - ) - ui->supportButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Help, - CalamaresUtils::Original, - 2*QSize( CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() ) ) ); - connect( ui->supportButton, &QPushButton::clicked, [] - { - QDesktopServices::openUrl( *Branding::SupportUrl ); - } ); + case Button::Donate: + button = ui->donateButton; + icon = CalamaresUtils::Donate; + break; + case Button::KnownIssues: + button = ui->knownIssuesButton; + icon = CalamaresUtils::Bugs; + break; + case Button::ReleaseNotes: + button = ui->releaseNotesButton; + icon = CalamaresUtils::Release; + break; + case Button::Support: + button = ui->supportButton; + icon = CalamaresUtils::Help; + break; } - else + if ( !button ) { - ui->supportButton->hide(); + qWarning() << "Unknown button role" << smash( role ); + return; } - if ( showKnownIssuesUrl && !( *Branding::KnownIssuesUrl ).isEmpty() ) + if ( url.isEmpty() ) { - ui->knownIssuesButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Bugs, - CalamaresUtils::Original, - 2*QSize( CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() ) ) ); - connect( ui->knownIssuesButton, &QPushButton::clicked, [] - { - QDesktopServices::openUrl( *Branding::KnownIssuesUrl ); - } ); - } - else - { - ui->knownIssuesButton->hide(); + button->hide(); + return; } - if ( showReleaseNotesUrl && !( *Branding::ReleaseNotesUrl ).isEmpty() ) + QUrl u( url ); + if ( u.isValid() ) { - ui->releaseNotesButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Release, - CalamaresUtils::Original, - 2*QSize( CalamaresUtils::defaultFontHeight(), - CalamaresUtils::defaultFontHeight() ) ) ); - connect( ui->releaseNotesButton, &QPushButton::clicked, [] - { - QDesktopServices::openUrl( *Branding::ReleaseNotesUrl ); - } ); + auto size = 2 * QSize( CalamaresUtils::defaultFontHeight(), CalamaresUtils::defaultFontHeight() ); + button->setIcon( CalamaresUtils::defaultPixmap( icon, CalamaresUtils::Original, size ) ); + connect( button, &QPushButton::clicked, [u]() { QDesktopServices::openUrl( u ); } ); } else { - ui->releaseNotesButton->hide(); + qWarning() << "Welcome button" << smash( role ) << "URL" << url << "is invalid."; + button->hide(); } } - void WelcomePage::focusInEvent( QFocusEvent* e ) { if ( ui->languageWidget ) + { ui->languageWidget->setFocus(); + } e->accept(); } @@ -267,7 +225,9 @@ void WelcomePage::externallySelectedLanguage( int row ) { if ( ( row >= 0 ) && ( row < ui->languageWidget->count() ) ) + { ui->languageWidget->setCurrentIndex( row ); + } } void @@ -276,10 +236,75 @@ WelcomePage::setLanguageIcon( QPixmap i ) ui->languageIcon->setPixmap( i ); } +void +WelcomePage::retranslate() +{ + QString message; + + if ( Calamares::Settings::instance()->isSetupMode() ) + { + message = Calamares::Branding::instance()->welcomeStyleCalamares() + ? tr( "

Welcome to the Calamares setup program for %1.

" ) + : tr( "

Welcome to %1 setup.

" ); + } + else + { + message = Calamares::Branding::instance()->welcomeStyleCalamares() + ? tr( "

Welcome to the Calamares installer for %1.

" ) + : tr( "

Welcome to the %1 installer.

" ); + } + + ui->mainText->setText( message.arg( *Calamares::Branding::VersionedName ) ); + ui->retranslateUi( this ); + ui->supportButton->setText( tr( "%1 support" ).arg( *Calamares::Branding::ShortProductName ) ); +} void -LocaleTwoColumnDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const +WelcomePage::showAboutBox() +{ + QString title + = Calamares::Settings::instance()->isSetupMode() ? tr( "About %1 setup" ) : tr( "About %1 installer" ); + QMessageBox mb( QMessageBox::Information, + title.arg( CALAMARES_APPLICATION_NAME ), + tr( "

%1


" + "%2
" + "for %3


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

" + "Calamares " + "development is sponsored by
" + "Blue Systems - " + "Liberating Software." ) + .arg( CALAMARES_APPLICATION_NAME ) + .arg( CALAMARES_VERSION ) + .arg( *Calamares::Branding::VersionedName ), + QMessageBox::Ok, + this ); + mb.setIconPixmap( CalamaresUtils::defaultPixmap( + CalamaresUtils::Squid, + CalamaresUtils::Original, + QSize( CalamaresUtils::defaultFontHeight() * 6, CalamaresUtils::defaultFontHeight() * 6 ) ) ); + QGridLayout* layout = reinterpret_cast< QGridLayout* >( mb.layout() ); + if ( layout ) + { + layout->setColumnMinimumWidth( 2, CalamaresUtils::defaultFontHeight() * 24 ); + } + mb.exec(); +} + + +void +LocaleTwoColumnDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { QStyledItemDelegate::paint( painter, option, index ); - option.widget->style()->drawItemText( painter, option.rect, Qt::AlignRight | Qt::AlignVCenter, option.palette, false, index.data( CalamaresUtils::Locale::LabelModel::EnglishLabelRole ).toString() ); + option.widget->style()->drawItemText( + painter, + option.rect, + Qt::AlignRight | Qt::AlignVCenter, + option.palette, + false, + index.data( CalamaresUtils::Locale::LabelModel::EnglishLabelRole ).toString() ); } diff --git a/src/modules/welcome/WelcomePage.h b/src/modules/welcome/WelcomePage.h index 6c244bf0c..3e20ab9ea 100644 --- a/src/modules/welcome/WelcomePage.h +++ b/src/modules/welcome/WelcomePage.h @@ -38,10 +38,17 @@ class WelcomePage : public QWidget public: explicit WelcomePage( QWidget* parent = nullptr ); - /// @brief Configure the buttons for URLs from the branding configuration - void setUpLinks( bool showSupportUrl, - bool showKnownIssuesUrl, - bool showReleaseNotesUrl ); + enum class Button + { + Support, + Donate, + KnownIssues, + ReleaseNotes + }; + + /// @brief Configure the button @p n, to open @p url + void setupButton( Button b, const QString& url ); + /// @brief Set international language-selector icon void setLanguageIcon( QPixmap ); @@ -50,8 +57,13 @@ public: /// @brief Change the language from an external source. void externallySelectedLanguage( int row ); + +public slots: + void retranslate(); + void showAboutBox(); + protected: - void focusInEvent( QFocusEvent* e ) override; //choose the child widget to focus + void focusInEvent( QFocusEvent* e ) override; //choose the child widget to focus private: /// @brief Fill the list of languages with the available translations @@ -59,7 +71,7 @@ private: Ui::WelcomePage* ui; CheckerContainer* m_checkingWidget; - CalamaresUtils::Locale::LabelModel *m_languages; + CalamaresUtils::Locale::LabelModel* m_languages; }; /** @brief Delegate to display language information in two columns. @@ -72,6 +84,6 @@ public: using QStyledItemDelegate::QStyledItemDelegate; void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const override; -} ; +}; -#endif // WELCOMEPAGE_H +#endif // WELCOMEPAGE_H diff --git a/src/modules/welcome/WelcomePage.ui b/src/modules/welcome/WelcomePage.ui index 548bd5d27..590029558 100644 --- a/src/modules/welcome/WelcomePage.ui +++ b/src/modules/welcome/WelcomePage.ui @@ -13,9 +13,6 @@ Form - - Select language - @@ -69,7 +66,7 @@ - Select language + Select application and system language @@ -81,6 +78,9 @@ + + Select application and system language + 2 @@ -134,8 +134,24 @@ + + + + Open donations website + + + &Donate + + + true + + + + + Open help and support website + &Support @@ -146,6 +162,9 @@ + + Open issues and bug-tracking website + &Known issues @@ -156,6 +175,9 @@ + + Open release notes website + &Release notes diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index 938fe1f45..b34900e7f 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -33,13 +33,16 @@ #include #include -CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeViewStepFactory, registerPlugin(); ) +CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeViewStepFactory, registerPlugin< WelcomeViewStep >(); ) WelcomeViewStep::WelcomeViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_requirementsChecker( new GeneralRequirements( this ) ) { - connect( Calamares::ModuleManager::instance(), &Calamares::ModuleManager::requirementsComplete, this, &WelcomeViewStep::nextStatusChanged ); + connect( Calamares::ModuleManager::instance(), + &Calamares::ModuleManager::requirementsComplete, + this, + &WelcomeViewStep::nextStatusChanged ); m_widget = new WelcomePage(); } @@ -47,7 +50,9 @@ WelcomeViewStep::WelcomeViewStep( QObject* parent ) WelcomeViewStep::~WelcomeViewStep() { if ( m_widget && m_widget->parent() == nullptr ) + { m_widget->deleteLater(); + } } @@ -100,23 +105,60 @@ WelcomeViewStep::jobs() const } +/** @brief Look up a URL for a button + * + * Looks up @p key in @p map; if it is a *boolean* value, then + * assume an old-style configuration, and fetch the string from + * the branding settings @p e. If it is a string, not a boolean, + * use it as-is. If not found, or a weird type, returns empty. + * + * This allows switching the showKnownIssuesUrl and similar settings + * in welcome.conf from a boolean (deferring to branding) to an + * actual string for immediate use. Empty strings, as well as + * "false" as a setting, will hide the buttons as before. + */ +static QString +jobOrBrandingSetting( Calamares::Branding::StringEntry e, const QVariantMap& map, const QString& key ) +{ + if ( !map.contains( key ) ) + { + return QString(); + } + auto v = map.value( key ); + if ( v.type() == QVariant::Bool ) + { + return v.toBool() ? ( *e ) : QString(); + } + if ( v.type() == QVariant::String ) + { + return v.toString(); + } + + return QString(); +} + void WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - bool showSupportUrl = CalamaresUtils::getBool( configurationMap, "showSupportUrl", false ); - bool showKnownIssuesUrl = CalamaresUtils::getBool( configurationMap, "showKnownIssuesUrl", false ); - bool showReleaseNotesUrl = CalamaresUtils::getBool( configurationMap, "showReleaseNotesUrl", false ); + using Calamares::Branding; - m_widget->setUpLinks( showSupportUrl, - showKnownIssuesUrl, - showReleaseNotesUrl ); + m_widget->setupButton( WelcomePage::Button::Support, + jobOrBrandingSetting( Branding::SupportUrl, configurationMap, "showSupportUrl" ) ); + m_widget->setupButton( WelcomePage::Button::KnownIssues, + jobOrBrandingSetting( Branding::KnownIssuesUrl, configurationMap, "showKnownIssuesUrl" ) ); + m_widget->setupButton( WelcomePage::Button::ReleaseNotes, + jobOrBrandingSetting( Branding::ReleaseNotesUrl, configurationMap, "showReleaseNotesUrl" ) ); + m_widget->setupButton( WelcomePage::Button::Donate, + CalamaresUtils::getString( configurationMap, "showDonateUrl" ) ); - if ( configurationMap.contains( "requirements" ) && - configurationMap.value( "requirements" ).type() == QVariant::Map ) + if ( configurationMap.contains( "requirements" ) + && configurationMap.value( "requirements" ).type() == QVariant::Map ) + { m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() ); + } else cWarning() << "no valid requirements map found in welcome " - "module configuration."; + "module configuration."; bool ok = false; QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok ); @@ -124,15 +166,13 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { using FWString = QFutureWatcher< QString >; - auto* handler = new CalamaresUtils::GeoIP::Handler( - CalamaresUtils::getString( geoip, "style" ), - CalamaresUtils::getString( geoip, "url" ), - CalamaresUtils::getString( geoip, "selector" ) ); + auto* handler = new CalamaresUtils::GeoIP::Handler( CalamaresUtils::getString( geoip, "style" ), + CalamaresUtils::getString( geoip, "url" ), + CalamaresUtils::getString( geoip, "selector" ) ); if ( handler->type() != CalamaresUtils::GeoIP::Handler::Type::None ) { auto* future = new FWString(); - connect( future, &FWString::finished, [view=this, f=future, h=handler]() - { + connect( future, &FWString::finished, [view = this, f = future, h = handler]() { QString countryResult = f->future().result(); cDebug() << "GeoIP result for welcome=" << countryResult; view->setCountry( countryResult, h ); @@ -154,7 +194,9 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { auto icon = Calamares::Branding::instance()->image( language, QSize( 48, 48 ) ); if ( !icon.isNull() ) + { m_widget->setLanguageIcon( icon ); + } } } @@ -169,7 +211,8 @@ logGeoIPHandler( CalamaresUtils::GeoIP::Handler* handler ) { if ( handler ) { - cDebug() << Logger::SubEntry << "Obtained from" << handler->url() << " (" << static_cast( handler->type() ) << handler->selector() << ')'; + cDebug() << Logger::SubEntry << "Obtained from" << handler->url() << " (" + << static_cast< int >( handler->type() ) << handler->selector() << ')'; } } @@ -194,8 +237,12 @@ WelcomeViewStep::setCountry( const QString& countryCode, CalamaresUtils::GeoIP:: { int r = CalamaresUtils::Locale::availableTranslations()->find( countryCode ); if ( r < 0 ) + { cDebug() << "Unusable country code" << countryCode << "(no suitable translation)"; + } if ( ( r >= 0 ) && m_widget ) + { m_widget->externallySelectedLanguage( r ); + } } } diff --git a/src/modules/welcome/WelcomeViewStep.h b/src/modules/welcome/WelcomeViewStep.h index 5d27d7aad..4d8fa160f 100644 --- a/src/modules/welcome/WelcomeViewStep.h +++ b/src/modules/welcome/WelcomeViewStep.h @@ -34,11 +34,11 @@ class GeneralRequirements; namespace CalamaresUtils { - namespace GeoIP - { - class Handler; - } -} // namespace +namespace GeoIP +{ +class Handler; +} +} // namespace CalamaresUtils class PLUGINDLLEXPORT WelcomeViewStep : public Calamares::ViewStep { @@ -79,4 +79,4 @@ private: CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeViewStepFactory ) -#endif // WELCOMEPAGEPLUGIN_H +#endif // WELCOMEPAGEPLUGIN_H diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp index 812605091..2f1590590 100644 --- a/src/modules/welcome/checker/GeneralRequirements.cpp +++ b/src/modules/welcome/checker/GeneralRequirements.cpp @@ -25,12 +25,14 @@ #include "partman_devices.h" #include "modulesystem/Requirement.h" +#include "network/Manager.h" #include "widgets/WaitingWidget.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" #include "utils/Retranslator.h" #include "utils/CalamaresUtilsSystem.h" #include "utils/Units.h" +#include "utils/Variant.h" #include "Settings.h" #include "JobQueue.h" @@ -42,14 +44,11 @@ #include #include #include -#include #include #include #include -#include -#include -#include #include +#include #include #include //geteuid @@ -61,16 +60,31 @@ GeneralRequirements::GeneralRequirements( QObject* parent ) { } +static QSize +biggestSingleScreen() +{ + QSize s; + for ( const auto* screen : QGuiApplication::screens() ) + { + QSize thisScreen = screen->availableSize(); + if ( !s.isValid() || ( s.width() * s.height() < thisScreen.width() * thisScreen.height() ) ) + { + s = thisScreen; + } + } + return s; +} + Calamares::RequirementsList GeneralRequirements::checkRequirements() { - QSize availableSize = qApp->desktop()->availableGeometry().size(); + QSize availableSize = biggestSingleScreen(); bool enoughStorage = false; bool enoughRam = false; bool hasPower = false; bool hasInternet = false; bool isRoot = false; - bool enoughScreen = (availableSize.width() >= CalamaresUtils::windowMinimumWidth) && (availableSize.height() >= CalamaresUtils::windowMinimumHeight); + bool enoughScreen = availableSize.isValid() && (availableSize.width() >= CalamaresUtils::windowMinimumWidth) && (availableSize.height() >= CalamaresUtils::windowMinimumHeight); qint64 requiredStorageB = CalamaresUtils::GiBtoBytes(m_requiredStorageGiB); cDebug() << "Need at least storage bytes:" << requiredStorageB; @@ -206,7 +220,7 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap ) if ( configurationMap.contains( "requiredStorage" ) && ( configurationMap.value( "requiredStorage" ).type() == QVariant::Double || - configurationMap.value( "requiredStorage" ).type() == QVariant::Int ) ) + configurationMap.value( "requiredStorage" ).type() == QVariant::LongLong ) ) { bool ok = false; m_requiredStorageGiB = configurationMap.value( "requiredStorage" ).toDouble( &ok ); @@ -227,7 +241,7 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap ) if ( configurationMap.contains( "requiredRam" ) && ( configurationMap.value( "requiredRam" ).type() == QVariant::Double || - configurationMap.value( "requiredRam" ).type() == QVariant::Int ) ) + configurationMap.value( "requiredRam" ).type() == QVariant::LongLong ) ) { bool ok = false; m_requiredRamGiB = configurationMap.value( "requiredRam" ).toDouble( &ok ); @@ -245,16 +259,16 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap ) incompleteConfiguration = true; } - if ( configurationMap.contains( "internetCheckUrl" ) && - configurationMap.value( "internetCheckUrl" ).type() == QVariant::String ) + QUrl checkInternetUrl; + QString checkInternetSetting = CalamaresUtils::getString( configurationMap, "internetCheckUrl" ); + if ( !checkInternetSetting.isEmpty() ) { - m_checkHasInternetUrl = configurationMap.value( "internetCheckUrl" ).toString().trimmed(); - if ( m_checkHasInternetUrl.isEmpty() || - !QUrl( m_checkHasInternetUrl ).isValid() ) + checkInternetUrl = QUrl( checkInternetSetting.trimmed() ); + if ( !checkInternetUrl.isValid() ) { - cWarning() << "GeneralRequirements entry 'internetCheckUrl' is invalid in welcome.conf" << m_checkHasInternetUrl + cWarning() << "GeneralRequirements entry 'internetCheckUrl' is invalid in welcome.conf" << checkInternetSetting << "reverting to default (http://example.com)."; - m_checkHasInternetUrl = "http://example.com"; + checkInternetUrl = QUrl( "http://example.com" ); incompleteConfiguration = true; } } @@ -262,10 +276,13 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap ) { cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf," "reverting to default (http://example.com)."; - - m_checkHasInternetUrl = "http://example.com"; + checkInternetUrl = "http://example.com"; incompleteConfiguration = true; } + if ( checkInternetUrl.isValid() ) + { + CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( checkInternetUrl ); + } if ( incompleteConfiguration ) { @@ -357,22 +374,8 @@ GeneralRequirements::checkHasPower() bool GeneralRequirements::checkHasInternet() { - // default to true in the QNetworkAccessManager::UnknownAccessibility case - QNetworkAccessManager qnam; - bool hasInternet = qnam.networkAccessible() == QNetworkAccessManager::Accessible; - - if ( !hasInternet && qnam.networkAccessible() == QNetworkAccessManager::UnknownAccessibility ) - { - QNetworkRequest req = QNetworkRequest( QUrl( m_checkHasInternetUrl ) ); - QNetworkReply* reply = qnam.get( req ); - QEventLoop loop; - connect( reply, &QNetworkReply::finished, - &loop, &QEventLoop::quit ); - loop.exec(); - if( reply->bytesAvailable() ) - hasInternet = true; - } - + auto& nam = CalamaresUtils::Network::Manager::instance(); + bool hasInternet = nam.checkHasInternet(); Calamares::JobQueue::instance()->globalStorage()->insert( "hasInternet", hasInternet ); return hasInternet; } diff --git a/src/modules/welcome/checker/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h index 1efe118a6..8e5a6cd54 100644 --- a/src/modules/welcome/checker/GeneralRequirements.h +++ b/src/modules/welcome/checker/GeneralRequirements.h @@ -48,7 +48,6 @@ private: qreal m_requiredStorageGiB; qreal m_requiredRamGiB; - QString m_checkHasInternetUrl; }; #endif // REQUIREMENTSCHECKER_H diff --git a/src/modules/welcome/checker/ResultsListWidget.cpp b/src/modules/welcome/checker/ResultsListWidget.cpp index 9c3e3f0cd..b72b91452 100644 --- a/src/modules/welcome/checker/ResultsListWidget.cpp +++ b/src/modules/welcome/checker/ResultsListWidget.cpp @@ -71,11 +71,14 @@ ResultsListWidget::init( const Calamares::RequirementsList& checkEntries ) allChecked = false; if ( entry.mandatory ) requirementsSatisfied = false; + ciw->setAutoFillBackground( true ); QPalette pal( ciw->palette() ); - pal.setColor( QPalette::Background, Qt::white ); + QColor bgColor = pal.window().color(); + int bgHue = ( entry.satisfied ) ? bgColor.hue() : ( entry.mandatory ) ? 0 : 60; + bgColor.setHsv( bgHue, 64, bgColor.value() ); + pal.setColor( QPalette::Window, bgColor ); ciw->setPalette( pal ); - } } @@ -196,7 +199,10 @@ ResultsListWidget::showDetailsDialog( const Calamares::RequirementsList& checkEn ciw->setAutoFillBackground( true ); QPalette pal( ciw->palette() ); - pal.setColor( QPalette::Background, Qt::white ); + QColor bgColor = pal.window().color(); + int bgHue = ( entry.satisfied ) ? bgColor.hue() : ( entry.mandatory ) ? 0 : 60; + bgColor.setHsv( bgHue, 64, bgColor.value() ); + pal.setColor( QPalette::Window, bgColor ); ciw->setPalette( pal ); } diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf index a89b63854..0361830aa 100644 --- a/src/modules/welcome/welcome.conf +++ b/src/modules/welcome/welcome.conf @@ -7,10 +7,23 @@ # can check requirements for installation. --- # Display settings for various buttons on the welcome page. +# The URLs themselves come from branding.desc is the setting +# here is "true". If the setting is false, the button is hidden. +# The setting can also be a full URL which will then be used +# instead of the one from the branding file, or empty or not-set +# which will hide the button. showSupportUrl: true showKnownIssuesUrl: true showReleaseNotesUrl: true +# If this Url is set to something non-empty, a "donate" +# button is added to the welcome page alongside the +# others (see settings, above). Clicking the button opens +# the corresponding link. (This button has no corresponding +# branding.desc string) +# +# showDonateUrl: https://kde.org/community/donations/ + # Requirements checking. These are general, generic, things # that are checked. They may not match with the actual requirements # imposed by other modules in the system. @@ -56,13 +69,13 @@ requirements: # but remember to use a URL that returns full data **and** to # use a selector that will pick the country, not the timezone. # -# To disable, either comment-out the entire section, or set -# the *style* key to an unsupported format (e.g. `none`, as is -# done here). - +# To disable GeoIP checking, either comment-out the entire geoip section, +# or set the *style* key to an unsupported format (e.g. `none`). +# Also, note the analogous feature in src/modules/locale/locale.conf. +# geoip: - style: "none" - url: "https://geoip.kde.org/v1/ubiquity" # extended XML format + style: "none" + url: "https://geoip.kde.org/v1/ubiquity" # extended XML format selector: "CountryCode" # blank uses default, which is wrong # User interface diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index 4843e15a6..1d2fd9c85 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -8,6 +8,9 @@ * (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 + * - Support "V2" loading + * - Disable shortcuts until the content is visible in Calamares * * SPDX-License-Identifier: LGPL-2.1 * License-Filename: LICENSES/LGPLv2.1-Presentation @@ -77,6 +80,14 @@ Item { property string fontFamily: "Helvetica" property string codeFontFamily: "Courier New" + // This is set by the C++ part of Calamares when the slideshow + // becomes visible. You can connect it to a timer, or whatever + // else needs to start only when the slideshow becomes visible. + // + // 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 @@ -136,17 +147,17 @@ Item { Keys.onLeftPressed: goToPreviousSlide() // navigate with arrow keys - Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.arrowNavigation; onActivated: goToNextSlide() } - Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() } - Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.arrowNavigation; onActivated: goToNextSlide() } - Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() } + Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.activatedInCalamares && root .arrowNavigation; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() } + Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() } // presentation-specific single-key shortcuts (which interfere with normal typing) - Shortcut { sequence: " "; enabled: root.keyShortcutsEnabled; onActivated: goToNextSlide() } + Shortcut { sequence: " "; enabled: root.activatedInCalamares && root.keyShortcutsEnabled; onActivated: goToNextSlide() } // standard shortcuts - Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() } - Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() } + Shortcut { sequence: StandardKey.MoveToNextPage; enabled: root.activatedInCalamares; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousPage; enabled: root.activatedInCalamares; onActivated: goToPreviousSlide() } MouseArea { id: mouseArea