diff --git a/.gitignore b/.gitignore index 2f36a5de6..da0f082a6 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ CMakeLists.txt.user # Kate *.kate-swp +tags diff --git a/.tx/config b/.tx/config index 3cf9489f6..686a98bbe 100644 --- a/.tx/config +++ b/.tx/config @@ -1,17 +1,12 @@ [main] host = https://www.transifex.com -[calamares.calamares-master] +[calamares.calamares] file_filter = lang/calamares_.ts source_file = lang/calamares_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 -source_lang = en - [calamares.fdo] file_filter = lang/desktop_.desktop source_file = calamares.desktop diff --git a/CHANGES b/CHANGES index 64102fae8..e874dc866 100644 --- a/CHANGES +++ b/CHANGES @@ -6,14 +6,26 @@ website will have to do for older versions. # 3.2.26 (unreleased) # This release contains contributions from (alphabetically by first name): - - No external contributors yet + - Gaël PORTAY + - Pablo Ovelleiro Corral + - Philip Müller ## Core ## - - No core changes yet + - The default branch for Calamares source repositories (calamares + and calamares-extensions) is now *calamares*. + - External modules can now be built again, outside of the Calamares + source and build-tree. + - The repository *calamares-tools* has been removed. The idea behind + the tooling was to provide schema validation for Calamares configuration + files. This has been merged into the primary repository, where it + is now part of the test suite. ## Modules ## - - No module changes yet - + - *locale* put some more places into the correct timezone **visually**; + for instance Norfolk Island gave up UTC+11.5 in 2015 and is now + UTC+11, but Calamares still showed it in a zone separate from UTC+11. + - *packages* gained support for the Void Linux package manager, + *xbps*. (thanks Pablo) # 3.2.25 (2020-06-06) # diff --git a/CMakeLists.txt b/CMakeLists.txt index 020b83e80..9795da8ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,13 @@ # 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. +# CMake once. These affect the ABI offered by Calamares. +# - PYTHON (enable Python Job modules) +# - QML (enable QML UI View modules) +# - PYTHONQT # TODO:3.3: remove # BUILD_ : choose additional things to build +# - TESTING (standard CMake option) +# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py) # DEBUG_ : special developer flags for debugging # # Example usage: @@ -38,6 +43,7 @@ # One special target is "show-version", which can be built # to obtain the version number from here. +# TODO:3.3: Require CMake 3.12 cmake_minimum_required( VERSION 3.3 FATAL_ERROR ) project( CALAMARES VERSION 3.2.26 @@ -51,13 +57,17 @@ option( INSTALL_CONFIG "Install configuration files" OFF ) option( INSTALL_POLKIT "Install Polkit configuration" ON ) option( INSTALL_COMPLETION "Install shell completions" OFF ) # Options for the calamares executable -option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) -option( WITH_KF5DBus "Use DBus service for unique-application." OFF ) +option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) # TODO:3.3: WITH->BUILD (this isn't an ABI thing) +option( WITH_KF5DBus "Use DBus service for unique-application." OFF ) # TODO:3.3: WITH->BUILD # When adding WITH_* that affects the ABI offered by libcalamares, # also update libcalamares/CalamaresConfig.h.in option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) -option( WITH_PYTHONQT "Enable Python view modules API (deprecated, requires PythonQt)." OFF ) +option( WITH_PYTHONQT "Enable Python view modules API (deprecated, requires PythonQt)." OFF ) # TODO:3.3: remove option( WITH_QML "Enable QML UI options." ON ) +# +# Additional parts to build +option( BUILD_SCHEMA_TESTING "Enable schema-validation-tests" ON ) + # Possible debugging flags are: # - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone @@ -162,7 +172,13 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") ) endif() +# CMake Modules +include( CMakePackageConfigHelpers ) include( CTest ) +include( FeatureSummary ) + +# Calamares Modules +include( CMakeColors ) ### C++ SETUP # @@ -248,9 +264,6 @@ if( CMAKE_COMPILER_IS_GNUCXX ) endif() endif() -include( FeatureSummary ) -include( CMakeColors ) - ### DEPENDENCIES # @@ -319,15 +332,41 @@ if( NOT KF5DBusAddons_FOUND ) set( WITH_KF5DBus OFF ) endif() +# TODO:3.3: Use FindPython3 instead +find_package( PythonInterp ${PYTHONLIBS_VERSION} ) +set_package_properties( + PythonInterp PROPERTIES + DESCRIPTION "Python 3 interpreter." + URL "https://python.org" + PURPOSE "Python 3 interpreter for certain tests." +) +if ( PYTHONINTERP_FOUND ) + message(STATUS "Found Python 3 interpreter ${PYTHON_EXECUTABLE}") + if ( BUILD_SCHEMA_TESTING ) + # The configuration validator script has some dependencies, + # and if they are not installed, don't run. If errors out + # with exit(1) on missing dependencies. + exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps ) + # It should never succeed, but only returns 1 when the imports fail + if ( _validator_deps EQUAL 1 ) + message(STATUS "BUILD_SCHEMA_TESTING dependencies are missing." ) + set( BUILD_SCHEMA_TESTING OFF ) + endif() + endif() +else() + # Can't run schema tests without Python3. + set( BUILD_SCHEMA_TESTING OFF ) +endif() find_package( PythonLibs ${PYTHONLIBS_VERSION} ) set_package_properties( PythonLibs PROPERTIES DESCRIPTION "C interface libraries for the Python 3 interpreter." - URL "http://python.org" + URL "https://python.org" PURPOSE "Python 3 is used for Python job modules." ) if ( PYTHONLIBS_FOUND ) + # TODO:3.3: Require Boost + CMake; sort out Boost::Python # 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 @@ -338,7 +377,7 @@ if ( PYTHONLIBS_FOUND ) Boost PROPERTIES PURPOSE "Boost.Python is used for Python job modules." ) - + # TODO:3.3: Remove PythonQt support find_package( PythonQt ) set_package_properties( PythonQt PROPERTIES DESCRIPTION "A Python embedding solution for Qt applications." @@ -356,6 +395,13 @@ if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND ) set( WITH_PYTHONQT OFF ) endif() +# Now we know the state of the ABI-options, copy them into "Calamares_" +# prefixed variables, to match how the variables would-be-named +# when building out-of-tree. +set(Calamares_WITH_PYTHON ${WITH_PYTHON}) +set(Calamares_WITH_PYTHONQT ${WITH_PYTHONQT}) +set(Calamares_WITH_QML ${WITH_QML}) + ### Transifex Translation status # # Construct language lists for use. If there are p_tx* variables, @@ -520,16 +566,10 @@ endif() # make predefined install dirs available everywhere include( GNUInstallDirs ) -# make uninstall support -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY -) - -# Early configure these files as we need them later on -set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" ) -set( CALAMARES_LIBRARIES calamares ) +# This is used by CalamaresAddLibrary; once Calamares is installed, +# the CalamaresConfig.cmake module sets this variable to the IMPORTED +# libraries for Calamares. +set( Calamares_LIBRARIES calamares ) add_subdirectory( src ) @@ -539,32 +579,39 @@ add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration") add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash") add_feature_info(KDBusAddons ${WITH_KF5DBus} "Unique-application via DBus") -# Add all targets to the build-tree export set +### CMake infrastructure installation +# +# set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" ) set( CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" ) -export( TARGETS calamares - FILE "${PROJECT_BINARY_DIR}/CalamaresLibraryDepends.cmake" ) -# Export the package for use from the build-tree -# (this registers the build-tree with a global CMake-registry) export( PACKAGE Calamares ) - -# Create a CalamaresBuildTreeSettings.cmake file for the use from the build tree -configure_file( CalamaresBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CalamaresBuildTreeSettings.cmake" @ONLY ) - -# Create the CalamaresConfig.cmake and CalamaresConfigVersion files -file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}" ) - -configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY ) -configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY ) -configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY ) +configure_package_config_file( + "CalamaresConfig.cmake.in" + "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" + PATH_VARS + CMAKE_INSTALL_INCLUDEDIR + CMAKE_INSTALL_LIBDIR + CMAKE_INSTALL_DATADIR +) +write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) +install( + EXPORT Calamares + DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" + FILE "CalamaresTargets.cmake" + NAMESPACE Calamares:: +) # Install the cmake files install( FILES "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" - "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" "CMakeModules/CalamaresAddBrandingSubdirectory.cmake" "CMakeModules/CalamaresAddLibrary.cmake" "CMakeModules/CalamaresAddModuleSubdirectory.cmake" @@ -573,48 +620,36 @@ install( "CMakeModules/CalamaresAddTranslations.cmake" "CMakeModules/CalamaresAutomoc.cmake" "CMakeModules/CMakeColors.cmake" + "CMakeModules/FindYAMLCPP.cmake" DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" ) -# Install the export set for use with the install-tree -install( - EXPORT - CalamaresLibraryDepends - DESTINATION - "${CMAKE_INSTALL_CMAKEDIR}" -) - +### Miscellaneous installs +# +# if( INSTALL_CONFIG ) install( - FILES - settings.conf - DESTINATION - share/calamares + FILES settings.conf + DESTINATION share/calamares ) endif() if( INSTALL_POLKIT ) install( - FILES - com.github.calamares.calamares.policy - DESTINATION - "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" + FILES com.github.calamares.calamares.policy + DESTINATION "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" ) endif() install( - FILES - calamares.desktop - DESTINATION - ${CMAKE_INSTALL_DATADIR}/applications + FILES calamares.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications ) install( - FILES - man/calamares.8 - DESTINATION - ${CMAKE_INSTALL_MANDIR}/man8/ + FILES man/calamares.8 + DESTINATION ${CMAKE_INSTALL_MANDIR}/man8/ ) # uninstall target diff --git a/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index 6155293d7..88978e751 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -93,11 +93,10 @@ function(calamares_add_library) # add link targets target_link_libraries(${target} - LINK_PUBLIC ${CALAMARES_LIBRARIES} + LINK_PUBLIC ${Calamares_LIBRARIES} Qt5::Core Qt5::Gui Qt5::Widgets - ${LIBRARY_QT5_MODULES} ) if(LIBRARY_LINK_LIBRARIES) target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES}) diff --git a/CMakeModules/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index fe4f34f94..86f0b8f4c 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -61,7 +61,17 @@ function( calamares_add_module_subdirectory ) # ...otherwise, we look for a module.desc. elseif( EXISTS "${_mod_dir}/module.desc" ) set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules ) - set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} ) + # The module subdirectory may be given as a/b/c, but the module + # needs to be installed as "c", so we split off any intermediate + # directories. + get_filename_component(_dirname "${SUBDIRECTORY}" DIRECTORY) + if( _dirname ) + # Remove the dirname and any leftover leading /s + string( REGEX REPLACE "^${_dirname}/*" "" _modulename "${SUBDIRECTORY}" ) + set( MODULE_DESTINATION ${MODULES_DIR}/${_modulename} ) + else() + set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} ) + endif() # Read module.desc, check that the interface type is supported. # @@ -70,11 +80,11 @@ function( calamares_add_module_subdirectory ) # _mod_testing boolean if the module should be added to the loadmodule tests file(STRINGS "${_mod_dir}/module.desc" MODULE_INTERFACE REGEX "^interface") if ( MODULE_INTERFACE MATCHES "pythonqt" ) - set( _mod_enabled ${WITH_PYTHONQT} ) + set( _mod_enabled ${Calamares_WITH_PYTHONQT} ) set( _mod_reason "No PythonQt support" ) set( _mod_testing OFF ) elseif ( MODULE_INTERFACE MATCHES "python" ) - set( _mod_enabled ${WITH_PYTHON} ) + set( _mod_enabled ${Calamares_WITH_PYTHON} ) set( _mod_reason "No Python support" ) set( _mod_testing ON ) # Will check syntax and imports, at least elseif ( MODULE_INTERFACE MATCHES "qtplugin" ) diff --git a/CalamaresBuildTreeSettings.cmake.in b/CalamaresBuildTreeSettings.cmake.in deleted file mode 100644 index 507fc3d64..000000000 --- a/CalamaresBuildTreeSettings.cmake.in +++ /dev/null @@ -1,4 +0,0 @@ -set(CALAMARES_INCLUDE_DIRS - "@PROJECT_SOURCE_DIR@/src/libcalamares" - "@PROJECT_BINARY_DIR@/src/libcalamares" -) diff --git a/CalamaresConfig.cmake.in b/CalamaresConfig.cmake.in index 6d32410c6..4c62fb477 100644 --- a/CalamaresConfig.cmake.in +++ b/CalamaresConfig.cmake.in @@ -1,32 +1,78 @@ # Config file for the Calamares package # -# It defines the following variables -# CALAMARES_INCLUDE_DIRS - include directories for Calamares -# CALAMARES_LIBRARIES - libraries to link against -# CALAMARES_USE_FILE - name of a convenience include -# CALAMARES_APPLICATION_NAME - human-readable application name +# The following IMPORTED targets are defined: +# - Calamares::calamares - the core library +# - Calamares::calamaresui - the UI (and QML) library +# +# For legacy use it defines the following variables: +# - Calamares_INCLUDE_DIRS - include directories for Calamares +# - Calamares_LIB_DIRS - library directories +# - Calamares_LIBRARIES - libraries to link against + +@PACKAGE_INIT@ + +### Versioning and IMPORTED targets # -# Typical use is: # -# find_package(Calamares REQUIRED) -# include("${CALAMARES_USE_FILE}") +include(${CMAKE_CURRENT_LIST_DIR}/CalamaresConfigVersion.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/CalamaresTargets.cmake) + +### Dependencies +# +# The libraries can depend on a variety of Qt and KDE Frameworks +# components, so accumulate them and find (just once). # +macro(accumulate_deps outvar target namespace) + string(LENGTH ${namespace} _nslen) + get_target_property(_libs ${target} INTERFACE_LINK_LIBRARIES) + foreach(_lib ${_libs}) + if (_lib MATCHES ^${namespace}) + string(SUBSTRING ${_lib} ${_nslen} -1 _component) + list(APPEND ${outvar} ${_component}) + endif() + endforeach() +endmacro() + +# Qt5 infrastructure for translations is required +set(qt5_required Core Widgets LinguistTools) +accumulate_deps(qt5_required Calamares::calamares Qt5::) +accumulate_deps(qt5_required Calamares::calamaresui Qt5::) +find_package(Qt5 CONFIG REQUIRED ${qt5_required}) -# Compute paths -get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -if(EXISTS "${CALAMARES_CMAKE_DIR}/CMakeCache.txt") - # In build tree - include("${CALAMARES_CMAKE_DIR}/CalamaresBuildTreeSettings.cmake") -else() - set(CALAMARES_INCLUDE_DIRS "${CALAMARES_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/libcalamares") +set(kf5_required "") +accumulate_deps(kf5_required Calamares::calamares KF5::) +accumulate_deps(kf5_required Calamares::calamaresui KF5::) +if(kf5_required) + find_package(ECM ${ECM_VERSION} NO_MODULE) + if( ECM_FOUND ) + list(PREPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + find_package(KF5 REQUIRED COMPONENTS ${kf5_required}) + endif() endif() -# Our library dependencies (contains definitions for IMPORTED targets) -include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake") +### Legacy support +# +# +set(Calamares_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@") +set(Calamares_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set(Calamares_LIBRARIES Calamares::calamares) + +### CMake support +# +# +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) -# These are IMPORTED targets created by CalamaresLibraryDepends.cmake -set(CALAMARES_LIBRARIES calamares) +include(CalamaresAddBrandingSubdirectory) +include(CalamaresAddLibrary) +include(CalamaresAddModuleSubdirectory) +include(CalamaresAddPlugin) -# Convenience variables -set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake") -set(CALAMARES_APPLICATION_NAME "Calamares") +# These are feature-settings that affect consumers of Calamares +# libraries as well; without Python-support in the libs, for instance, +# there's no point in having a Python plugin. +# +# This list should match the one in libcalamares/CalamaresConfig.h, +# which is the C++-language side of the same configuration. +set(Calamares_WITH_PYTHON @WITH_PYTHON@) +set(Calamares_WITH_PYTHONQT @WITH_PYTHONQT@) +set(Calamares_WITH_QML @WITH_QML@) diff --git a/CalamaresConfigVersion.cmake.in b/CalamaresConfigVersion.cmake.in deleted file mode 100644 index 05b87c8d3..000000000 --- a/CalamaresConfigVersion.cmake.in +++ /dev/null @@ -1,12 +0,0 @@ -set(PACKAGE_VERSION "@CALAMARES_VERSION@") - -# Check whether the requested PACKAGE_FIND_VERSION is compatible -if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() - diff --git a/CalamaresUse.cmake.in b/CalamaresUse.cmake.in deleted file mode 100644 index 00f3c968d..000000000 --- a/CalamaresUse.cmake.in +++ /dev/null @@ -1,29 +0,0 @@ -# A setup-cmake-things-for-Calamares module. -# -# This module handles looking for dependencies and including -# all of the Calamares macro modules, so that you can focus -# on just using the macros to build Calamares modules. -# Typical use looks like this: -# -# ``` -# find_package( Calamares REQUIRED ) -# include( "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake" ) -# ``` -# -# The first CMake command finds Calamares (which will contain -# this file), then adds the found location to the search path, -# and then includes this file. After that, you can use -# Calamares module and plugin macros. - -if( NOT CALAMARES_CMAKE_DIR ) - message( FATAL_ERROR "Use find_package(Calamares) first." ) -endif() -set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} ) - -find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools ) - -include( CalamaresAddLibrary ) -include( CalamaresAddModuleSubdirectory ) -include( CalamaresAddPlugin ) -include( CalamaresAddBrandingSubdirectory ) - diff --git a/README.md b/README.md index 7b12532e5..2544ebb69 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ --------- [![GitHub release](https://img.shields.io/github/release/calamares/calamares.svg)](https://github.com/calamares/calamares/releases) -[![Travis Build Status](https://travis-ci.org/calamares/calamares.svg?branch=master)](https://travis-ci.org/calamares/calamares) +[![Travis Build Status](https://travis-ci.org/calamares/calamares.svg?branch=calamares)](https://travis-ci.org/calamares/calamares) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5389/badge.svg)](https://scan.coverity.com/projects/5389) -[![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/master/LICENSE) +[![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/calamares/LICENSE) | [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](https://github.com/calamares/calamares/wiki/Develop-Guide) | Freenode (IRC): #calamares | [Wiki](https://github.com/calamares/calamares/wiki) | |:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:| @@ -23,11 +23,12 @@ Main: * KDE Frameworks KCoreAddons (>= 5.58 recommended) * PythonQt (optional, deprecated) -Modules: -* 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 +Individual modules may have their own requirements; +these are listed in CMake output. +Particular requirements (not complete): + +* *fsresizer* KPMCore >= 3.3 (>= 4.1 recommended) +* *partition* KPMCore >= 3.3 (>= 4.1 recommended) * *users* LibPWQuality (optional) ### Building diff --git a/ci/configvalidator.py b/ci/configvalidator.py new file mode 100644 index 000000000..9d1bc21a5 --- /dev/null +++ b/ci/configvalidator.py @@ -0,0 +1,128 @@ +#! /usr/bin/env python3 +# +# SPDX-FileCopyrightText: 2020 Adriaan de Groot +# SPDX-License-Identifier: BSD-2-Clause +# License-Filename: LICENSES/BSD2 +# +usage = """ +Validates a Calamares config file -- YAML syntax -- against a schema. + +The schema is also written in YAML syntax, but the schema itself +is JSON-schema. This is possible because all JSON is YAML, and most +YAML is JSON. The limited subset of YAML that Calamares uses is +JSON-representable, anyway. + +Usage: + configvalidator.py ... + configvalidator.py -x + +Exits with value 0 on success, otherwise: + 1 on missing dependencies + 2 on invalid command-line arguments + 3 on missing files + 4 if files have invalid syntax + 5 if files fail to validate +Use -x as only command-line argument to check the imports only. +""" + +# The schemata originally lived outside the Calamares repository, +# without documented tooling. By putting them in the repository +# with the example files and explicit tooling, there's a better +# chance of them catching problems and acting as documentation. + +dependencies = """ +Dependencies for this tool are: py-yaml and py-jsonschema. + + https://pyyaml.org/ + https://github.com/Julian/jsonschema + +Simple installation is `pip install pyyaml jsonschema` +""" + +ERR_IMPORT, ERR_USAGE, ERR_FILE_NOT_FOUND, ERR_SYNTAX, ERR_INVALID = range(1,6) + +### DEPENDENCIES +# +# +try: + from jsonschema import validate, SchemaError, ValidationError + from yaml import safe_load, YAMLError +except ImportError as e: + print(e) + print(dependencies) + exit(ERR_IMPORT) + +from os.path import exists +import sys + +### INPUT VALIDATION +# +# +if len(sys.argv) < 3: + # Special-case: called with -x to just test the imports + if len(sys.argv) == 2 and sys.argv[1] == "-x": + exit(0) + print(usage) + exit(ERR_USAGE) + +schema_file_name = sys.argv[1] +config_file_names = sys.argv[2:] + +if not exists(schema_file_name): + print(usage) + print("\nSchema file '{}' does not exist.".format(schema_file_name)) + exit(ERR_FILE_NOT_FOUND) +for f in config_file_names: + if not exists(f): + print(usage) + print("\nYAML file '{}' does not exist.".format(f)) + exit(ERR_FILE_NOT_FOUND) + +### FILES SYNTAX CHECK +# +# +with open(schema_file_name, "r") as data: + try: + schema = safe_load(data) + except YAMLError as e: + print("Schema error: {} {}.".format(e.problem, e.problem_mark)) + print("\nSchema file '{}' is invalid YAML.".format(schema_file_name)) + exit(ERR_SYNTAX) + +try: + validate(instance={}, schema=schema) +# While developing the schemata, get full exceptions from schema failure +except SchemaError as e: + print(e) + print("\nSchema file '{}' is invalid JSON-Schema.".format(schema_file_name)) + exit(ERR_INVALID) +except ValidationError: + # Just means that empty isn't valid, but the Schema itself is + pass + +configs = [] +for f in config_file_names: + config = None + with open(f, "r") as data: + try: + config = safe_load(data) + except YAMLError as e: + print("YAML error: {} {}.".format(e.problem, e.problem_mark)) + print("\nYAML file '{}' is invalid.".format(f)) + exit(ERR_SYNTAX) + if config is None: + print("YAML file '{}' is empty.".format(f)) + configs.append(config) + +assert len(configs) == len(config_file_names), "Not all configurations loaded." + +### SCHEMA VALIDATION +# +# +for c, f in zip(configs, config_file_names): + try: + validate(instance=c, schema=schema) + except ValidationError as e: + print(e) + print("\nConfig file '{}' does not validate in schema.".format(f)) + exit(ERR_INVALID) diff --git a/ci/travis-coverity.sh b/ci/travis-coverity.sh index 88b6a2ab5..78535df65 100755 --- a/ci/travis-coverity.sh +++ b/ci/travis-coverity.sh @@ -29,6 +29,6 @@ tar caf calamares-ci.tar.xz cov-int curl -k --form token=$COVERITY_SCAN_TOKEN \ --form email=groot@kde.org \ --form file=@calamares-ci.tar.xz \ - --form version="master-`date -u +%Y%m%d`" \ - --form description="master on `date -u`" \ + --form version="calamares-`date -u +%Y%m%d`" \ + --form description="calamares on `date -u`" \ https://scan.coverity.com/builds?project=calamares%2Fcalamares diff --git a/ci/txpull.sh b/ci/txpull.sh index 734a689b5..619963687 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -23,20 +23,15 @@ # ### END USAGE -### INITIAL SETUP +### SANITY CHECKING # -# This stuff needs to be done once; in a real CI environment where it -# runs regularly in a container, the setup needs to be done when -# creating the container. +# The script needs a .tx/config to talk to the Transifex server; +# it also checks that it is run from the top-level of a Calamares +# checkout. In order to use the system overall, you'll also need: +# - ~/.gitconfig (For the git commits this does) +# - ~/.transifexrc (Password token for Transifex) +# - ~/.ssh (For git commits) # -# -# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings -# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings -# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github -# -# cd "$WORKSPACE" -# git config --global http.sslVerify false - test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; } @@ -145,5 +140,3 @@ for POFILE in $(find lang -name "python.po") ; do done git add --verbose lang/python* git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true - -# git push --set-upstream origin master diff --git a/ci/txpush.sh b/ci/txpush.sh index 3195f42b4..00d8d401b 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -29,20 +29,15 @@ # ### END USAGE -### INITIAL SETUP +### SANITY CHECKING # -# This stuff needs to be done once; in a real CI environment where it -# runs regularly in a container, the setup needs to be done when -# creating the container. +# The script needs a .tx/config to talk to the Transifex server; +# it also checks that it is run from the top-level of a Calamares +# checkout. In order to use the system overall, you'll also need: +# - ~/.gitconfig (For the git commits this does) +# - ~/.transifexrc (Password token for Transifex) +# - ~/.ssh (For git commits) # -# -# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings -# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings -# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github -# -# cd "$WORKSPACE" -# git config --global http.sslVerify false - test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; } test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; } @@ -106,7 +101,7 @@ if test -n "$XMLLINT" ; then $XMLLINT --c14n11 "$TS_FILE" | { echo "" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE" fi -tx push --source --no-interactive -r calamares.calamares-master +tx push --source --no-interactive -r calamares.calamares tx push --source --no-interactive -r calamares.fdo diff --git a/ci/txstats.py b/ci/txstats.py index e78a8ad9c..139ebe523 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -58,7 +58,7 @@ def get_tx_stats(token, verbose): """ import requests - r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares-master/", auth=("api", token)) + r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares/", auth=("api", token)) if r.status_code != 200: return 1 diff --git a/data/FreeBSD/Makefile b/data/FreeBSD/Makefile new file mode 100644 index 000000000..520a05638 --- /dev/null +++ b/data/FreeBSD/Makefile @@ -0,0 +1,34 @@ +# $FreeBSD$ + +PORTNAME= calamares +DISTVERSION= 3.2.25 +CATEGORIES= sysutils +MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/v${DISTVERSION}/ + +MAINTAINER= adridg@FreeBSD.org +COMMENT= GUI System installer and OEM configurator + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= libyaml-cpp.so:devel/yaml-cpp \ + libpwquality.so:security/libpwquality \ + libboost_python${PYTHON_SUFFIX}.so:devel/boost-python-libs + +USES= cmake compiler:c++17-lang gettext kde:5 pkgconfig \ + python:3.3+ qt:5 +USE_QT= concurrent core dbus declarative gui \ + network quickcontrols2 svg widgets xml \ + buildtools_build linguist_build qmake_build +USE_KDE= coreaddons dbusaddons parts service \ + ecm_build +USE_LDCONFIG= yes + +CMAKE_OFF= WITH_KF5Crash \ + INSTALL_CONFIG \ + INSTALL_COMPLETION \ + INSTALL_POLKIT +CMAKE_ON= CMAKE_DISABLE_FIND_PACKAGE_KPMcore +CMAKE_ARGS= -DSKIP_MODULES="webview" + +.include diff --git a/data/FreeBSD/distinfo b/data/FreeBSD/distinfo new file mode 100644 index 000000000..e333963a8 --- /dev/null +++ b/data/FreeBSD/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1592339404 +SHA256 (calamares-3.2.25.tar.gz) = 797ce33db7d4e4c06bbccef95f6c4023f7628e91bd142896695565fed4ae8c4b +SIZE (calamares-3.2.25.tar.gz) = 3580197 diff --git a/data/FreeBSD/pkg-descr b/data/FreeBSD/pkg-descr new file mode 100644 index 000000000..39cb4335c --- /dev/null +++ b/data/FreeBSD/pkg-descr @@ -0,0 +1,14 @@ +Calamares is an installer framework. By design it is very customizable, +in order to satisfy a wide variety of needs and use cases. + +Calamares aims to be easy, usable, beautiful, pragmatic, inclusive and +distribution-agnostic. + +Got a Linux distribution but no system installer? Grab Calamares, mix +and match any number of Calamares modules (or write your own in Python +or C++), throw together some branding, package it up and you are ready +to ship! + +(The above applies to FreeBSD as well) + +WWW: https://calamares.io/ diff --git a/data/FreeBSD/pkg-plist b/data/FreeBSD/pkg-plist new file mode 100644 index 000000000..7f588b7a9 --- /dev/null +++ b/data/FreeBSD/pkg-plist @@ -0,0 +1,224 @@ +bin/calamares +include/libcalamares/CalamaresConfig.h +include/libcalamares/CppJob.h +include/libcalamares/DllMacro.h +include/libcalamares/GlobalStorage.h +include/libcalamares/Job.h +include/libcalamares/JobExample.h +include/libcalamares/JobQueue.h +include/libcalamares/ProcessJob.h +include/libcalamares/PythonHelper.h +include/libcalamares/PythonJob.h +include/libcalamares/PythonJobApi.h +include/libcalamares/Settings.h +include/libcalamares/utils/BoostPython.h +include/libcalamares/utils/CalamaresUtilsSystem.h +include/libcalamares/utils/CommandList.h +include/libcalamares/utils/Dirs.h +include/libcalamares/utils/Entropy.h +include/libcalamares/utils/Logger.h +include/libcalamares/utils/NamedEnum.h +include/libcalamares/utils/NamedSuffix.h +include/libcalamares/utils/PluginFactory.h +include/libcalamares/utils/RAII.h +include/libcalamares/utils/Retranslator.h +include/libcalamares/utils/String.h +include/libcalamares/utils/Tests.h +include/libcalamares/utils/UMask.h +include/libcalamares/utils/Units.h +include/libcalamares/utils/Variant.h +include/libcalamares/utils/Yaml.h +include/libcalamares/utils/moc-warnings.h +lib/calamares/libcalamares.so +lib/calamares/modules/bootloader/main.py +lib/calamares/modules/bootloader/module.desc +lib/calamares/modules/bootloader/test.yaml +lib/calamares/modules/contextualprocess/libcalamares_job_contextualprocess.so +lib/calamares/modules/contextualprocess/module.desc +lib/calamares/modules/displaymanager/main.py +lib/calamares/modules/displaymanager/module.desc +lib/calamares/modules/dracut/main.py +lib/calamares/modules/dracut/module.desc +lib/calamares/modules/dracutlukscfg/libcalamares_job_dracutlukscfg.so +lib/calamares/modules/dracutlukscfg/module.desc +lib/calamares/modules/dummycpp/libcalamares_job_dummycpp.so +lib/calamares/modules/dummycpp/module.desc +lib/calamares/modules/dummyprocess/module.desc +lib/calamares/modules/dummypython/main.py +lib/calamares/modules/dummypython/module.desc +lib/calamares/modules/finished/libcalamares_viewmodule_finished.so +lib/calamares/modules/finished/module.desc +lib/calamares/modules/fstab/main.py +lib/calamares/modules/fstab/module.desc +lib/calamares/modules/fstab/test.yaml +lib/calamares/modules/grubcfg/main.py +lib/calamares/modules/grubcfg/module.desc +lib/calamares/modules/hostinfo/libcalamares_job_hostinfo.so +lib/calamares/modules/hostinfo/module.desc +lib/calamares/modules/hwclock/main.py +lib/calamares/modules/hwclock/module.desc +lib/calamares/modules/initcpio/libcalamares_job_initcpio.so +lib/calamares/modules/initcpio/module.desc +lib/calamares/modules/initcpiocfg/main.py +lib/calamares/modules/initcpiocfg/module.desc +lib/calamares/modules/initramfs/libcalamares_job_initramfs.so +lib/calamares/modules/initramfs/module.desc +lib/calamares/modules/initramfscfg/encrypt_hook +lib/calamares/modules/initramfscfg/encrypt_hook_nokey +lib/calamares/modules/initramfscfg/main.py +lib/calamares/modules/initramfscfg/module.desc +lib/calamares/modules/interactiveterminal/libcalamares_viewmodule_interactiveterminal.so +lib/calamares/modules/interactiveterminal/module.desc +lib/calamares/modules/keyboard/libcalamares_viewmodule_keyboard.so +lib/calamares/modules/keyboard/module.desc +lib/calamares/modules/keyboardq/libcalamares_viewmodule_keyboardq.so +lib/calamares/modules/keyboardq/module.desc +lib/calamares/modules/license/libcalamares_viewmodule_license.so +lib/calamares/modules/license/module.desc +lib/calamares/modules/locale/libcalamares_viewmodule_locale.so +lib/calamares/modules/locale/module.desc +lib/calamares/modules/localecfg/main.py +lib/calamares/modules/localecfg/module.desc +lib/calamares/modules/localeq/libcalamares_viewmodule_localeq.so +lib/calamares/modules/localeq/module.desc +lib/calamares/modules/luksbootkeyfile/libcalamares_job_luksbootkeyfile.so +lib/calamares/modules/luksbootkeyfile/module.desc +lib/calamares/modules/luksopenswaphookcfg/main.py +lib/calamares/modules/luksopenswaphookcfg/module.desc +lib/calamares/modules/machineid/libcalamares_job_machineid.so +lib/calamares/modules/machineid/module.desc +lib/calamares/modules/mount/main.py +lib/calamares/modules/mount/module.desc +lib/calamares/modules/mount/test.yaml +lib/calamares/modules/netinstall/libcalamares_viewmodule_netinstall.so +lib/calamares/modules/netinstall/module.desc +lib/calamares/modules/networkcfg/main.py +lib/calamares/modules/networkcfg/module.desc +lib/calamares/modules/notesqml/libcalamares_viewmodule_notesqml.so +lib/calamares/modules/notesqml/module.desc +lib/calamares/modules/oemid/libcalamares_viewmodule_oemid.so +lib/calamares/modules/oemid/module.desc +lib/calamares/modules/openrcdmcryptcfg/main.py +lib/calamares/modules/openrcdmcryptcfg/module.desc +lib/calamares/modules/packagechooser/libcalamares_viewmodule_packagechooser.so +lib/calamares/modules/packagechooser/module.desc +lib/calamares/modules/packages/main.py +lib/calamares/modules/packages/module.desc +lib/calamares/modules/packages/test.yaml +lib/calamares/modules/plymouthcfg/main.py +lib/calamares/modules/plymouthcfg/module.desc +lib/calamares/modules/preservefiles/libcalamares_job_preservefiles.so +lib/calamares/modules/preservefiles/module.desc +lib/calamares/modules/rawfs/main.py +lib/calamares/modules/rawfs/module.desc +lib/calamares/modules/removeuser/libcalamares_job_removeuser.so +lib/calamares/modules/removeuser/module.desc +lib/calamares/modules/services-openrc/main.py +lib/calamares/modules/services-openrc/module.desc +lib/calamares/modules/services-systemd/main.py +lib/calamares/modules/services-systemd/module.desc +lib/calamares/modules/shellprocess/libcalamares_job_shellprocess.so +lib/calamares/modules/shellprocess/module.desc +lib/calamares/modules/summary/libcalamares_viewmodule_summary.so +lib/calamares/modules/summary/module.desc +lib/calamares/modules/tracking/libcalamares_viewmodule_tracking.so +lib/calamares/modules/tracking/module.desc +lib/calamares/modules/umount/main.py +lib/calamares/modules/umount/module.desc +lib/calamares/modules/unpackfs/main.py +lib/calamares/modules/unpackfs/module.desc +lib/calamares/modules/unpackfs/runtests.sh +lib/calamares/modules/users/libcalamares_viewmodule_users.so +lib/calamares/modules/users/module.desc +lib/calamares/modules/welcome/libcalamares_viewmodule_welcome.so +lib/calamares/modules/welcome/module.desc +lib/calamares/modules/welcomeq/libcalamares_viewmodule_welcomeq.so +lib/calamares/modules/welcomeq/module.desc +lib/cmake/Calamares/CMakeColors.cmake +lib/cmake/Calamares/CalamaresAddBrandingSubdirectory.cmake +lib/cmake/Calamares/CalamaresAddLibrary.cmake +lib/cmake/Calamares/CalamaresAddModuleSubdirectory.cmake +lib/cmake/Calamares/CalamaresAddPlugin.cmake +lib/cmake/Calamares/CalamaresAddTest.cmake +lib/cmake/Calamares/CalamaresAddTranslations.cmake +lib/cmake/Calamares/CalamaresAutomoc.cmake +lib/cmake/Calamares/CalamaresConfig.cmake +lib/cmake/Calamares/CalamaresConfigVersion.cmake +lib/cmake/Calamares/CalamaresLibraryDepends-%%CMAKE_BUILD_TYPE%%.cmake +lib/cmake/Calamares/CalamaresLibraryDepends.cmake +lib/cmake/Calamares/CalamaresUse.cmake +lib/libcalamares.so +lib/libcalamares.so.3.2.25 +lib/libcalamaresui.so +lib/libcalamaresui.so.3.2.25 +man/man8/calamares.8.gz +share/applications/calamares.desktop +%%DATADIR%%/branding/default/banner.png +%%DATADIR%%/branding/default/branding.desc +%%DATADIR%%/branding/default/lang/calamares-default_ar.qm +%%DATADIR%%/branding/default/lang/calamares-default_en.qm +%%DATADIR%%/branding/default/lang/calamares-default_eo.qm +%%DATADIR%%/branding/default/lang/calamares-default_fr.qm +%%DATADIR%%/branding/default/lang/calamares-default_nl.qm +%%DATADIR%%/branding/default/languages.png +%%DATADIR%%/branding/default/show.qml +%%DATADIR%%/branding/default/squid.png +%%DATADIR%%/branding/default/stylesheet.qss +%%DATADIR%%/qml/calamares/slideshow/BackButton.qml +%%DATADIR%%/qml/calamares/slideshow/ForwardButton.qml +%%DATADIR%%/qml/calamares/slideshow/NavButton.qml +%%DATADIR%%/qml/calamares/slideshow/Presentation.qml +%%DATADIR%%/qml/calamares/slideshow/Slide.qml +%%DATADIR%%/qml/calamares/slideshow/SlideCounter.qml +%%DATADIR%%/qml/calamares/slideshow/qmldir +share/icons/hicolor/scalable/apps/calamares.svg +share/locale/ar/LC_MESSAGES/calamares-python.mo +share/locale/as/LC_MESSAGES/calamares-python.mo +share/locale/ast/LC_MESSAGES/calamares-python.mo +share/locale/be/LC_MESSAGES/calamares-python.mo +share/locale/bg/LC_MESSAGES/calamares-python.mo +share/locale/ca/LC_MESSAGES/calamares-python.mo +share/locale/cs_CZ/LC_MESSAGES/calamares-python.mo +share/locale/da/LC_MESSAGES/calamares-python.mo +share/locale/de/LC_MESSAGES/calamares-python.mo +share/locale/el/LC_MESSAGES/calamares-python.mo +share/locale/en_GB/LC_MESSAGES/calamares-python.mo +share/locale/eo/LC_MESSAGES/calamares-python.mo +share/locale/es/LC_MESSAGES/calamares-python.mo +share/locale/es_MX/LC_MESSAGES/calamares-python.mo +share/locale/es_PR/LC_MESSAGES/calamares-python.mo +share/locale/et/LC_MESSAGES/calamares-python.mo +share/locale/eu/LC_MESSAGES/calamares-python.mo +share/locale/fi_FI/LC_MESSAGES/calamares-python.mo +share/locale/fr/LC_MESSAGES/calamares-python.mo +share/locale/gl/LC_MESSAGES/calamares-python.mo +share/locale/he/LC_MESSAGES/calamares-python.mo +share/locale/hi/LC_MESSAGES/calamares-python.mo +share/locale/hr/LC_MESSAGES/calamares-python.mo +share/locale/hu/LC_MESSAGES/calamares-python.mo +share/locale/id/LC_MESSAGES/calamares-python.mo +share/locale/is/LC_MESSAGES/calamares-python.mo +share/locale/it_IT/LC_MESSAGES/calamares-python.mo +share/locale/ja/LC_MESSAGES/calamares-python.mo +share/locale/ko/LC_MESSAGES/calamares-python.mo +share/locale/lt/LC_MESSAGES/calamares-python.mo +share/locale/ml/LC_MESSAGES/calamares-python.mo +share/locale/mr/LC_MESSAGES/calamares-python.mo +share/locale/nb/LC_MESSAGES/calamares-python.mo +share/locale/nl/LC_MESSAGES/calamares-python.mo +share/locale/pl/LC_MESSAGES/calamares-python.mo +share/locale/pt_BR/LC_MESSAGES/calamares-python.mo +share/locale/pt_PT/LC_MESSAGES/calamares-python.mo +share/locale/ro/LC_MESSAGES/calamares-python.mo +share/locale/ru/LC_MESSAGES/calamares-python.mo +share/locale/sk/LC_MESSAGES/calamares-python.mo +share/locale/sl/LC_MESSAGES/calamares-python.mo +share/locale/sq/LC_MESSAGES/calamares-python.mo +share/locale/sr/LC_MESSAGES/calamares-python.mo +share/locale/sr@latin/LC_MESSAGES/calamares-python.mo +share/locale/sv/LC_MESSAGES/calamares-python.mo +share/locale/th/LC_MESSAGES/calamares-python.mo +share/locale/tr_TR/LC_MESSAGES/calamares-python.mo +share/locale/uk/LC_MESSAGES/calamares-python.mo +share/locale/zh_CN/LC_MESSAGES/calamares-python.mo +share/locale/zh_TW/LC_MESSAGES/calamares-python.mo diff --git a/lang/calamares_bn.ts b/lang/calamares_bn.ts new file mode 100644 index 000000000..a74690da3 --- /dev/null +++ b/lang/calamares_bn.ts @@ -0,0 +1,3827 @@ + + + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + 1% মাস্টার বুট রেকর্ড + + + + Boot Partition + বুট পার্টিশন + + + + System Partition + সিস্টেম পার্টিশন + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::BlankViewStep + + + Blank Page + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Reload Stylesheet + + + + + Widget Tree + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Set up + + + + + Install + + + + + Calamares::FailJob + + + Job failed (%1) + + + + + Programmed job failure was explicitly requested. + + + + + Calamares::JobThread + + + Done + সম্পন্ন + + + + Calamares::NamedJob + + + Example job (%1) + + + + + Calamares::ProcessJob + + + Run command '%1' in target system. + + + + + Run command '%1'. + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + খারাপ ওয়ার্কিং ডিরেক্টরি পাথ + + + + Working directory %1 for python job %2 is not readable. + ওয়ার্কিং ডিরেক্টরি 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". + বুস্ট.পাইথন কাজে 1% ত্রুটি + + + + Calamares::QmlViewStep + + + Loading ... + + + + + QML Step <i>%1</i>. + + + + + Loading failed. + + + + + Calamares::RequirementsChecker + + + Waiting for %n module(s). + + + + + + + + (%n second(s)) + + + + + + + + System-requirements checking is complete. + + + + + Calamares::ViewManager + + + Setup Failed + + + + + Installation Failed + ইনস্টলেশন ব্যর্থ হয়েছে + + + + Would you like to paste the install log to the web? + + + + + Error + ত্রুটি + + + + + &Yes + + + + + + &No + + + + + &Close + + + + + Install Log Paste URL + + + + + The upload was unsuccessful. No web-paste was done. + + + + + Calamares Initialization Failed + + + + + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. + + + + + <br/>The following modules could not be loaded: + + + + + Continue with setup? + + + + + Continue with installation? + + + + + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Set up now + + + + + &Install now + + + + + Go &back + + + + + &Set up + + + + + &Install + + + + + Setup is complete. Close the setup program. + + + + + The installation is complete. Close the installer. + + + + + Cancel setup without changing the system. + + + + + Cancel installation without changing the system. + + + + + &Next + এবং পরবর্তী + + + + &Back + এবং পেছনে + + + + &Done + + + + + &Cancel + + + + + Cancel setup? + + + + + Cancel installation? + + + + + Do you really want to cancel the current setup process? +The setup program will quit and all changes will be lost. + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + CalamaresPython::Helper + + + Unknown exception type + অজানা ব্যতিক্রম প্রকার + + + + unparseable Python error + আনপারসেবল পাইথন ত্রুটি + + + + unparseable Python traceback + আনপারসেবল পাইথন ট্রেসব্যাক + + + + Unfetchable Python error. + অপরিবর্তনীয় পাইথন ত্রুটি। + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + এবং পেছনে + + + + &Next + এবং পরবর্তী + + + + &Cancel + + + + + %1 Setup Program + + + + + %1 Installer + 1% ইনস্টল + + + + CheckerContainer + + + Gathering system information... + + + + + ChoicePage + + + Form + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. + + + + + Boot loader location: + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + No Swap + + + + + Reuse Swap + + + + + Swap (no Hibernate) + + + + + Swap (with Hibernate) + + + + + Swap to file + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + Config + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + Network Installation. (Disabled: Incorrect configuration) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + Network Installation. (Disabled: internal error) + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + একটি পার্টিশন তৈরি করুন + + + + Si&ze: + + + + + MiB + + + + + Partition &Type: + পার্টিশন এবং প্রকার: + + + + &Primary + এবং প্রাথমিক + + + + E&xtended + সম্প্রসারিত + + + + Fi&le System: + + + + + LVM LV name + + + + + &Mount Point: + এবং মাউন্ট পয়েন্ট: + + + + Flags: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + + + + + CreateVolumeGroupJob + + + Create new volume group named %1. + + + + + Create new volume group named <strong>%1</strong>. + + + + + Creating new volume group named %1. + + + + + The installer failed to create a volume group named '%1'. + + + + + DeactivateVolumeGroupJob + + + + Deactivate volume group named %1. + + + + + Deactivate volume group named <strong>%1</strong>. + + + + + The installer failed to deactivate a volume group named %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + DeviceModel + + + %1 - %2 (%3) + device[name] - size[number] (device-node[name]) + + + + + %1 - (%2) + device[name] - (device-node[name]) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + এবং মাউন্ট পয়েন্ট: + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Setup Complete + + + + + Installation Complete + + + + + The setup of %1 is complete. + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MiB) on %4. + + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + GeneralRequirements + + + has at least %1 GiB available drive space + + + + + There is not enough drive space. At least %1 GiB is required. + + + + + has at least %1 GiB working memory + + + + + The system does not have enough working memory. At least %1 GiB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + is running the installer as an administrator (root) + + + + + The setup program is not running with administrator rights. + + + + + The installer is not running with administrator rights. + + + + + has a screen large enough to show the whole installer + + + + + The screen is too small to display the setup program. + + + + + The screen is too small to display the installer. + + + + + HostInfoJob + + + Collecting information about your machine. + + + + + IDJob + + + + + + OEM Batch Identifier + + + + + Could not create directories <code>%1</code>. + + + + + Could not open file <code>%1</code>. + + + + + Could not write to file <code>%1</code>. + + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardQmlViewStep + + + Keyboard + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + <h1>License Agreement</h1> + + + + + I accept the terms and conditions above. + + + + + Please review the End User License Agreements (EULAs). + + + + + This setup procedure will install proprietary software that is subject to licensing terms. + + + + + If you do not agree with the terms, the setup procedure cannot continue. + + + + + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + LicenseViewStep + + + License + + + + + LicenseWidget + + + URL: %1 + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + File: %1 + + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + LocaleQmlViewStep + + + Location + + + + + LocaleViewStep + + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + + + + + + + Encrypted rootfs setup error + + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could not configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + + + NetInstallViewStep + + + + Package selection + + + + + Office software + + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + + + + + Services + + + + + Login + + + + + Desktop + + + + + Applications + + + + + Communication + + + + + Development + + + + + Office + + + + + Multimedia + + + + + Internet + + + + + Theming + + + + + Gaming + + + + + Utilities + + + + + NotesQmlViewStep + + + Notes + + + + + OEMPage + + + Ba&tch: + + + + + <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> + + + + + <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> + + + + + OEMViewStep + + + OEM Configuration + + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Password is empty + + + + + PackageChooserPage + + + Form + + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + + + + PackageModel + + + Name + + + + + Description + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + Your Full Name + + + + + What name do you want to use to log in? + + + + + login + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Computer Name + + + + + Choose a password to keep your account safe. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + + Password + + + + + + Repeat Password + + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + + + Require strong passwords. + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + size[number] filesystem[name] + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + Cre&ate + + + + + &Edit + + + + + &Delete + + + + + New Volume Group + + + + + Resize Volume Group + + + + + Deactivate Volume Group + + + + + Remove Volume Group + + + + + I&nstall boot loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + EFI system partition flag not set + + + + + Option to use GPT on BIOS + + + + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + has at least one disk device available. + + + + + There are no partitions to install on. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + %1 (%2) + + + + + Requirements checking for module <i>%1</i> is complete. + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Default Keyboard Model + + + + + + Default + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + No product + + + + + No description provided. + + + + + (no mount point) + + + + + Unpartitioned space or unknown partition table + + + + + RemoveUserJob + + + Remove live user from target system + + + + + RemoveVolumeGroupJob + + + + Remove Volume Group named %1. + + + + + Remove Volume Group named <strong>%1</strong>. + + + + + The installer failed to remove a volume group named '%1'. + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + ResizeFSJob + + + Resize Filesystem Job + + + + + Invalid configuration + + + + + The file-system resize job has an invalid configuration and will not run. + + + + + KPMCore not Available + + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + + + + + The filesystem %1 could not be found in this system, and cannot be resized. + + + + + The device %1 could not be found in this system, and cannot be resized. + + + + + + The filesystem %1 cannot be resized. + + + + + + The device %1 cannot be resized. + + + + + The filesystem %1 must be resized, but cannot. + + + + + The device %1 must be resized, but cannot + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. + + + + + Resizing %2MiB partition %1 to %3MiB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ResizeVolumeGroupDialog + + + Resize Volume Group + + + + + ResizeVolumeGroupJob + + + + Resize volume group named %1 from %2 to %3. + + + + + Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. + + + + + The installer failed to resize a volume group named '%1'. + + + + + ResultsListDialog + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ResultsListWidget + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MiB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MiB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the setup procedure. + + + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + 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. + + + + + 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><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</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. + + + + + 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. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> + + + + + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> + + + + + Your username is too long. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + VariantModel + + + Key + + + + + Value + + + + + VolumeGroupBaseDialog + + + Create Volume Group + + + + + List of Physical Volumes + + + + + Volume Group Name: + + + + + Volume Group Type: + + + + + Physical Extent Size: + + + + + MiB + + + + + Total Size: + + + + + Used Size: + + + + + Total Sectors: + + + + + Quantity of LVs: + + + + + WelcomePage + + + Form + + + + + + Select application and system language + + + + + &About + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + &Support + + + + + Open issues and bug-tracking website + + + + + &Known issues + + + + + Open release notes website + + + + + &Release notes + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + %1 support + + + + + About %1 setup + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + WelcomeQmlViewStep + + + Welcome + + + + + WelcomeViewStep + + + Welcome + + + + + about + + + <h1>%1</h1><br/> + <strong>%2<br/> + for %3</strong><br/><br/> + Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Thanks to <a href='https://calamares.io/team/'>the Calamares team</a> + and the <a href='https://www.transifex.com/calamares/calamares/'>Calamares + translators team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + development is sponsored by <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. + + + + + Back + + + + + keyboardq + + + Keyboard Model + + + + + Pick your preferred keyboard model or use the default one based on the detected hardware + + + + + Refresh + + + + + + Layouts + + + + + + Keyboard Layout + + + + + Models + + + + + Variants + + + + + Test your keyboard + + + + + notesqml + + + <h3>%1</h3> + <p>These are example release notes.</p> + + + + + release_notes + + + <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> + + <p><b>This is bold text</b></p> + <p><i>This is italic text</i></p> + <p><u>This is underlined text</u></p> + <p><center>This text will be center-aligned.</center></p> + <p><s>This is strikethrough</s></p> + + <p>Code example: + <code>ls -l /home</code></p> + + <p><b>Lists:</b></p> + <ul> + <li>Intel CPU systems</li> + <li>AMD CPU systems</li> + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> + + + + + Back + + + + + welcomeq + + + <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> + + + + + About + + + + + Support + + + + + Known issues + + + + + Release notes + + + + + Donate + + + + diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index f54b26d8b..242f5a13f 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -372,7 +372,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Cancel setup without changing the system. - + Cancelar instalación sin cambiar el sistema. @@ -402,7 +402,7 @@ Para configurar el arranque desde un entorno BIOS, este instalador debe instalar Cancel setup? - + ¿Cancelar la instalación? @@ -776,7 +776,7 @@ Saldrá del instalador y se perderán todos los cambios. <h1>Welcome to %1 setup.</h1> - + <h1>Bienvenido al instalador %1.</h1> @@ -1362,12 +1362,12 @@ Saldrá del instalador y se perderán todos los cambios. There is not enough drive space. At least %1 GiB is required. - + No hay suficiente espació en el disco duro. Se requiere al menos %1 GB libre. has at least %1 GiB working memory - + tiene al menos %1 GB de memoria. @@ -1397,12 +1397,12 @@ Saldrá del instalador y se perderán todos los cambios. is running the installer as an administrator (root) - + esta ejecutándose con permisos de administrador (root). The setup program is not running with administrator rights. - + El instalador no esta ejecutándose con permisos de administrador. @@ -1417,7 +1417,7 @@ Saldrá del instalador y se perderán todos los cambios. The screen is too small to display the setup program. - + La pantalla es demasiado pequeña para mostrar el instalador. @@ -1464,7 +1464,7 @@ Saldrá del instalador y se perderán todos los cambios. Creating initramfs with mkinitcpio. - + Creando initramfs con mkinitcpio. @@ -1472,7 +1472,7 @@ Saldrá del instalador y se perderán todos los cambios. Creating initramfs. - + Creando initramfs. @@ -1563,7 +1563,7 @@ Saldrá del instalador y se perderán todos los cambios. <h1>License Agreement</h1> - + <h1>Contrato de licencia</h1> @@ -1651,12 +1651,12 @@ Saldrá del instalador y se perderán todos los cambios. Hide license text - + Ocultar licencia Show the license text - + Ver licencia @@ -1725,7 +1725,7 @@ Saldrá del instalador y se perderán todos los cambios. No partitions are defined. - + No hay particiones definidas. @@ -1779,12 +1779,12 @@ Saldrá del instalador y se perderán todos los cambios. Office software - + Programas de oficina Office package - + Paquete de oficina @@ -1804,12 +1804,12 @@ Saldrá del instalador y se perderán todos los cambios. Kernel - + Kernel Services - + Servicios @@ -1824,7 +1824,7 @@ Saldrá del instalador y se perderán todos los cambios. Applications - + Aplicaciónes @@ -1839,32 +1839,32 @@ Saldrá del instalador y se perderán todos los cambios. Office - + Oficina Multimedia - + Multimedia Internet - + Internet Theming - + Temas Gaming - + Juegos Utilities - + Utilidades @@ -2151,7 +2151,7 @@ Saldrá del instalador y se perderán todos los cambios. Password is empty - + La contraseña vacia @@ -2164,7 +2164,7 @@ Saldrá del instalador y se perderán todos los cambios. Product Name - + Nombre del producto @@ -2174,12 +2174,12 @@ Saldrá del instalador y se perderán todos los cambios. Long Product Description - + Descripción larga del producto Package Selection - + Selección de paquetes @@ -2192,7 +2192,7 @@ Saldrá del instalador y se perderán todos los cambios. Packages - + Paquetes @@ -2241,7 +2241,7 @@ Saldrá del instalador y se perderán todos los cambios. Your Full Name - + Su nombre completo @@ -2266,7 +2266,7 @@ Saldrá del instalador y se perderán todos los cambios. Computer Name - + Nombre de computadora @@ -2283,13 +2283,13 @@ Saldrá del instalador y se perderán todos los cambios. Password - + Contraseña Repeat Password - + Repita la contraseña @@ -2299,7 +2299,7 @@ Saldrá del instalador y se perderán todos los cambios. Require strong passwords. - + Requerir contraseñas seguras @@ -3635,7 +3635,7 @@ Salida: <h1>Welcome to %1 setup.</h1> - + <h1>Bienvenido al instalador %1.</h1> diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 49caf27dc..a2d04b649 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -212,7 +212,7 @@ Loading ... - + Kargatzen ... @@ -222,7 +222,7 @@ Loading failed. - + Kargatzeak huts egin du. @@ -321,7 +321,7 @@ Continue with installation? - + Instalazioarekin jarraitu? @@ -576,7 +576,7 @@ Instalatzailea irten egingo da eta aldaketa guztiak galduko dira. <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. + <strong>Diskoa ezabatu</strong><br/>Honek orain dauden datu guztiak <font color="red">ezabatuko</font> ditu biltegiratze-gailutik. @@ -3703,7 +3703,7 @@ Irteera: Back - + Atzera @@ -3711,7 +3711,7 @@ Irteera: Keyboard Model - + Teklatu modeloa @@ -3748,7 +3748,7 @@ Irteera: Test your keyboard - + Frogatu zure teklatua @@ -3790,7 +3790,7 @@ Irteera: Back - + Atzera @@ -3804,7 +3804,7 @@ Irteera: About - + Honi buruz @@ -3824,7 +3824,7 @@ Irteera: Donate - + Egin dohaintza diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 2599b2e37..2f8a26f6a 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -706,7 +706,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Set keyboard layout to %1/%2. - Impostare il layout della tastiera a %1%2. + Impostare il layout della tastiera a %1/%2. @@ -721,17 +721,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Set timezone to %1/%2.<br/> - Imposta il fuso orario a %1%2.<br/> + Imposta il fuso orario a %1/%2.<br/> Network Installation. (Disabled: Incorrect configuration) - Installazione di rete. (Disabilitato: Configurazione scorretta) + Installazione di rete. (Disabilitato: Configurazione non valida) Network Installation. (Disabled: Received invalid groups data) - Installazione di rete. (Disabilitata: Ricevuti dati non validi dei gruppi) + Installazione di rete. (Disabilitata: Ricevuti dati dei gruppi non validi) @@ -746,22 +746,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse 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> + Questo computer non soddisfa i requisiti minimi per la configurazione di %1.<br/>La configurazione 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> + Questo computer non soddisfa i requisiti minimi per installare %1. <br/>L'installazione non può continuare. <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. + Questo computer non soddisfa alcuni requisiti raccomandati per la configurazione di %1.<br/>La configurazione 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. + Questo computer non soddisfa alcuni requisiti consigliati per l'installazione di %1.<br/>L'installazione può continuare ma alcune funzionalità potrebbero non essere disponibili. @@ -771,17 +771,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>Welcome to the Calamares setup program for %1.</h1> - <h1>Benvenuto nel programma di installazione Calamares di %1.</h1> + <h1>Benvenuto nel programma di configurazione Calamares per %1.</h1> <h1>Welcome to %1 setup.</h1> - <h1>Benvenuto nell'installazione di %1.</h1> + <h1>Benvenuto nella configurazione di %1.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Benvenuti nel programma di installazione Calamares per %1.</h1> + <h1>Benvenuti nel programma d'installazione Calamares per %1.</h1> @@ -880,12 +880,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Create new %2MiB partition on %4 (%3) with file system %1. - Crea una nuova partizione da %2MiB su %4 (%3) con file system %1 + Crea una nuova partizione da %2MiB su %4 (%3) con file system %1. Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Creare nuova partizione di <strong>%2MiB</strong> su <strong>%4</strong> (%3) con file system <strong>%1</strong>. + Crea una nuova partizione di <strong>%2MiB</strong> su <strong>%4</strong> (%3) con file system <strong>%1</strong>. @@ -1015,7 +1015,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse The installer failed to create a volume group named '%1'. - Il programma di installazione non è riuscito a creare un gruppo di volumi denominato '%1'. + Il programma d'installazione non è riuscito a creare un gruppo di volumi denominato '%1'. @@ -1024,7 +1024,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Deactivate volume group named %1. - Disattiva gruppo di volumi denominato %1. + Disattiva il gruppo di volumi denominato %1. @@ -3799,7 +3799,27 @@ Output: </ul> <p>The vertical scrollbar is adjustable, current width set to 10.</p> - + <h3>%1</h3> + <p>Questo è un file QML di esempio, che mostra le opzioni in RichText con contenuto scorrevole</p> + + <p>QML con RichText può utilizzare tag HTML, il contenuto scorrevole è utile per i touchscreen.</p> + + <p><b>Questo è un testo in grassetto</b></p> + <p><i>Questo è un testo in corsivo</i></p> + <p><u>Questo è un testo sottolineato</u></p> + <p><center>Questo testo sarà allineato al centro.</center></p> + <p><s>Questo è un testo barrato</s></p> + + <p>Esempio di codice: + <code>ls -l /home</code></p> + + <p><b>Liste:</b></p> + <ul> + <li>Sistemi con CPU Intel</li> + <li>Sistemi con CPU AMD</li> + </ul> + + <p>La barra di scorrimento verticale è regolabile, la larghezza corrente è impostata a 10.</p> diff --git a/lang/calamares_lv.ts b/lang/calamares_lv.ts new file mode 100644 index 000000000..4d6272e18 --- /dev/null +++ b/lang/calamares_lv.ts @@ -0,0 +1,3829 @@ + + + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::BlankViewStep + + + Blank Page + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Reload Stylesheet + + + + + Widget Tree + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Set up + + + + + Install + + + + + Calamares::FailJob + + + Job failed (%1) + + + + + Programmed job failure was explicitly requested. + + + + + Calamares::JobThread + + + Done + + + + + Calamares::NamedJob + + + Example job (%1) + + + + + Calamares::ProcessJob + + + Run command '%1' in target system. + + + + + Run command '%1'. + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + Running %1 operation. + + + + + Bad working directory path + + + + + Working directory %1 for python job %2 is not readable. + + + + + Bad main script file + + + + + Main script file %1 for python job %2 is not readable. + + + + + Boost.Python error in job "%1". + + + + + Calamares::QmlViewStep + + + Loading ... + + + + + QML Step <i>%1</i>. + + + + + Loading failed. + + + + + Calamares::RequirementsChecker + + + Waiting for %n module(s). + + + + + + + + + (%n second(s)) + + + + + + + + + System-requirements checking is complete. + + + + + Calamares::ViewManager + + + Setup Failed + + + + + Installation Failed + + + + + Would you like to paste the install log to the web? + + + + + Error + + + + + + &Yes + + + + + + &No + + + + + &Close + + + + + Install Log Paste URL + + + + + The upload was unsuccessful. No web-paste was done. + + + + + Calamares Initialization Failed + + + + + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. + + + + + <br/>The following modules could not be loaded: + + + + + Continue with setup? + + + + + Continue with installation? + + + + + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Set up now + + + + + &Install now + + + + + Go &back + + + + + &Set up + + + + + &Install + + + + + Setup is complete. Close the setup program. + + + + + The installation is complete. Close the installer. + + + + + Cancel setup without changing the system. + + + + + Cancel installation without changing the system. + + + + + &Next + + + + + &Back + + + + + &Done + + + + + &Cancel + + + + + Cancel setup? + + + + + Cancel installation? + + + + + Do you really want to cancel the current setup process? +The setup program will quit and all changes will be lost. + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresUtils + + + Install log posted to: +%1 + + + + + CalamaresWindow + + + Show debug information + + + + + &Back + + + + + &Next + + + + + &Cancel + + + + + %1 Setup Program + + + + + %1 Installer + + + + + CheckerContainer + + + Gathering system information... + + + + + ChoicePage + + + Form + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. + + + + + Boot loader location: + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + No Swap + + + + + Reuse Swap + + + + + Swap (no Hibernate) + + + + + Swap (with Hibernate) + + + + + Swap to file + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + Config + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + Network Installation. (Disabled: Incorrect configuration) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + Network Installation. (Disabled: internal error) + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + Si&ze: + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + &Mount Point: + + + + + Flags: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MiB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + CreateVolumeGroupDialog + + + Create Volume Group + + + + + CreateVolumeGroupJob + + + Create new volume group named %1. + + + + + Create new volume group named <strong>%1</strong>. + + + + + Creating new volume group named %1. + + + + + The installer failed to create a volume group named '%1'. + + + + + DeactivateVolumeGroupJob + + + + Deactivate volume group named %1. + + + + + Deactivate volume group named <strong>%1</strong>. + + + + + The installer failed to deactivate a volume group named %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + + + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + DeviceModel + + + %1 - %2 (%3) + device[name] - size[number] (device-node[name]) + + + + + %1 - (%2) + device[name] - (device-node[name]) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + &Restart now + + + + + <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html> + + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> + + + + + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Setup Complete + + + + + Installation Complete + + + + + The setup of %1 is complete. + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MiB) on %4. + + + + + Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + GeneralRequirements + + + has at least %1 GiB available drive space + + + + + There is not enough drive space. At least %1 GiB is required. + + + + + has at least %1 GiB working memory + + + + + The system does not have enough working memory. At least %1 GiB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + is running the installer as an administrator (root) + + + + + The setup program is not running with administrator rights. + + + + + The installer is not running with administrator rights. + + + + + has a screen large enough to show the whole installer + + + + + The screen is too small to display the setup program. + + + + + The screen is too small to display the installer. + + + + + HostInfoJob + + + Collecting information about your machine. + + + + + IDJob + + + + + + OEM Batch Identifier + + + + + Could not create directories <code>%1</code>. + + + + + Could not open file <code>%1</code>. + + + + + Could not write to file <code>%1</code>. + + + + + InitcpioJob + + + Creating initramfs with mkinitcpio. + + + + + InitramfsJob + + + Creating initramfs. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardQmlViewStep + + + Keyboard + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + <h1>License Agreement</h1> + + + + + I accept the terms and conditions above. + + + + + Please review the End User License Agreements (EULAs). + + + + + This setup procedure will install proprietary software that is subject to licensing terms. + + + + + If you do not agree with the terms, the setup procedure cannot continue. + + + + + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + LicenseViewStep + + + License + + + + + LicenseWidget + + + URL: %1 + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + File: %1 + + + + + Hide license text + + + + + Show the license text + + + + + Open license agreement in browser. + + + + + LocalePage + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Set timezone to %1/%2.<br/> + + + + + LocaleQmlViewStep + + + Location + + + + + LocaleViewStep + + + Location + + + + + LuksBootKeyFileJob + + + Configuring LUKS key file. + + + + + + No partitions are defined. + + + + + + + Encrypted rootfs setup error + + + + + Root partition %1 is LUKS but no passphrase has been set. + + + + + Could not create LUKS key file for root partition %1. + + + + + Could not configure LUKS key file on partition %1. + + + + + MachineIdJob + + + Generate machine-id. + + + + + Configuration Error + + + + + No root mount point is set for MachineId. + + + + + NetInstallViewStep + + + + Package selection + + + + + Office software + + + + + Office package + + + + + Browser software + + + + + Browser package + + + + + Web browser + + + + + Kernel + + + + + Services + + + + + Login + + + + + Desktop + + + + + Applications + + + + + Communication + + + + + Development + + + + + Office + + + + + Multimedia + + + + + Internet + + + + + Theming + + + + + Gaming + + + + + Utilities + + + + + NotesQmlViewStep + + + Notes + + + + + OEMPage + + + Ba&tch: + + + + + <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> + + + + + <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> + + + + + OEMViewStep + + + OEM Configuration + + + + + Set the OEM Batch Identifier to <code>%1</code>. + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Password is empty + + + + + PackageChooserPage + + + Form + + + + + Product Name + + + + + TextLabel + + + + + Long Product Description + + + + + Package Selection + + + + + Please pick a product from the list. The selected product will be installed. + + + + + PackageChooserViewStep + + + Packages + + + + + PackageModel + + + Name + + + + + Description + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + Your Full Name + + + + + What name do you want to use to log in? + + + + + login + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Computer Name + + + + + Choose a password to keep your account safe. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + + Password + + + + + + Repeat Password + + + + + When this box is checked, password-strength checking is done and you will not be able to use a weak password. + + + + + Require strong passwords. + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + size[number] filesystem[name] + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + Cre&ate + + + + + &Edit + + + + + &Delete + + + + + New Volume Group + + + + + Resize Volume Group + + + + + Deactivate Volume Group + + + + + Remove Volume Group + + + + + I&nstall boot loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + EFI system partition flag not set + + + + + Option to use GPT on BIOS + + + + + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + has at least one disk device available. + + + + + There are no partitions to install on. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + %1 (%2) + + + + + Requirements checking for module <i>%1</i> is complete. + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Default Keyboard Model + + + + + + Default + + + + + + + + File not found + + + + + Path <pre>%1</pre> must be an absolute path. + + + + + Could not create new random file <pre>%1</pre>. + + + + + No product + + + + + No description provided. + + + + + (no mount point) + + + + + Unpartitioned space or unknown partition table + + + + + RemoveUserJob + + + Remove live user from target system + + + + + RemoveVolumeGroupJob + + + + Remove Volume Group named %1. + + + + + Remove Volume Group named <strong>%1</strong>. + + + + + The installer failed to remove a volume group named '%1'. + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + ResizeFSJob + + + Resize Filesystem Job + + + + + Invalid configuration + + + + + The file-system resize job has an invalid configuration and will not run. + + + + + KPMCore not Available + + + + + Calamares cannot start KPMCore for the file-system resize job. + + + + + + + + + Resize Failed + + + + + The filesystem %1 could not be found in this system, and cannot be resized. + + + + + The device %1 could not be found in this system, and cannot be resized. + + + + + + The filesystem %1 cannot be resized. + + + + + + The device %1 cannot be resized. + + + + + The filesystem %1 must be resized, but cannot. + + + + + The device %1 must be resized, but cannot + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>. + + + + + Resizing %2MiB partition %1 to %3MiB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ResizeVolumeGroupDialog + + + Resize Volume Group + + + + + ResizeVolumeGroupJob + + + + Resize volume group named %1 from %2 to %3. + + + + + Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong>. + + + + + The installer failed to resize a volume group named '%1'. + + + + + ResultsListDialog + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ResultsListWidget + + + This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled. + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MiB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MiB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MiB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the setup procedure. + + + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + 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. + + + + + 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><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</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. + + + + + 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. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> + + + + + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> + + + + + Your username is too long. + + + + + Your username must start with a lowercase letter or underscore. + + + + + Only lowercase letters, numbers, underscore and hyphen are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Only letters, numbers, underscore and hyphen are allowed. + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + VariantModel + + + Key + + + + + Value + + + + + VolumeGroupBaseDialog + + + Create Volume Group + + + + + List of Physical Volumes + + + + + Volume Group Name: + + + + + Volume Group Type: + + + + + Physical Extent Size: + + + + + MiB + + + + + Total Size: + + + + + Used Size: + + + + + Total Sectors: + + + + + Quantity of LVs: + + + + + WelcomePage + + + Form + + + + + + Select application and system language + + + + + &About + + + + + Open donations website + + + + + &Donate + + + + + Open help and support website + + + + + &Support + + + + + Open issues and bug-tracking website + + + + + &Known issues + + + + + Open release notes website + + + + + &Release notes + + + + + <h1>Welcome to the Calamares setup program for %1.</h1> + + + + + <h1>Welcome to %1 setup.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + %1 support + + + + + About %1 setup + + + + + About %1 installer + + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + WelcomeQmlViewStep + + + Welcome + + + + + WelcomeViewStep + + + Welcome + + + + + about + + + <h1>%1</h1><br/> + <strong>%2<br/> + for %3</strong><br/><br/> + Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/> + Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Thanks to <a href='https://calamares.io/team/'>the Calamares team</a> + and the <a href='https://www.transifex.com/calamares/calamares/'>Calamares + translators team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + development is sponsored by <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. + + + + + Back + + + + + keyboardq + + + Keyboard Model + + + + + Pick your preferred keyboard model or use the default one based on the detected hardware + + + + + Refresh + + + + + + Layouts + + + + + + Keyboard Layout + + + + + Models + + + + + Variants + + + + + Test your keyboard + + + + + notesqml + + + <h3>%1</h3> + <p>These are example release notes.</p> + + + + + release_notes + + + <h3>%1</h3> + <p>This an example QML file, showing options in RichText with Flickable content.</p> + + <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> + + <p><b>This is bold text</b></p> + <p><i>This is italic text</i></p> + <p><u>This is underlined text</u></p> + <p><center>This text will be center-aligned.</center></p> + <p><s>This is strikethrough</s></p> + + <p>Code example: + <code>ls -l /home</code></p> + + <p><b>Lists:</b></p> + <ul> + <li>Intel CPU systems</li> + <li>AMD CPU systems</li> + </ul> + + <p>The vertical scrollbar is adjustable, current width set to 10.</p> + + + + + Back + + + + + welcomeq + + + <h3>Welcome to the %1 <quote>%2</quote> installer</h3> + <p>This program will ask you some questions and set up %1 on your computer.</p> + + + + + About + + + + + Support + + + + + Known issues + + + + + Release notes + + + + + Donate + + + + diff --git a/lang/calamares_sq.ts b/lang/calamares_sq.ts index 869a1f18c..cbbc2e9d9 100644 --- a/lang/calamares_sq.ts +++ b/lang/calamares_sq.ts @@ -124,7 +124,7 @@ Install - Instaloje + Instalim @@ -520,7 +520,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. After: - Pas: + Më Pas: @@ -937,7 +937,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Krijoni tabelë pjesësh të re <strong>%1</strong> te <strong>%2</strong> (%3). + Krijo tabelë pjesësh të re <strong>%1</strong> te <strong>%2</strong> (%3). @@ -1307,7 +1307,7 @@ Instaluesi do të mbyllet dhe krejt ndryshimet do të hidhen tej. Finish - Përfundoje + Përfundim @@ -3080,7 +3080,7 @@ Përfundim: Partitioning - Pjesëzim + Pjesëtim diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index c9824f26e..82238ca09 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -106,7 +106,7 @@ Widget Tree - + Widgetträd @@ -246,7 +246,7 @@ System-requirements checking is complete. - + Kontroll av systemkrav är färdig @@ -264,7 +264,7 @@ Would you like to paste the install log to the web? - + Vill du ladda upp installationsloggen på webben? @@ -291,7 +291,7 @@ Install Log Paste URL - + URL till installationslogg @@ -306,7 +306,7 @@ %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. - + %1 kan inte installeras. Calamares kunde inte ladda alla konfigurerade moduler. Detta är ett problem med hur Calamares används av distributionen. @@ -326,7 +326,7 @@ The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> - + %1-installeraren är på väg att göra ändringar på disk för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar.</strong> @@ -412,7 +412,7 @@ Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Vill du verkligen avbryta den nuvarande uppstartsprocessen? Uppstartsprogrammet kommer avsluta och alla ändringar kommer förloras. @@ -524,7 +524,7 @@ Alla ändringar kommer att gå förlorade. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one. - + <strong>Manuell partitionering</strong><br/>Du kan skapa eller ändra storlek på partitioner själv. UEFI-installationer kräver en GPT-partitionstabell och en <strong>fat32-partition för /boot på 512MB</strong>, använd en existerande utan formatering eller skapa en. @@ -688,7 +688,7 @@ Alla ändringar kommer att gå förlorade. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Kommandot körs på värden och behöver känna till sökvägen till root, men rootMountPoint är inte definierat. @@ -716,7 +716,7 @@ Alla ändringar kommer att gå förlorade. The numbers and dates locale will be set to %1. - + Systemspråket för siffror och datum kommer sättas till %1. @@ -731,7 +731,7 @@ Alla ändringar kommer att gå förlorade. Network Installation. (Disabled: Received invalid groups data) - + Nätverksinstallation. (Inaktiverad: Fick felaktig gruppdata) @@ -1070,12 +1070,12 @@ Alla ändringar kommer att gå förlorade. 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. - + Detta är en <strong>loop</strong>enhet.<br><br>Det är en pseudo-enhet som inte har någon partitionstabell, och som gör en fil tillgänglig som en blockenhet. Denna typ av upplägg innehåller vanligtvis ett enda filsystem. 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. - + Installationsprogrammet <strong>kan inte hitta någon partitionstabell</strong> på den valda lagringsenheten.<br><br>Antingen har enheten ingen partitionstabell, eller så är partitionstabellen trasig eller av okänd typ.<br>Installationsprogrammet kan skapa en ny partitionstabell åt dig, antingen automatiskt, eller genom sidan för manuell partitionering. @@ -1085,7 +1085,7 @@ Alla ändringar kommer att gå förlorade. <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>Denna partitionstabell är endast lämplig på äldre system som startar från en <strong>BIOS</strong>-startmiljö. GPT rekommenderas i de flesta andra fall.<br><br><strong>Varning:</strong> MBR-partitionstabellen är en föråldrad standard från MS-DOS-tiden.<br>Endast 4 <em>primära</em> partitioner kan skapas, och av dessa 4 kan en vara en <em>utökad</em> partition, som i sin tur kan innehålla många <em>logiska</em> partitioner. @@ -1278,7 +1278,7 @@ Alla ändringar kommer att gå förlorade. <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>När denna ruta är ikryssad kommer systemet starta om omedelbart när du klickar på <span style="font-style:italic;">Klar</span> eller stänger installationsprogrammet.</p></body></html> @@ -1288,7 +1288,7 @@ Alla ändringar kommer att gå förlorade. <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>När denna ruta är ikryssad kommer systemet starta om omedelbart när du klickar på <span style="font-style:italic;">Klar</span> eller stänger installationsprogrammet.</p></body></html> @@ -1573,27 +1573,27 @@ Alla ändringar kommer att gå förlorade. Please review the End User License Agreements (EULAs). - + Vänligen läs igenom licensavtalen för slutanvändare (EULA). This setup procedure will install proprietary software that is subject to licensing terms. - + Denna installationsprocess kommer installera proprietär mjukvara för vilken särskilda licensvillkor gäller. If you do not agree with the terms, the setup procedure cannot continue. - + Om du inte accepterar villkoren kan inte installationsproceduren fortsätta. This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Denna installationsprocess kan installera proprietär mjukvara för vilken särskilda licensvillkor gäller, för att kunna erbjuda ytterligare funktionalitet och förbättra användarupplevelsen. If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Om du inte godkänner villkoren kommer inte proprietär mjukvara att installeras, och alternativ med öppen källkod kommer användas istället. @@ -1690,7 +1690,7 @@ Alla ändringar kommer att gå förlorade. The numbers and dates locale will be set to %1. - + Systemspråket för siffror och datum kommer sättas till %1. @@ -1732,7 +1732,7 @@ Alla ändringar kommer att gå förlorade. Encrypted rootfs setup error - + Fel vid inställning av krypterat rootfs @@ -1946,7 +1946,7 @@ Alla ändringar kommer att gå förlorade. The password differs with case changes only - + Endast stora och små bokstäver skiljer lösenorden åt @@ -1961,7 +1961,7 @@ Alla ändringar kommer att gå förlorade. The password contains words from the real name of the user in some form - + Lösenordet innehåller ord från användarens namn i någon form @@ -2001,7 +2001,7 @@ Alla ändringar kommer att gå förlorade. The password contains less than %1 non-alphanumeric characters - + Lösenordet innehåller färre än %1 icke alfanumeriska tecken @@ -2021,22 +2021,22 @@ Alla ändringar kommer att gå förlorade. The password is just rotated old one - + Lösenordet är ett roterat gammalt lösenord The password contains less than %1 character classes - + Lösenordet innehåller färre än %1 teckenklasser The password does not contain enough character classes - + Lösenordet innehåller inte tillräckligt många teckenklasser The password contains more than %1 same characters consecutively - + Lösenordet innehåller fler än %1 likadana tecken i rad @@ -2046,22 +2046,22 @@ Alla ändringar kommer att gå förlorade. The password contains more than %1 characters of the same class consecutively - + Lösenordet innehåller fler än %1 tecken från samma klass i rad The password contains too many characters of the same class consecutively - + Lösenordet innehåller för många tecken från samma klass i rad The password contains monotonic sequence longer than %1 characters - + Lösenordet innehåller en monoton sekvens längre än %1 tecken The password contains too long of a monotonic character sequence - + Lösenordet innehåller en för lång monoton teckensekvens @@ -2071,22 +2071,22 @@ Alla ändringar kommer att gå förlorade. Cannot obtain random numbers from the RNG device - + Kan inte hämta slumptal från slumptalsgeneratorn Password generation failed - required entropy too low for settings - + Lösenordsgenerering misslyckades - för lite entropi tillgänglig för givna inställningar The password fails the dictionary check - %1 - + Lösenordet klarar inte ordlistekontrollen - %1 The password fails the dictionary check - + Lösenordet klarar inte ordlistekontrollen @@ -2184,7 +2184,7 @@ Alla ändringar kommer att gå förlorade. Please pick a product from the list. The selected product will be installed. - + Välj en produkt från listan. Den valda produkten kommer att installeras. @@ -2294,7 +2294,7 @@ Alla ändringar kommer att gå förlorade. When this box is checked, password-strength checking is done and you will not be able to use a weak password. - + När den här rutan är förkryssad kommer kontroll av lösenordsstyrka att genomföras, och du kommer inte kunna använda ett svagt lösenord. @@ -2477,7 +2477,7 @@ Alla ändringar kommer att gå förlorade. 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. - + Partitionstabellen på %1 har redan %2 primära partitioner och inga fler kan läggas till. Var god ta bort en primär partition och lägg till en utökad partition istället. @@ -2555,12 +2555,12 @@ Alla ändringar kommer att gå förlorade. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + En EFI-systempartition krävs för att starta %1. <br/><br/> För att konfigurera en EFI-systempartition, gå tillbaka och välj eller skapa ett FAT32-filsystem med <strong>%3</strong>-flaggan satt och monteringspunkt <strong>%2</strong>. <br/><br/>Du kan fortsätta utan att ställa in en EFI-systempartition, men ditt system kanske misslyckas med att starta. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + En EFI-systempartition krävs för att starta %1. <br/><br/>En partition är konfigurerad med monteringspunkt <strong>%2</strong>, men dess <strong>%3</strong>-flagga är inte satt.<br/>För att sätta flaggan, gå tillbaka och redigera partitionen.<br/><br/>Du kan fortsätta utan att sätta flaggan, men ditt system kanske misslyckas med att starta @@ -2575,7 +2575,7 @@ Alla ändringar kommer att gå förlorade. A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + En GPT-partitionstabell är det bästa alternativet för alla system. Detta installationsprogram stödjer det för system med BIOS också.<br/><br/>För att konfigurera en GPT-partitionstabell på BIOS (om det inte redan är gjort), gå tillbaka och sätt partitionstabell till GPT, skapa sedan en oformaterad partition på 8MB med <strong>bios_grub</strong>-flaggan satt.<br/><br/>En oformaterad partition på 8MB är nödvändig för att starta %1 på ett BIOS-system med GPT. @@ -2585,12 +2585,12 @@ Alla ändringar kommer att gå förlorade. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + En separat uppstartspartition skapades tillsammans med den krypterade rootpartitionen, men uppstartspartitionen är inte krypterad.<br/><br/>Det finns säkerhetsproblem med den här inställningen, eftersom viktiga systemfiler sparas på en okrypterad partition.<br/>Du kan fortsätta om du vill, men upplåsning av filsystemet kommer hända senare under uppstart av systemet.<br/>För att kryptera uppstartspartitionen, gå tillbaka och återskapa den, och välj <strong>Kryptera</strong> i fönstret när du skapar partitionen. has at least one disk device available. - + har åtminstone en diskenhet tillgänglig. @@ -2603,13 +2603,13 @@ Alla ändringar kommer att gå förlorade. Plasma Look-and-Feel Job - + Jobb för Plasmas utseende och känsla Could not select KDE Plasma Look-and-Feel package - + Kunde inte välja KDE Plasma-paket för utseende och känsla @@ -2622,12 +2622,12 @@ Alla ändringar kommer att gå förlorade. 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. - + Var god välj ett utseende och känsla för KDE Plasma skrivbordet. Du kan hoppa över detta steget och ställa in utseende och känsla när systemet är installerat. Klicka på ett val för utseende och känsla för att få en förhandsgranskning av det valet. 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. - + Var god välj ett utseende och känsla för KDE Plasma skrivbordet. Du kan hoppa över detta steget och ställa in utseende och känsla när systemet är installerat. Klicka på ett val för utseende och känsla för att få en förhandsgranskning av det valet. @@ -2635,7 +2635,7 @@ Alla ändringar kommer att gå förlorade. Look-and-Feel - + Utseende och känsla @@ -2735,7 +2735,7 @@ Utdata: Requirements checking for module <i>%1</i> is complete. - + Kontroll av krav för modul <i>%1</i> är färdig. @@ -2779,7 +2779,7 @@ Utdata: Path <pre>%1</pre> must be an absolute path. - + Sökväg <pre>%1</pre> måste vara en absolut sökväg. @@ -2889,7 +2889,7 @@ Utdata: <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/>Kan inte hitta en EFI-systempartition någonstans på detta system. Var god gå tillbaka och använd manuell partitionering för att installera %1. @@ -2914,7 +2914,7 @@ Utdata: Resize Filesystem Job - + Jobb för storleksförändring av filsystem @@ -2924,7 +2924,7 @@ Utdata: The file-system resize job has an invalid configuration and will not run. - + Jobbet för storleksförändring av filsystem har en felaktig konfiguration och kommer inte köras. @@ -2934,7 +2934,7 @@ Utdata: Calamares cannot start KPMCore for the file-system resize job. - + Calamares kan inte starta KPMCore för jobbet att ändra filsystemsstorlek. @@ -2948,34 +2948,34 @@ Utdata: The filesystem %1 could not be found in this system, and cannot be resized. - + Kunde inte hitta filsystemet %1 på systemet, och kan inte ändra storlek på det. The device %1 could not be found in this system, and cannot be resized. - + Kunde inte hitta enheten %1 på systemet, och kan inte ändra storlek på den. The filesystem %1 cannot be resized. - + Det går inte att ändra storlek på filsystemet %1. The device %1 cannot be resized. - + Det går inte att ändra storlek på enheten %1. The filesystem %1 must be resized, but cannot. - + Filsystemet %1 måste ändra storlek, men storleken kan inte ändras. The device %1 must be resized, but cannot - + Enheten %1 måste ändra storlek, men storleken kan inte ändras @@ -3015,7 +3015,7 @@ Utdata: Resize volume group named %1 from %2 to %3. - + Ändra storlek på volymgruppen som heter %1 från %2 till %3. @@ -3311,7 +3311,7 @@ Utdata: Shell Processes Job - + Jobb för skalprocesser @@ -3328,7 +3328,7 @@ Utdata: This is an overview of what will happen once you start the setup procedure. - + Detta är en översikt över vad som kommer hända när du startar installationsprocessen. @@ -3364,7 +3364,7 @@ Utdata: HTTP request timed out. - + HTTP-begäran tog för lång tid. @@ -3411,7 +3411,7 @@ Utdata: <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>Genom att välja detta, kommer du inte skicka <span style=" font-weight:600;">någon information alls</span> om din installation.</p></body></html> @@ -3426,7 +3426,7 @@ Utdata: 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. - + Genom att välja detta, kommer du skicka information om din installation och hårdvara. Denna information kommer <b>enbart skickas en gång</b> efter att installationen slutförts. @@ -3541,7 +3541,7 @@ Utdata: Physical Extent Size: - + Storlek på fysisk volymdel (PE): @@ -3566,7 +3566,7 @@ Utdata: Quantity of LVs: - + Antal LV: @@ -3665,7 +3665,7 @@ Utdata: <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tack till <a href="https://calamares.io/team/">Calamares-teamet</a> och <a href="https://www.transifex.com/calamares/calamares/">Calamares översättar-team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> utveckling sponsras av <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. @@ -3700,7 +3700,18 @@ Utdata: 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-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/> + Tack till <a href='https://calamares.io/team/'>Calamares-teamet</a> + och <a href='https://www.transifex.com/calamares/calamares/'>Calamares + översättar-team</a>.<br/><br/> + <a href='https://calamares.io/'>Calamares</a> + utveckling sponsras av <br/> + <a href='http://www.blue-systems.com/'>Blue Systems</a> - + Liberating Software. @@ -3718,7 +3729,7 @@ Utdata: Pick your preferred keyboard model or use the default one based on the detected hardware - + Välj din föredragna tangentbordsmodell, eller använd ett förval baserat på vilken hårdvara vi känt av @@ -3788,7 +3799,27 @@ Utdata: </ul> <p>The vertical scrollbar is adjustable, current width set to 10.</p> - + <h3>%1</h3> + <p>Detta är en exempelfil för QML, som visar inställningar för RichText och innehåll som är Flickable.</p> + + <p>QML med RichText kan använda HTML-taggar. Innehåll som är Flickable är användbart på pekskärmar.</p> + + <p><b>Detta är fet text</b></p> + <p><i>Detta är kursiv text</i></p> + <p>Detta är understruken text</p> + <p><center>Denna text är centrerad.</center></p> + <p><s>Detta är överstruket</s></p> + + <p>Kodexample: + <code>ls -l /home</code></p> + + <p><b>Listor:</b></p> + <ul> + <li>System med Intel-processor</li> + <li>System med AMD-processor</li> + </ul> + + <p>Den vertikala rullningslisten är justerbar, nuvarande bredd är satt till 10.</p> @@ -3802,7 +3833,8 @@ Utdata: <h3>Welcome to the %1 <quote>%2</quote> installer</h3> <p>This program will ask you some questions and set up %1 on your computer.</p> - + <h3>Välkommen till %2 installationsprogram för <quote>%1</quote></h3> + <p>Detta program kommer ställa några frågor och installera %1 på din dator.</p> diff --git a/lang/python/bn/LC_MESSAGES/python.mo b/lang/python/bn/LC_MESSAGES/python.mo new file mode 100644 index 000000000..b067dcf71 Binary files /dev/null and b/lang/python/bn/LC_MESSAGES/python.mo differ diff --git a/lang/python/bn/LC_MESSAGES/python.po b/lang/python/bn/LC_MESSAGES/python.po new file mode 100644 index 000000000..c0feed0ec --- /dev/null +++ b/lang/python/bn/LC_MESSAGES/python.po @@ -0,0 +1,336 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-30 23:13+0200\n" +"PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Language-Team: Bengali (https://www.transifex.com/calamares/teams/20061/bn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/packages/main.py:59 src/modules/packages/main.py:68 +#: src/modules/packages/main.py:78 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:71 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" + +#: src/modules/networkcfg/main.py:48 src/modules/initcpiocfg/main.py:205 +#: src/modules/initcpiocfg/main.py:209 src/modules/openrcdmcryptcfg/main.py:78 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/localecfg/main.py:144 +#: src/modules/mount/main.py:145 src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/fstab/main.py:332 +#: src/modules/fstab/main.py:338 src/modules/initramfscfg/main.py:94 +#: src/modules/initramfscfg/main.py:98 src/modules/rawfs/main.py:171 +msgid "Configuration Error" +msgstr "" + +#: src/modules/networkcfg/main.py:49 src/modules/initcpiocfg/main.py:210 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/localecfg/main.py:145 +#: src/modules/luksopenswaphookcfg/main.py:100 src/modules/fstab/main.py:339 +#: src/modules/initramfscfg/main.py:99 +msgid "No root mount point is given for
{!s}
to use." +msgstr "" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:206 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/mount/main.py:146 src/modules/luksopenswaphookcfg/main.py:96 +#: src/modules/fstab/main.py:333 src/modules/initramfscfg/main.py:95 +#: src/modules/rawfs/main.py:172 +msgid "No partitions are defined for
{!s}
to use." +msgstr "" + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:302 +msgid "Unpacking image {}/{}, file {}/{}" +msgstr "" + +#: src/modules/unpackfs/main.py:317 +msgid "Starting to unpack {}" +msgstr "" + +#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:432 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:399 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:400 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:405 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:406 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:422 src/modules/unpackfs/main.py:426 +#: src/modules/unpackfs/main.py:446 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:423 +msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" + +#: src/modules/unpackfs/main.py:427 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:433 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:447 +msgid "The destination \"{}\" in the target system is not a directory" +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/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 +#: src/modules/dummypython/main.py:103 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/bootloader/main.py:51 +msgid "Install bootloader." +msgstr "" + +#: src/modules/localecfg/main.py:39 +msgid "Configuring locales." +msgstr "" + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "" + +#: src/modules/plymouthcfg/main.py:36 +msgid "Configure Plymouth theme" +msgstr "" + +#: src/modules/luksopenswaphookcfg/main.py:35 +msgid "Configuring encrypted swap." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +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/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/grubcfg/main.py:37 +msgid "Configure GRUB." +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/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "" + +#: src/modules/hwclock/main.py:35 +msgid "Setting hardware clock." +msgstr "" + +#: src/modules/rawfs/main.py:35 +msgid "Installing data." +msgstr "" diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po index 3fe19a8ec..eece1030a 100644 --- a/lang/python/hu/LC_MESSAGES/python.po +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -5,7 +5,7 @@ # # Translators: # Adriaan de Groot , 2018 -# Balázs Meskó , 2018 +# Balázs Meskó , 2018 # miku84, 2019 # Lajos Pasztor , 2019 # diff --git a/lang/python/lv/LC_MESSAGES/python.mo b/lang/python/lv/LC_MESSAGES/python.mo new file mode 100644 index 000000000..f6651cf37 Binary files /dev/null and b/lang/python/lv/LC_MESSAGES/python.mo differ diff --git a/lang/python/lv/LC_MESSAGES/python.po b/lang/python/lv/LC_MESSAGES/python.po new file mode 100644 index 000000000..50d7ca7e4 --- /dev/null +++ b/lang/python/lv/LC_MESSAGES/python.po @@ -0,0 +1,338 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-30 23:13+0200\n" +"PO-Revision-Date: 2017-08-09 10:34+0000\n" +"Language-Team: Latvian (https://www.transifex.com/calamares/teams/20061/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#: src/modules/packages/main.py:59 src/modules/packages/main.py:68 +#: src/modules/packages/main.py:78 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:71 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:74 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/networkcfg/main.py:37 +msgid "Saving network configuration." +msgstr "" + +#: src/modules/networkcfg/main.py:48 src/modules/initcpiocfg/main.py:205 +#: src/modules/initcpiocfg/main.py:209 src/modules/openrcdmcryptcfg/main.py:78 +#: src/modules/openrcdmcryptcfg/main.py:82 src/modules/localecfg/main.py:144 +#: src/modules/mount/main.py:145 src/modules/luksopenswaphookcfg/main.py:95 +#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/fstab/main.py:332 +#: src/modules/fstab/main.py:338 src/modules/initramfscfg/main.py:94 +#: src/modules/initramfscfg/main.py:98 src/modules/rawfs/main.py:171 +msgid "Configuration Error" +msgstr "" + +#: src/modules/networkcfg/main.py:49 src/modules/initcpiocfg/main.py:210 +#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/localecfg/main.py:145 +#: src/modules/luksopenswaphookcfg/main.py:100 src/modules/fstab/main.py:339 +#: src/modules/initramfscfg/main.py:99 +msgid "No root mount point is given for
{!s}
to use." +msgstr "" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/initcpiocfg/main.py:37 +msgid "Configuring mkinitcpio." +msgstr "" + +#: src/modules/initcpiocfg/main.py:206 src/modules/openrcdmcryptcfg/main.py:79 +#: src/modules/mount/main.py:146 src/modules/luksopenswaphookcfg/main.py:96 +#: src/modules/fstab/main.py:333 src/modules/initramfscfg/main.py:95 +#: src/modules/rawfs/main.py:172 +msgid "No partitions are defined for
{!s}
to use." +msgstr "" + +#: src/modules/openrcdmcryptcfg/main.py:34 +msgid "Configuring OpenRC dmcrypt service." +msgstr "" + +#: src/modules/unpackfs/main.py:44 +msgid "Filling up filesystems." +msgstr "" + +#: src/modules/unpackfs/main.py:257 +msgid "rsync failed with error code {}." +msgstr "" + +#: src/modules/unpackfs/main.py:302 +msgid "Unpacking image {}/{}, file {}/{}" +msgstr "" + +#: src/modules/unpackfs/main.py:317 +msgid "Starting to unpack {}" +msgstr "" + +#: src/modules/unpackfs/main.py:326 src/modules/unpackfs/main.py:432 +msgid "Failed to unpack image \"{}\"" +msgstr "" + +#: src/modules/unpackfs/main.py:399 +msgid "No mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:400 +msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:405 +msgid "Bad mount point for root partition" +msgstr "" + +#: src/modules/unpackfs/main.py:406 +msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" +msgstr "" + +#: src/modules/unpackfs/main.py:422 src/modules/unpackfs/main.py:426 +#: src/modules/unpackfs/main.py:446 +msgid "Bad unsquash configuration" +msgstr "" + +#: src/modules/unpackfs/main.py:423 +msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" +msgstr "" + +#: src/modules/unpackfs/main.py:427 +msgid "The source filesystem \"{}\" does not exist" +msgstr "" + +#: src/modules/unpackfs/main.py:433 +msgid "" +"Failed to find unsquashfs, make sure you have the squashfs-tools package " +"installed" +msgstr "" + +#: src/modules/unpackfs/main.py:447 +msgid "The destination \"{}\" in the target system is not a directory" +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/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:46 src/modules/dummypython/main.py:102 +#: src/modules/dummypython/main.py:103 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/bootloader/main.py:51 +msgid "Install bootloader." +msgstr "" + +#: src/modules/localecfg/main.py:39 +msgid "Configuring locales." +msgstr "" + +#: src/modules/mount/main.py:38 +msgid "Mounting partitions." +msgstr "" + +#: src/modules/plymouthcfg/main.py:36 +msgid "Configure Plymouth theme" +msgstr "" + +#: src/modules/luksopenswaphookcfg/main.py:35 +msgid "Configuring encrypted swap." +msgstr "" + +#: src/modules/fstab/main.py:38 +msgid "Writing fstab." +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/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/grubcfg/main.py:37 +msgid "Configure GRUB." +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/initramfscfg/main.py:41 +msgid "Configuring initramfs." +msgstr "" + +#: src/modules/hwclock/main.py:35 +msgid "Setting hardware clock." +msgstr "" + +#: src/modules/rawfs/main.py:35 +msgid "Installing data." +msgstr "" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index e903d55a9..20667a99c 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 45d2d85ab..814d4e9bb 100644 --- a/lang/python/sv/LC_MESSAGES/python.po +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -6,6 +6,7 @@ # Translators: # Jan-Olof Svensson, 2019 # Luna Jernberg , 2020 +# Tobias Olausson , 2020 # #, fuzzy msgid "" @@ -14,7 +15,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-30 23:13+0200\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Luna Jernberg , 2020\n" +"Last-Translator: Tobias Olausson , 2020\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" @@ -113,7 +114,7 @@ msgstr "Ingen monteringspunkt för root partition" #: src/modules/unpackfs/main.py:400 msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" -msgstr "" +msgstr "globalstorage innehåller ingen \"rootMountPoint\"-nyckel, så gör inget" #: src/modules/unpackfs/main.py:405 msgid "Bad mount point for root partition" @@ -121,7 +122,7 @@ msgstr "Dålig monteringspunkt för root partition" #: src/modules/unpackfs/main.py:406 msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" -msgstr "" +msgstr "rootMountPoint är \"{}\", vilket inte finns, så gör inget" #: src/modules/unpackfs/main.py:422 src/modules/unpackfs/main.py:426 #: src/modules/unpackfs/main.py:446 @@ -141,6 +142,8 @@ msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed" msgstr "" +"Kunde inte hitta unsquashfs, se till att du har paketet squashfs-tools " +"installerat" #: src/modules/unpackfs/main.py:447 msgid "The destination \"{}\" in the target system is not a directory" @@ -159,6 +162,8 @@ msgstr "Kunde inte modifiera tjänst" msgid "" "systemctl {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Anrop till systemctl {arg!s}i chroot returnerade felkod " +"{num!s}." #: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:76 @@ -175,7 +180,7 @@ msgstr "Kunde inte inaktivera systemd målsystem {name!s}." #: src/modules/services-systemd/main.py:80 msgid "Cannot mask systemd unit {name!s}." -msgstr "" +msgstr "Kan inte maskera systemd unit {name!s}" #: src/modules/services-systemd/main.py:82 msgid "" @@ -224,36 +229,42 @@ msgstr "Konfigurera OpenRC tjänster" #: src/modules/services-openrc/main.py:66 msgid "Cannot add service {name!s} to run-level {level!s}." -msgstr "" +msgstr "Kan inte lägga till tjänsten {name!s} till körnivå {level!s}." #: src/modules/services-openrc/main.py:68 msgid "Cannot remove service {name!s} from run-level {level!s}." -msgstr "" +msgstr "Kan inte ta bort tjänsten {name!s} från körnivå {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 "" +"Okänt tjänst-anrop {arg!s}för tjänsten {name!s} i körnivå " +"{level!s}." #: src/modules/services-openrc/main.py:103 msgid "" "rc-update {arg!s} call in chroot returned error code {num!s}." msgstr "" +"Anrop till rc-update {arg!s} i chroot returnerade felkod " +"{num!s}." #: src/modules/services-openrc/main.py:110 msgid "Target runlevel does not exist" -msgstr "" +msgstr "Begärd körnivå existerar inte" #: src/modules/services-openrc/main.py:111 msgid "" "The path for runlevel {level!s} is {path!s}, which does not " "exist." msgstr "" +"Sökvägen till körnivå {level!s} är {path!s}, som inte " +"existerar." #: src/modules/services-openrc/main.py:119 msgid "Target service does not exist" -msgstr "" +msgstr "Begärd tjänst existerar inte" #: src/modules/services-openrc/main.py:120 msgid "" @@ -308,7 +319,7 @@ msgstr "Kunde inte konfigurera LightDM" #: src/modules/displaymanager/main.py:737 msgid "No LightDM greeter installed." -msgstr "" +msgstr "Ingen LightDM greeter installerad." #: src/modules/displaymanager/main.py:768 msgid "Cannot write SLIM configuration file" @@ -332,7 +343,7 @@ msgstr "" #: src/modules/displaymanager/main.py:978 msgid "Display manager configuration was incomplete" -msgstr "" +msgstr "Konfiguration för displayhanteraren var inkomplett" #: src/modules/initramfscfg/main.py:41 msgid "Configuring initramfs." diff --git a/lang/txload.cpp b/lang/txload.cpp index 36e0f71a2..68a157b81 100644 --- a/lang/txload.cpp +++ b/lang/txload.cpp @@ -1,6 +1,4 @@ /* === This file is part of Calamares - === - * - * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,23 +12,33 @@ * * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . + * + * SPDX-FileCopyrightText: 2018 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * License-Filename: LICENSE */ /* * Tool to find differences between translations (can be used to help * merging them into one). See usage string, below, for details. + * + * The tool can be used when there are multiple translation files + * for a single language (e.g. Spanish) which need to be reconciled. + * Then running `txload file0.ts file1.ts ...` will produce a + * human-readable overview of what is translated and where the + * differences in translation are. */ #include #include #include -#include +// #include #include -static const char usage[] = "Usage: txload [ ...]\n" +static const char usage[] = "Usage: txload [ ...]\n" "\n" - "Reads a .ts source file and zero or more .ts \n" + "Reads a .ts source file and zero or more .ts \n" "files, and does a comparison between the translations. Source (English)\n" "strings that are untranslated are flagged in each of the translation\n" "files, while differences in the translations are themselves also shown.\n" @@ -95,34 +103,34 @@ QDomElement find_message(QDomElement& context, const QString& source) return QDomElement(); } -bool merge_into(QDomElement& master, QDomElement& sub) +bool merge_into(QDomElement& origin, QDomElement& alternate) { - QDomNode n = sub.firstChild(); + QDomNode n = alternate.firstChild(); while (!n.isNull()) { if (n.isElement()) { - QDomElement e = n.toElement(); - if ( e.tagName() == "message" ) + QDomElement alternateMessage = n.toElement(); + if ( alternateMessage.tagName() == "message" ) { - QString source = e.firstChildElement( "source" ).text(); - QString translation = e.firstChildElement( "translation" ).text(); - QDomElement masterTranslation = find_message( master, source ); - if ( masterTranslation.isNull() ) + QString alternateSourceText = alternateMessage.firstChildElement( "source" ).text(); + QString alternateTranslationText = alternateMessage.firstChildElement( "translation" ).text(); + QDomElement originMessage = find_message( origin, alternateSourceText ); + if ( originMessage.isNull() ) { - qDebug() << "No master translation for" << source; + qDebug() << "No origin translation for" << alternateSourceText; return false; } - QString msource = masterTranslation.firstChildElement( "source" ).text(); - QString mtranslation = masterTranslation.firstChildElement( "translation" ).text(); + QString originSourceText = originMessage.firstChildElement( "source" ).text(); + QString originTranslationText = originMessage.firstChildElement( "translation" ).text(); - if ( source != msource ) + if ( alternateSourceText != originSourceText ) { - qDebug() << "Mismatch for messages\n" << source << '\n' << msource; + qDebug() << "Mismatch for messages\n" << alternateSourceText << '\n' << originSourceText; return false; } - if ( !translation.isEmpty() && ( translation != mtranslation ) ) + if ( !alternateTranslationText.isEmpty() && ( alternateTranslationText != originTranslationText ) ) { - qDebug() << "\n\n\nSource:" << source << "\nTL1:" << mtranslation << "\nTL2:" << translation; + qDebug() << "\n\n\nSource:" << alternateSourceText << "\nTL1:" << originTranslationText << "\nTL2:" << alternateTranslationText; } } } @@ -134,32 +142,32 @@ bool merge_into(QDomElement& master, QDomElement& sub) -bool merge_into(QDomDocument& master, QDomElement& context) +bool merge_into(QDomDocument& originDocument, QDomElement& context) { QDomElement name = context.firstChildElement( "name" ); if ( name.isNull() ) return false; QString contextname = name.text(); - QDomElement masterContext = find_context( master, contextname ); - if ( masterContext.isNull() ) + QDomElement originContext = find_context( originDocument, contextname ); + if ( originContext.isNull() ) { - qDebug() << "Master document has no context" << contextname; + qDebug() << "Origin document has no context" << contextname; return false; } - return merge_into( masterContext, context ); + return merge_into( originContext, context ); } -bool merge_into(QDomDocument& master, QDomDocument& sub) +bool merge_into(QDomDocument& originDocument, QDomDocument& alternateDocument) { - QDomElement top = sub.documentElement(); + QDomElement top = alternateDocument.documentElement(); QDomNode n = top.firstChild(); while (!n.isNull()) { if (n.isElement()) { QDomElement e = n.toElement(); if ( e.tagName() == "context" ) - if ( !merge_into( master, e ) ) + if ( !merge_into( originDocument, e ) ) return false; } n = n.nextSibling(); @@ -178,16 +186,16 @@ int main(int argc, char** argv) return 1; } - QDomDocument doc("master"); - if ( !load_file(argv[1], doc) ) + QDomDocument originDocument("origin"); + if ( !load_file(argv[1], originDocument) ) return 1; for (int i = 2; i < argc; ++i) { - QDomDocument subdoc("sub"); - if ( !load_file(argv[i], subdoc) ) + QDomDocument alternateDocument("alternate"); + if ( !load_file(argv[i], alternateDocument) ) return 1; - if ( !merge_into( doc, subdoc ) ) + if ( !merge_into( originDocument, alternateDocument ) ) return 1; } @@ -200,7 +208,7 @@ int main(int argc, char** argv) return 1; } - outfile.write( doc.toString(4).toUtf8() ); + outfile.write( originDocument.toString(4).toUtf8() ); outfile.close(); return 0; diff --git a/settings.conf b/settings.conf index 982f4ebbe..8bff02373 100644 --- a/settings.conf +++ b/settings.conf @@ -166,7 +166,7 @@ dont-chroot: false # If this is set to true, Calamares refers to itself as a "setup program" # rather than an "installer". Defaults to the value of dont-chroot, but # Calamares will complain if this is not explicitly set. -# oem-setup: true +oem-setup: false # If this is set to true, the "Cancel" button will be disabled entirely. # The button is also hidden from view. diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index b43b89289..0516b5613 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,5 +1,5 @@ # === This file is part of Calamares - === -# +# # SPDX-FileCopyrightText: 2020 Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify @@ -163,21 +163,25 @@ set_target_properties( calamares PROPERTIES VERSION ${CALAMARES_VERSION_SHORT} SOVERSION ${CALAMARES_VERSION_SHORT} + INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_INSTALL_FULL_INCLUDEDIR}/libcalamares ) calamares_automoc( calamares ) target_link_libraries( calamares LINK_PRIVATE ${OPTIONAL_PRIVATE_LIBRARIES} - LINK_PUBLIC yamlcpp + LINK_PUBLIC Qt5::Core KF5::CoreAddons ${OPTIONAL_PUBLIC_LIBRARIES} ) +### Installation +# +# install( TARGETS calamares - EXPORT CalamaresLibraryDepends + EXPORT Calamares RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} @@ -192,13 +196,18 @@ install( CODE " # Install header files file( GLOB rootHeaders "*.h" ) -file( GLOB kdsingleapplicationguardHeaders "kdsingleapplicationguard/*.h" ) -file( GLOB utilsHeaders "utils/*.h" ) +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/CalamaresConfig.h + ${rootHeaders} + DESTINATION include/libcalamares +) +# Install each subdir-worth of header files +foreach( subdir geoip locale modulesystem network partition utils ) + file( GLOB subdir_headers "${subdir}/*.h" ) + install( FILES ${subdir_headers} DESTINATION include/libcalamares/${subdir} ) +endforeach() -install( FILES ${CMAKE_CURRENT_BINARY_DIR}/CalamaresConfig.h DESTINATION include/libcalamares ) -install( FILES ${rootHeaders} DESTINATION include/libcalamares ) -install( FILES ${kdsingleapplicationguardHeaders} DESTINATION include/libcalamares/kdsingleapplicationguard ) -install( FILES ${utilsHeaders} DESTINATION include/libcalamares/utils ) ### TESTING # diff --git a/src/libcalamares/CalamaresConfig.h.in b/src/libcalamares/CalamaresConfig.h.in index 98efa8c26..c081b158f 100644 --- a/src/libcalamares/CalamaresConfig.h.in +++ b/src/libcalamares/CalamaresConfig.h.in @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2020 Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify @@ -29,7 +29,14 @@ #define CMAKE_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}/calamares" #define CMAKE_INSTALL_FULL_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}" -//cmakedefines for CMake variables (e.g. for optdepends) go here +/* + * These are feature-settings that affect consumers of Calamares + * libraries as well; without Python-support in the libs, for instance, + * there's no point in having a Python plugin. + * + * This list should match the one in CalamaresConfig.cmake + * which is the CMake-time side of the same configuration. + */ #cmakedefine WITH_PYTHON #cmakedefine WITH_PYTHONQT #cmakedefine WITH_QML diff --git a/src/libcalamares/partition/Tests.cpp b/src/libcalamares/partition/Tests.cpp index 7719f2e84..e52b8edf1 100644 --- a/src/libcalamares/partition/Tests.cpp +++ b/src/libcalamares/partition/Tests.cpp @@ -1,5 +1,5 @@ /* === This file is part of Calamares - === - * + * * SPDX-FileCopyrightText: 2019 Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify @@ -103,36 +103,43 @@ PartitionSizeTests::testUnitComparison() QCOMPARE( original_compare( u1, u2 ), PartitionSize::unitsComparable( u1, u2 ) ); } +/* Operator to make the table in testUnitNormalisation_data easier to write */ +constexpr qint64 operator""_qi( unsigned long long m ) +{ + return qint64( m ); +} + void PartitionSizeTests::testUnitNormalisation_data() { QTest::addColumn< SizeUnit >( "u1" ); QTest::addColumn< int >( "v" ); - QTest::addColumn< long >( "bytes" ); - - QTest::newRow( "none" ) << SizeUnit::None << 16 << -1L; - QTest::newRow( "none" ) << SizeUnit::None << 0 << -1L; - QTest::newRow( "none" ) << SizeUnit::None << -2 << -1L; - - QTest::newRow( "percent" ) << SizeUnit::Percent << 0 << -1L; - QTest::newRow( "percent" ) << SizeUnit::Percent << 16 << -1L; - QTest::newRow( "percent" ) << SizeUnit::Percent << -2 << -1L; - - QTest::newRow( "KiB" ) << SizeUnit::KiB << 0 << -1L; - QTest::newRow( "KiB" ) << SizeUnit::KiB << 1 << 1024L; - QTest::newRow( "KiB" ) << SizeUnit::KiB << 1000 << 1024000L; - QTest::newRow( "KiB" ) << SizeUnit::KiB << 1024 << 1024 * 1024L; - QTest::newRow( "KiB" ) << SizeUnit::KiB << -2 << -1L; - - QTest::newRow( "MiB" ) << SizeUnit::MiB << 0 << -1L; - QTest::newRow( "MiB" ) << SizeUnit::MiB << 1 << 1024 * 1024L; - QTest::newRow( "MiB" ) << SizeUnit::MiB << 1000 << 1024 * 1024000L; - QTest::newRow( "MiB" ) << SizeUnit::MiB << 1024 << 1024 * 1024 * 1024L; - QTest::newRow( "MiB" ) << SizeUnit::MiB << -2 << -1L; - - QTest::newRow( "GiB" ) << SizeUnit::GiB << 0 << -1L; - QTest::newRow( "GiB" ) << SizeUnit::GiB << 1 << 1024 * 1024 * 1024L; - QTest::newRow( "GiB" ) << SizeUnit::GiB << 2 << 2048 * 1024 * 1024L; + QTest::addColumn< qint64 >( "bytes" ); + + QTest::newRow( "none" ) << SizeUnit::None << 16 << -1_qi; + QTest::newRow( "none" ) << SizeUnit::None << 0 << -1_qi; + QTest::newRow( "none" ) << SizeUnit::None << -2 << -1_qi; + + QTest::newRow( "percent" ) << SizeUnit::Percent << 0 << -1_qi; + QTest::newRow( "percent" ) << SizeUnit::Percent << 16 << -1_qi; + QTest::newRow( "percent" ) << SizeUnit::Percent << -2 << -1_qi; + + QTest::newRow( "KiB" ) << SizeUnit::KiB << 0 << -1_qi; + QTest::newRow( "KiB" ) << SizeUnit::KiB << 1 << 1024_qi; + QTest::newRow( "KiB" ) << SizeUnit::KiB << 1000 << 1024000_qi; + QTest::newRow( "KiB" ) << SizeUnit::KiB << 1024 << 1024 * 1024_qi; + QTest::newRow( "KiB" ) << SizeUnit::KiB << -2 << -1_qi; + + QTest::newRow( "MiB" ) << SizeUnit::MiB << 0 << -1_qi; + QTest::newRow( "MiB" ) << SizeUnit::MiB << 1 << 1024 * 1024_qi; + QTest::newRow( "MiB" ) << SizeUnit::MiB << 1000 << 1024 * 1024000_qi; + QTest::newRow( "MiB" ) << SizeUnit::MiB << 1024 << 1024 * 1024 * 1024_qi; + QTest::newRow( "MiB" ) << SizeUnit::MiB << -2 << -1_qi; + + QTest::newRow( "GiB" ) << SizeUnit::GiB << 0 << -1_qi; + QTest::newRow( "GiB" ) << SizeUnit::GiB << 1 << 1024_qi * 1024 * 1024_qi; + // This one overflows 32-bits, which is why we want 64-bits for the whole table + QTest::newRow( "GiB" ) << SizeUnit::GiB << 2 << 2048_qi * 1024 * 1024_qi; } void @@ -140,7 +147,7 @@ PartitionSizeTests::testUnitNormalisation() { QFETCH( SizeUnit, u1 ); QFETCH( int, v ); - QFETCH( long, bytes ); + QFETCH( qint64, bytes ); - QCOMPARE( PartitionSize( v, u1 ).toBytes(), static_cast< qint64 >( bytes ) ); + QCOMPARE( PartitionSize( v, u1 ).toBytes(), bytes ); } diff --git a/src/libcalamares/utils/Variant.cpp b/src/libcalamares/utils/Variant.cpp index dc20e73b2..0c2e4385c 100644 --- a/src/libcalamares/utils/Variant.cpp +++ b/src/libcalamares/utils/Variant.cpp @@ -99,6 +99,19 @@ getInteger( const QVariantMap& map, const QString& key, qint64 d ) return result; } +quint64 +getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 u ) +{ + quint64 result = u; + if ( map.contains( key ) ) + { + auto v = map.value( key ); + result = v.toString().toULongLong(nullptr, 0); + } + + return result; +} + double getDouble( const QVariantMap& map, const QString& key, double d ) { diff --git a/src/libcalamares/utils/Variant.h b/src/libcalamares/utils/Variant.h index 643d8ae98..b678a2c6e 100644 --- a/src/libcalamares/utils/Variant.h +++ b/src/libcalamares/utils/Variant.h @@ -53,6 +53,11 @@ DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key */ DLLEXPORT qint64 getInteger( const QVariantMap& map, const QString& key, qint64 d ); +/** + * Get an unsigned integer value from a mapping; returns @p u if no value. + */ +DLLEXPORT quint64 getUnsignedInteger( const QVariantMap& map, const QString& key, quint64 u ); + /** * Get a double value from a mapping (integers are converted); returns @p d if no value. */ diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 32fec2cb1..773fdf617 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -66,8 +66,9 @@ calamares_add_library( calamaresui EXPORT_MACRO UIDLLEXPORT_PRO LINK_LIBRARIES Qt5::Svg + yamlcpp RESOURCES libcalamaresui.qrc - EXPORT CalamaresLibraryDepends + EXPORT Calamares VERSION ${CALAMARES_VERSION_SHORT} ) @@ -82,3 +83,25 @@ endif() if( WITH_QML ) target_link_libraries( calamaresui PUBLIC Qt5::QuickWidgets ) endif() + + +### Installation +# +# +# The library is already installed through calamares_add_library(), +# so we only need to do headers. Unlike the Calamares source tree, +# where libcalamares and libcalamaresui live in different branches, +# we're going to glom it all together in the installed headers location. + +install( + FILES + Branding.h + ViewManager.h + DESTINATION include/libcalamares +) + +# Install each subdir-worth of header files +foreach( subdir modulesystem utils viewpages widgets ) + file( GLOB subdir_headers "${subdir}/*.h" ) + install( FILES ${subdir_headers} DESTINATION include/libcalamares/${subdir} ) +endforeach() diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index 533c704f8..08e5a8520 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -66,3 +66,21 @@ endforeach() include( CalamaresAddTranslations ) add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) + +# TODO:3.3: Use FindPython3 +if ( BUILD_TESTING AND BUILD_SCHEMA_TESTING AND PYTHONINTERP_FOUND AND PYTHON_EXECUTABLE ) + # The tests for each config file are independent of whether the + # module is enabled or not: the config file should match its schema + # regardless. + foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) + set( _schema_file "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${SUBDIRECTORY}.schema.yaml" ) + set( _conf_file "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${SUBDIRECTORY}.conf" ) + if ( EXISTS "${_schema_file}" AND EXISTS "${_conf_file}" ) + add_test( + NAME validate-${SUBDIRECTORY} + COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" "${_schema_file}" "${_conf_file}" + ) + endif() + endforeach() +endif() + diff --git a/src/modules/bootloader/bootloader.schema.yaml b/src/modules/bootloader/bootloader.schema.yaml new file mode 100644 index 000000000..4670ea3db --- /dev/null +++ b/src/modules/bootloader/bootloader.schema.yaml @@ -0,0 +1,33 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/bootloader +additionalProperties: false +type: object +properties: + efiBootLoader: { type: string } + kernel: { type: string } + img: { type: string } + fallback: { type: string } + timeout: { type: string } # Inserted verbatim + bootloaderEntryName: { type: string } + kernelLine: { type: string } + fallbackKernelLine: { type: string } + + # Programs + grubInstall: { type: string } + grubMkconfig: { type: string } + grubCfg: { type: string } + grubProbe: { type: string } + efiBootMgr: { type: string } + + efiBootloaderId: { type: string } + installEFIFallback: { type: boolean } + +required: + - efiBootLoader + - kernel + - img + - grubInstall + - grubMkconfig + - grubCfg + - grubProbe diff --git a/src/modules/displaymanager/displaymanager.schema.yaml b/src/modules/displaymanager/displaymanager.schema.yaml new file mode 100644 index 000000000..a16af732f --- /dev/null +++ b/src/modules/displaymanager/displaymanager.schema.yaml @@ -0,0 +1,16 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/displaymanager +additionalProperties: false +type: object +properties: + "displaymanagers": + type: seq + sequence: + - { type: string, required: true, enum: [slim, sddm, lightdm, gdm, mdm, lxdm, kdm] } + "defaultDesktopEnvironment": + type: map + mapping: + "executable": { type: str } + "desktopFile": { type: str } + "basicSetup": { type: boolean, default: false } diff --git a/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..a8045f8df Binary files /dev/null and b/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..d2783e5e3 --- /dev/null +++ b/src/modules/dummypythonqt/lang/bn/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-30 23:13+0200\n" +"PO-Revision-Date: 2016-12-16 12:18+0000\n" +"Language-Team: Bengali (https://www.transifex.com/calamares/teams/20061/bn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bn\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 "" + +#: 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/lv/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..cdb444be0 Binary files /dev/null and b/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..651fe2fa4 --- /dev/null +++ b/src/modules/dummypythonqt/lang/lv/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-30 23:13+0200\n" +"PO-Revision-Date: 2016-12-16 12:18+0000\n" +"Language-Team: Latvian (https://www.transifex.com/calamares/teams/20061/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "" + +#: 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/finished/finished.schema.yaml b/src/modules/finished/finished.schema.yaml new file mode 100644 index 000000000..53189c7fa --- /dev/null +++ b/src/modules/finished/finished.schema.yaml @@ -0,0 +1,11 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/finished +additionalProperties: false +type: object +properties: + restartNowEnabled: { type: boolean, default: true } # TODO:3.3: remove + restartNowChecked: { type: boolean, default: false } # TODO:3.3: remove + restartNowCommand: { type: string } + restartNowMode: { type: string, enum: [ never, user-unchecked, user-checked, always ] } + notifyOnFinished: { type: boolean } diff --git a/src/modules/fstab/fstab.schema.yaml b/src/modules/fstab/fstab.schema.yaml new file mode 100644 index 000000000..1c2bf459c --- /dev/null +++ b/src/modules/fstab/fstab.schema.yaml @@ -0,0 +1,19 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/fstab +additionalProperties: false +type: object +properties: + "mountOptions": + type: map + mapping: + "default": { type: string, required: true } + "btrfs": { type: string, required: true } + "ssdExtraMountOptions": + type: map + mapping: + "ext4": { type: string, required: true } + "jfs": { type: string, required: true } + "xfs": { type: string, required: true } + "swap": { type: string, required: true } + "btrfs": { type: string, required: true } diff --git a/src/modules/grubcfg/grubcfg.schema.yaml b/src/modules/grubcfg/grubcfg.schema.yaml new file mode 100644 index 000000000..10aa34c2b --- /dev/null +++ b/src/modules/grubcfg/grubcfg.schema.yaml @@ -0,0 +1,15 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/grubcfg +additionalProperties: false +type: object +properties: + "overwrite": { type: boolean, default: false } + "defaults": + type: map + mapping: + "GRUB_TIMEOUT": { type: int, required: true } + "GRUB_DEFAULT": { type: string, required: true } + "GRUB_DISABLE_SUBMENU": { type: boolean, default: true } + "GRUB_TERMINAL_OUTPUT": { type: string, required: true } + "GRUB_DISABLE_RECOVERY": { type: boolean, default: true } diff --git a/src/modules/initcpio/initcpio.schema.yaml b/src/modules/initcpio/initcpio.schema.yaml new file mode 100644 index 000000000..db81ba68e --- /dev/null +++ b/src/modules/initcpio/initcpio.schema.yaml @@ -0,0 +1,7 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/initcpio +additionalProperties: false +type: object +properties: + kernel: { type: string, required: true } diff --git a/src/modules/keyboard/keyboard.schema.yaml b/src/modules/keyboard/keyboard.schema.yaml new file mode 100644 index 000000000..33175b84d --- /dev/null +++ b/src/modules/keyboard/keyboard.schema.yaml @@ -0,0 +1,8 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/finished +additionalProperties: keyboard +type: object +properties: + xOrgConfFileName: { type: string, required: true } + convertedKeymapPath: { type: string, required: true } diff --git a/src/modules/license/license.schema.yaml b/src/modules/license/license.schema.yaml new file mode 100644 index 000000000..62bd07035 --- /dev/null +++ b/src/modules/license/license.schema.yaml @@ -0,0 +1,17 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/license +additionalProperties: false +type: object +properties: + "entries": + type: seq + sequence: + - type: map + mapping: + "id": { type: str } + "name": { type: str } + "vendor": { type: str } + "type": { type: str } + "url": { type: str } + "required": { type: boolean, default: false } diff --git a/src/modules/locale/images/timezone_-1.0.png b/src/modules/locale/images/timezone_-1.0.png index 50ced3980..4fdbd0e3f 100644 Binary files a/src/modules/locale/images/timezone_-1.0.png and b/src/modules/locale/images/timezone_-1.0.png differ diff --git a/src/modules/locale/images/timezone_-10.0.png b/src/modules/locale/images/timezone_-10.0.png index 2a04bf251..5feb49e2b 100644 Binary files a/src/modules/locale/images/timezone_-10.0.png and b/src/modules/locale/images/timezone_-10.0.png differ diff --git a/src/modules/locale/images/timezone_-7.0.png b/src/modules/locale/images/timezone_-7.0.png index a4a12b9ae..c3f98ecbc 100644 Binary files a/src/modules/locale/images/timezone_-7.0.png and b/src/modules/locale/images/timezone_-7.0.png differ diff --git a/src/modules/locale/images/timezone_0.0.png b/src/modules/locale/images/timezone_0.0.png index 02a4c8f8b..f098b9c67 100644 Binary files a/src/modules/locale/images/timezone_0.0.png and b/src/modules/locale/images/timezone_0.0.png differ diff --git a/src/modules/locale/images/timezone_10.0.png b/src/modules/locale/images/timezone_10.0.png index fab3dadac..9304fa4ad 100644 Binary files a/src/modules/locale/images/timezone_10.0.png and b/src/modules/locale/images/timezone_10.0.png differ diff --git a/src/modules/locale/images/timezone_11.0.png b/src/modules/locale/images/timezone_11.0.png index 71e62ee0c..b5395bad1 100644 Binary files a/src/modules/locale/images/timezone_11.0.png and b/src/modules/locale/images/timezone_11.0.png differ diff --git a/src/modules/locale/images/timezone_11.5.png b/src/modules/locale/images/timezone_11.5.png deleted file mode 100644 index 442cabfeb..000000000 Binary files a/src/modules/locale/images/timezone_11.5.png and /dev/null differ diff --git a/src/modules/locale/images/timezone_12.0.png b/src/modules/locale/images/timezone_12.0.png index 9d4b458e7..049026760 100644 Binary files a/src/modules/locale/images/timezone_12.0.png and b/src/modules/locale/images/timezone_12.0.png differ diff --git a/src/modules/locale/images/timezone_2.0.png b/src/modules/locale/images/timezone_2.0.png index fa0bc4818..1bae9510e 100644 Binary files a/src/modules/locale/images/timezone_2.0.png and b/src/modules/locale/images/timezone_2.0.png differ diff --git a/src/modules/locale/locale.qrc b/src/modules/locale/locale.qrc index b6b0d0cf7..713943ae7 100644 --- a/src/modules/locale/locale.qrc +++ b/src/modules/locale/locale.qrc @@ -21,7 +21,6 @@ images/timezone_10.0.png images/timezone_10.5.png images/timezone_11.0.png - images/timezone_11.5.png images/timezone_12.0.png images/timezone_12.75.png images/timezone_13.0.png diff --git a/src/modules/locale/locale.schema.yaml b/src/modules/locale/locale.schema.yaml new file mode 100644 index 000000000..41c3ad487 --- /dev/null +++ b/src/modules/locale/locale.schema.yaml @@ -0,0 +1,10 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/locale +additionalProperties: false +type: object +properties: + "region": { type: str } + "zone": { type: str } + "localeGenPath": { type: string, required: true } + "geoipUrl": { type: str } diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index 52ddc24b1..eec939905 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -26,7 +26,7 @@ static const char* zoneNames[] = { "0.0", "1.0", "2.0", "3.0", "3.5", "4.0", "4.5", "5.0", "5.5", "5.75", "6.0", "6.5", "7.0", - "8.0", "9.0", "9.5", "10.0", "10.5", "11.0", "11.5", "12.0", "12.75", "13.0", "-1.0", "-2.0", "-3.0", + "8.0", "9.0", "9.5", "10.0", "10.5", "11.0", "12.0", "12.75", "13.0", "-1.0", "-2.0", "-3.0", "-3.5", "-4.0", "-4.5", "-5.0", "-5.5", "-6.0", "-7.0", "-8.0", "-9.0", "-9.5", "-10.0", "-11.0" }; static_assert( TimeZoneImageList::zoneCount == ( sizeof( zoneNames ) / sizeof( zoneNames[ 0 ] ) ), "Incorrect number of zones" ); @@ -36,7 +36,7 @@ static_assert( TimeZoneImageList::zoneCount == ( sizeof( zoneNames ) / sizeof( z /* static constexpr */ const int TimeZoneImageList::zoneCount; /* static constexpr */ const QSize TimeZoneImageList::imageSize; -static_assert( TimeZoneImageList::zoneCount == 38 ); +static_assert( TimeZoneImageList::zoneCount == 37 ); TimeZoneImageList::TimeZoneImageList() {} diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.h b/src/modules/locale/timezonewidget/TimeZoneImage.h index 0a3aea145..ee02bfbfd 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.h +++ b/src/modules/locale/timezonewidget/TimeZoneImage.h @@ -77,7 +77,7 @@ public: QImage find( QPoint p ) const; /// @brief The **expected** number of zones in the list. - static constexpr const int zoneCount = 38; + static constexpr const int zoneCount = 37; /// @brief The expected size of each zone image. static constexpr const QSize imageSize = QSize( 780, 340 ); }; diff --git a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml new file mode 100644 index 000000000..660e06d0b --- /dev/null +++ b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.schema.yaml @@ -0,0 +1,7 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/luksopenswaphookcfg +additionalProperties: false +type: object +properties: + "configFilePath": { type: string, required: true } diff --git a/src/modules/machineid/machineid.schema.yaml b/src/modules/machineid/machineid.schema.yaml new file mode 100644 index 000000000..588a7fa4e --- /dev/null +++ b/src/modules/machineid/machineid.schema.yaml @@ -0,0 +1,9 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/machineid +additionalProperties: false +type: object +properties: + "systemd": { type: boolean, default: true } + "dbus": { type: boolean, default: true } + "symlink": { type: boolean, default: true } diff --git a/src/modules/mount/mount.schema.yaml b/src/modules/mount/mount.schema.yaml new file mode 100644 index 000000000..8a81d9462 --- /dev/null +++ b/src/modules/mount/mount.schema.yaml @@ -0,0 +1,24 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/mount +additionalProperties: false +type: object +properties: + "extraMounts": + type: seq + sequence: + - type: map + mapping: + "device": { type: string, required: true } + "fs": { type: str } + "mountPoint": { type: string, required: true } + "options": { type: str } + "extraMountsEfi": + type: seq + sequence: + - type: map + mapping: + "device": { type: string, required: true } + "fs": { type: str } + "mountPoint": { type: string, required: true } + "options": { type: str } diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 3e6ac3cb5..762e92985 100644 --- a/src/modules/netinstall/CMakeLists.txt +++ b/src/modules/netinstall/CMakeLists.txt @@ -26,5 +26,6 @@ calamares_add_test( PackageModel.cpp LIBRARIES Qt5::Gui + yamlcpp ) diff --git a/src/modules/netinstall/netinstall.schema.yaml b/src/modules/netinstall/netinstall.schema.yaml new file mode 100644 index 000000000..8420ea501 --- /dev/null +++ b/src/modules/netinstall/netinstall.schema.yaml @@ -0,0 +1,7 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/netinstall +additionalProperties: false +type: object +properties: + groupsUrl: { type: string, required: true } diff --git a/src/modules/packagechooser/CMakeLists.txt b/src/modules/packagechooser/CMakeLists.txt index d85eda8e2..d949829de 100644 --- a/src/modules/packagechooser/CMakeLists.txt +++ b/src/modules/packagechooser/CMakeLists.txt @@ -5,6 +5,7 @@ set( _extra_src "" ) ### OPTIONAL AppData XML support in PackageModel # # +# TODO:3.3:WITH->BUILD (this doesn't affect the ABI offered by Calamares) option( WITH_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON ) if ( WITH_APPDATA ) find_package(Qt5 COMPONENTS Xml) diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 8f58cd6fb..3e29d72e1 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -274,6 +274,20 @@ class PMApt(PackageManager): # Doesn't need to update the system explicitly pass +class PMXbps(PackageManager): + backend = "xbps" + + def install(self, pkgs, from_local=False): + check_target_env_call(["xbps-install", "-Sy"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["xbps-remove", "-Ry", "--noconfirm"] + pkgs) + + def update_db(self): + check_target_env_call(["xbps-install", "-S"]) + + def update_system(self): + check_target_env_call(["xbps", "-Suy"]) class PMPacman(PackageManager): backend = "pacman" diff --git a/src/modules/packages/packages.schema.yaml b/src/modules/packages/packages.schema.yaml new file mode 100644 index 000000000..8b8a9eb1d --- /dev/null +++ b/src/modules/packages/packages.schema.yaml @@ -0,0 +1,33 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/packages +additionalProperties: false +type: object +properties: + "backend": { type: string, required: true, enum: [packagekit, zypp, yum, dnf, urpmi, apt, pacman, portage, entropy] } + "update_db": { type: boolean, default: true } + "operations": + type: seq + sequence: + - type: map + mapping: + "install": + type: seq + sequence: + - { type: text } + "remove": + type: seq + sequence: + - { type: text } + "localInstall": + type: seq + sequence: + - { type: text } + "try_install": + type: seq + sequence: + - { type: text } + "try_remove": + type: seq + sequence: + - { type: text } diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index aee1ab10f..8856778b3 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -883,7 +883,9 @@ PartitionCoreModule::initLayout( const QVariantList& config ) } if ( !m_partLayout->addEntry( CalamaresUtils::getString( pentry, "name" ), + CalamaresUtils::getString( pentry, "uuid" ), CalamaresUtils::getString( pentry, "type" ), + CalamaresUtils::getUnsignedInteger( pentry, "attributes", 0 ), CalamaresUtils::getString( pentry, "mountPoint" ), CalamaresUtils::getString( pentry, "filesystem" ), CalamaresUtils::getSubMap( pentry, "features", ok ), diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 33d2a7679..b5de916f0 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -118,7 +118,9 @@ PartitionLayout::addEntry( const QString& mountPoint, const QString& size, const bool PartitionLayout::addEntry( const QString& label, + const QString& uuid, const QString& type, + quint64 attributes, const QString& mountPoint, const QString& fs, const QVariantMap& features, @@ -140,7 +142,9 @@ PartitionLayout::addEntry( const QString& label, } entry.partLabel = label; + entry.partUUID = uuid; entry.partType = type; + entry.partAttributes = attributes; entry.partMountPoint = mountPoint; PartUtils::findFS( fs, &entry.partFileSystem ); if ( entry.partFileSystem == FileSystem::Unknown ) @@ -244,12 +248,24 @@ PartitionLayout::execute( Device* dev, currentPartition->setLabel( part.partLabel ); currentPartition->fileSystem().setLabel( part.partLabel ); } + if ( !part.partUUID.isEmpty() ) + { + currentPartition->setUUID( part.partUUID ); + } if ( !part.partType.isEmpty() ) { #if defined( WITH_KPMCORE42API ) currentPartition->setType( part.partType ); #else cWarning() << "Ignoring type; requires KPMcore >= 4.2.0."; +#endif + } + if ( part.partAttributes ) + { +#if defined( WITH_KPMCORE42API ) + currentPartition->setAttributes( part.partAttributes ); +#else + cWarning() << "Ignoring attributes; requires KPMcore >= 4.2.0."; #endif } if ( !part.partFeatures.isEmpty() ) diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index 5651ae995..24c10bf97 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -41,7 +41,9 @@ public: struct PartitionEntry { QString partLabel; + QString partUUID; QString partType; + quint64 partAttributes; QString partMountPoint; FileSystem::Type partFileSystem = FileSystem::Unknown; QVariantMap partFeatures; @@ -76,7 +78,9 @@ public: const QString& min = QString(), const QString& max = QString() ); bool addEntry( const QString& label, + const QString& uuid, const QString& type, + quint64 attributes, const QString& mountPoint, const QString& fs, const QVariantMap& features, diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.cpp b/src/modules/partition/jobs/FillGlobalStorageJob.cpp index 07c856d44..1242b7804 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp +++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp @@ -91,6 +91,8 @@ mapForPartition( Partition* partition, const QString& uuid ) { QVariantMap map; map[ "device" ] = partition->partitionPath(); + map[ "partlabel" ] = partition->label(); + map[ "partuuid" ] = partition->uuid(); map[ "mountPoint" ] = PartitionInfo::mountPoint( partition ); map[ "fsName" ] = userVisibleFS( partition->fileSystem() ); map[ "fs" ] = untranslatedFS( partition->fileSystem() ); @@ -107,6 +109,7 @@ mapForPartition( Partition* partition, const QString& uuid ) Logger::CDebug deb; using TR = Logger::DebugRow< const char* const, const QString& >; deb << Logger::SubEntry << "mapping for" << partition->partitionPath() << partition->deviceNode() + << TR( "partlabel", map[ "partlabel" ].toString() ) << TR( "partuuid", map[ "partuuid" ].toString() ) << TR( "mountPoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() ) << TR( "fsName", map[ "fsName" ].toString() ) << TR( "uuid", uuid ) << TR( "claimed", map[ "claimed" ].toString() ); diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index f6cc34ee4..51dc70e99 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -106,6 +106,7 @@ defaultFileSystemType: "ext4" # size: 20% # minSize: 500M # maxSize: 10G +# attributes: 0xffff000000000003 # - name: "home" # type = "933ac7e1-2eb4-4f13-b844-0e14e2aef915" # filesystem: "ext4" @@ -127,7 +128,9 @@ defaultFileSystemType: "ext4" # - name: filesystem label # and # partition name (gpt only; since KPMCore 4.2.0) +# - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0) # - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0) +# - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0) # - filesystem: filesystem type # - mountPoint: partition mount point # - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB) diff --git a/src/modules/partition/partition.schema.yaml b/src/modules/partition/partition.schema.yaml new file mode 100644 index 000000000..198123dd5 --- /dev/null +++ b/src/modules/partition/partition.schema.yaml @@ -0,0 +1,11 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/partition +additionalProperties: false +type: object +properties: + efiSystemPartition: { type: string, required: true } + ensureSuspendToDisk: { type: boolean, default: true } + drawNestedPartitions: { type: boolean, default: false } + alwaysShowPartitionLabels: { type: boolean, default: true } + defaultFileSystemType: { type: string, required: true } diff --git a/src/modules/plymouthcfg/plymouthcfg.schema.yaml b/src/modules/plymouthcfg/plymouthcfg.schema.yaml new file mode 100644 index 000000000..b15db1527 --- /dev/null +++ b/src/modules/plymouthcfg/plymouthcfg.schema.yaml @@ -0,0 +1,7 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/plymouthcfg +additionalProperties: false +type: object +properties: + plymouth_theme: { type: str } diff --git a/src/modules/removeuser/removeuser.schema.yaml b/src/modules/removeuser/removeuser.schema.yaml new file mode 100644 index 000000000..7ed6cfbbe --- /dev/null +++ b/src/modules/removeuser/removeuser.schema.yaml @@ -0,0 +1,7 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/removeuser +additionalProperties: false +type: object +properties: + "username": { type: string, required: true } diff --git a/src/modules/umount/umount.schema.yaml b/src/modules/umount/umount.schema.yaml new file mode 100644 index 000000000..b76a14ac6 --- /dev/null +++ b/src/modules/umount/umount.schema.yaml @@ -0,0 +1,8 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/umount +additionalProperties: false +type: object +properties: + "srcLog": { type: str } + "destLog": { type: str } diff --git a/src/modules/unpackfs/unpackfs.schema.yaml b/src/modules/unpackfs/unpackfs.schema.yaml new file mode 100644 index 000000000..0d6f0955a --- /dev/null +++ b/src/modules/unpackfs/unpackfs.schema.yaml @@ -0,0 +1,14 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/unpackfs +additionalProperties: false +type: object +properties: + "unpack": + type: seq + sequence: + - type: map + mapping: + "source": { type: string, required: true } + "sourcefs": { type: str } + "destination": { type: str } diff --git a/src/modules/users/users.schema.yaml b/src/modules/users/users.schema.yaml new file mode 100644 index 000000000..b667df7f6 --- /dev/null +++ b/src/modules/users/users.schema.yaml @@ -0,0 +1,18 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/users +additionalProperties: false +type: object +properties: + "defaultGroups": + required: true + type: seq + sequence: + - { type: str } + "autologinGroup": { type: string, required: true } + "doAutologin": { type: boolean, default: true } + "sudoersGroup": { type: string, required: true } + "setRootPassword": { type: boolean, default: true } + "availableShells": { type: str } + "avatarFilePath": { type: str } + "doReusePassword": { type: boolean, default: true } diff --git a/src/modules/welcome/welcome.schema.yaml b/src/modules/welcome/welcome.schema.yaml new file mode 100644 index 000000000..56a79be06 --- /dev/null +++ b/src/modules/welcome/welcome.schema.yaml @@ -0,0 +1,36 @@ +--- +$schema: https://json-schema.org/schema# +$id: https://calamares.io/schemas/welcome +additionalProperties: false +type: object +properties: + # TODO:3.3: drop the string alternatives and put the URL part in Branding + showSupportUrl: { anyOf: [ { type: boolean, default: true }, { type: string } ] } + showKnownIssuesUrl: { anyOf: [ { type: boolean, default: true }, { type: string } ] } + showReleaseNotesUrl: { anyOf: [ { type: boolean, default: true }, { type: string } ] } + showDonateUrl: { anyOf: [ { type: boolean, default: true }, { type: string } ] } + + requirements: + additionalProperties: false + type: object + properties: + requiredStorage: { type: number } + requiredRam: { type: number } + internetCheckUrl: { type: string } + check: + type: array + items: { type: string, enum: [storage, ram, power, internet, root, screen], unique: true } + required: # Key-name in the config-file + type: array + items: { type: string, enum: [storage, ram, power, internet, root, screen], unique: true } + required: [ requiredStorage, requiredRam, check ] # Schema keyword + + # TODO: refactor, this is reused in locale + geoip: + additionalProperties: false + type: object + properties: + style: { type: string, enum: [ none, fixed, xml, json ] } + url: { type: string } + selector: { type: string } + required: [ style, url, selector ] diff --git a/src/modules/welcomeq/welcomeq.conf b/src/modules/welcomeq/welcomeq.conf index 6c131742e..32be7fcb5 100644 --- a/src/modules/welcomeq/welcomeq.conf +++ b/src/modules/welcomeq/welcomeq.conf @@ -13,6 +13,7 @@ qmlSearch: both showSupportUrl: true showKnownIssuesUrl: true showReleaseNotesUrl: true +# showDonateUrl: https://kde.org/community/donations/ requirements: requiredStorage: 5.5