diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..1dd301d99 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,29 @@ +#### Submission type + + - [ ] Bug report + - [ ] Feature Request + + +#### Info regarding which version of Calamares is used, which Distribution + +> … + +#### Provide information on how the disks are set up, in detail, with full logs of commands issued + +> … + +#### What do you expect to have happen when Calamares installs? + +> … + +#### Describe the issue you encountered + +> … + +#### Steps to reproduce the problem + +> … + +#### Include the installation.log: + +> … diff --git a/.gitignore b/.gitignore index 8dd45aec1..26e8ff869 100644 --- a/.gitignore +++ b/.gitignore @@ -35,8 +35,14 @@ Makefile* qtcreator-build CMakeLists.txt.user +# KDevelop +*.kdev4 + # PyCharm .idea +# Visual Studio Code +.vscode + # Backup files *~ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..0b18d927d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +language: + - cpp + - python + +python: + - 3.5 + +sudo: required + +services: + - docker + +notifications: + irc: + - "chat.freenode.net#calamares" + +install: + - docker build -t calamares . + +script: + - docker run -v $PWD:/src --tmpfs /build:rw,size=65536k calamares bash -lc "cd /build && cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON /src && make -j2 && make install DESTDIR=/build/INSTALL_ROOT" + diff --git a/.tx/config b/.tx/config index 896f2ecfc..3cf9489f6 100644 --- a/.tx/config +++ b/.tx/config @@ -7,3 +7,20 @@ 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 +source_lang = en +type = DESKTOP + +[calamares.python] +file_filter = lang/python//LC_MESSAGES/python.po +source_file = lang/python.pot +source_lang = en +type = PO + diff --git a/AUTHORS b/AUTHORS index d9814373e..f39b579f4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,2 @@ Teo Mrnjavac +Adriaan de Groot diff --git a/CMakeLists.txt b/CMakeLists.txt index 198ed2a2a..a8d0b00d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,77 @@ -project( calamares CXX ) +# === This file is part of Calamares - === +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Generally, this CMakeLists.txt will find all the dependencies for Calamares +# and complain appropriately. See below (later in this file) for CMake-level +# options. There are some "secret" options as well: +# +# SKIP_MODULES : a space or semicolon-separated list of directory names +# under src/modules that should not be built. +# +# Example usage: +# +# cmake . -DSKIP_MODULES="partition luksbootkeycfg" -# The partition manager uses ECM but ECMConfig.cmake -# will complain if we require CMake less than 2.8.13, -# so never change this. -cmake_minimum_required( VERSION 2.8.12 ) +project( calamares C CXX ) -set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" ) +cmake_minimum_required( VERSION 3.2 ) + +set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" ) + +set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD_REQUIRED ON ) +set( CMAKE_C_STANDARD 99 ) +set( CMAKE_C_STANDARD_REQUIRED ON ) if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." ) - set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c99" ) + set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" ) set( CMAKE_C_FLAGS_DEBUG "-g" ) set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" ) set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" ) set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything -std=c++14" ) + # Clang warnings: doing *everything* is counter-productive, since it warns + # about things which we can't fix (e.g. C++98 incompatibilities, but + # Calaares is C++14). + foreach( CLANG_WARNINGS + -Weverything + -Wno-c++98-compat + -Wno-c++98-compat-pedantic + -Wno-padded + -Wno-undefined-reinterpret-cast + -Wno-global-constructors + -Wno-exit-time-destructors + -Wno-missing-prototypes + -Wno-documentation-unknown-command + ) + string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" ) + endforeach() + + # Third-party code where we don't care so much about compiler warnings + # (because it's uncomfortable to patch) get different flags; use + # mark_thirdparty_code( [...] ) + # to switch off warnings for those sources. + set( SUPPRESS_3RDPARTY_WARNINGS "-Wno-everything" ) + set( SUPPRESS_BOOST_WARNINGS " -Wno-zero-as-null-pointer-constant -Wno-disabled-macro-expansion" ) + set( CMAKE_CXX_FLAGS_DEBUG "-g" ) set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" ) set( CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG" ) @@ -25,11 +81,21 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" ) else() - set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wl,--no-undefined" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" ) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" ) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" ) + + set( SUPPRESS_3RDPARTY_WARNINGS "" ) + set( SUPPRESS_BOOST_WARNINGS "" ) endif() +macro(mark_thirdparty_code) + set_source_files_properties( ${ARGV} + PROPERTIES + COMPILE_FLAGS "${SUPPRESS_3RDPARTY_WARNINGS}" + COMPILE_DEFINITIONS "THIRDPARTY" + ) +endmacro() + if( CMAKE_COMPILER_IS_GNUCXX ) if( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9 ) @@ -38,67 +104,65 @@ if( CMAKE_COMPILER_IS_GNUCXX ) endif() endif() -cmake_policy( SET CMP0023 OLD ) -cmake_policy( SET CMP0028 NEW ) # double colons in KF5::Foo and Qt5::Foo are necessarily IMPORTED or ALIAS targets, don't search further +include( FeatureSummary ) -# Keep cmake 3.0 quiet -if( POLICY CMP0043 ) - cmake_policy( SET CMP0043 OLD ) -endif() - -include( MacroOptionalFindPackage ) -include( MacroLogFeature ) - -set( QT_VERSION 5.4.0 ) +set( QT_VERSION 5.6.0 ) find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets ) -find_package( YamlCpp 0.5.1 REQUIRED ) +find_package( YAMLCPP 0.5.1 REQUIRED ) find_package( PolkitQt5-1 REQUIRED ) - -option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) - -macro_optional_find_package( KF5Crash 5.18 ) -macro_log_feature( - KF5Crash_FOUND - "KCrash" - "Helper library for submitting crash reports with DrKonqi by KDE." - "http://api.kde.org/frameworks-api/frameworks5-apidocs/kcrash/html/namespaceKCrash.html" - FALSE "5.18" - "KCrash is used if a crash happens when running in a Plasma session." -) - -if ( KF5Crash_FOUND ) - find_package( KF5CoreAddons 5.18 REQUIRED ) +find_package(ECM 5.18 NO_MODULE) +if( ECM_FOUND ) + set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) endif() -option( WITH_PYTHON "Enable Python modules support." ON ) +option( INSTALL_CONFIG "Install configuration files" ON ) +option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON ) +option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF ) +option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) +option( BUILD_TESTING "Build the testing tree." ON ) -macro_optional_find_package( PythonLibs 3.3 ) -macro_log_feature( - PYTHONLIBS_FOUND - "Python" - "C interface libraries for the Python 3 interpreter." - "http://python.org" - FALSE "3.3" - "Python 3 is used for some Calamares job modules." +find_package( KF5 5.18 COMPONENTS CoreAddons Crash OPTIONAL ) +if( KF5Crash_DIR ) # Why not a _FOUND mechanism? + find_package( KF5 5.18 COMPONENTS CoreAddons REQUIRED ) +else() + set( WITH_KF5Crash OFF ) +endif() + +if( BUILD_TESTING ) + enable_testing() +endif () + +find_package( PythonLibs 3.3 ) +set_package_properties( + PythonLibs PROPERTIES + DESCRIPTION "C interface libraries for the Python 3 interpreter." + URL "http://python.org" + PURPOSE "Python 3 is used for Python job modules." ) if ( PYTHONLIBS_FOUND ) include( BoostPython3 ) find_boost_python3( 1.54.0 ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND ) - macro_log_feature( - CALAMARES_BOOST_PYTHON3_FOUND - "Boost.Python" - "A C++ library which enables seamless interoperability between C++ and Python 3." - "http://www.boost.org" - FALSE "1.54.0" - "Boost.Python is used for interfacing with Calamares job modules written in Python 3." + set_package_properties( + Boost PROPERTIES + PURPOSE "Boost.Python is used for Python job modules." + ) + + find_package( PythonQt ) + set_package_properties( PythonQt PROPERTIES + DESCRIPTION "A Python embedding solution for Qt applications." + URL "http://pythonqt.sourceforge.net" + PURPOSE "PythonQt is used for Python view modules." ) endif() -if ( PYTHONLIBS_NOTFOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND ) +if( PYTHONLIBS_NOTFOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND ) set( WITH_PYTHON OFF ) endif() +if( PYTHONLIBS_NOTFOUND OR NOT PYTHONQT_FOUND ) + set( WITH_PYTHONQT OFF ) +endif() ### ### Calamares application info @@ -107,11 +171,12 @@ set( CALAMARES_ORGANIZATION_NAME "Calamares" ) set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) set( CALAMARES_APPLICATION_NAME "Calamares" ) set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) -set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX es eu fr hu id is it_IT ja lt nl pl pt_BR pt_PT ro ru sv th tr_TR zh_CN zh_TW ) +set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX es eu fr he hr hu id is it_IT ja lt nl pl pt_BR pt_PT ro ru sk sv th tr_TR zh_CN zh_TW ) -set( CALAMARES_VERSION_MAJOR 2 ) +### Bump version here +set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 1 ) -set( CALAMARES_VERSION_PATCH 0 ) +set( CALAMARES_VERSION_PATCH 5 ) set( CALAMARES_VERSION_RC 0 ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) @@ -160,21 +225,74 @@ configure_file( ) # Early configure these files as we need them later on -configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY ) -file( COPY CalamaresAddLibrary.cmake DESTINATION "${PROJECT_BINARY_DIR}" ) -file( COPY CalamaresAddModuleSubdirectory.cmake DESTINATION "${PROJECT_BINARY_DIR}" ) -file( COPY CalamaresAddPlugin.cmake DESTINATION "${PROJECT_BINARY_DIR}" ) -file( COPY CalamaresAddBrandingSubdirectory.cmake DESTINATION "${PROJECT_BINARY_DIR}" ) - +set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" ) set( CALAMARES_LIBRARIES calamares ) +set( THIRDPARTY_DIR "${CMAKE_SOURCE_DIR}/thirdparty" ) + +### Example Distro +# +# For testing purposes Calamares includes a very, very, limited sample +# distro called "Generic". The root filesystem of "Generic" lives in +# data/example-root and can be squashed up as part of the build, so +# that a pure-upstream run of ./calamares -d from the build directory +# (with all the default settings and configurations) can actually +# do an complete example run. +# +# Some binaries from the build host (e.g. /bin and /lib) are also +# squashed into the example filesystem. +# +# To build the example distro (for use by the default, example, +# unsquashfs module), build the target 'example-distro', eg.: +# +# make example-distro +# +find_program( mksquashfs_PROGRAM mksquashfs ) +if( mksquashfs_PROGRAM ) + set( mksquashfs_FOUND ON ) + set( src_fs ${CMAKE_SOURCE_DIR}/data/example-root/ ) + set( dst_fs ${CMAKE_BINARY_DIR}/example.sqfs ) + if( EXISTS ${src_fs} ) + # based on the build host. If /lib64 exists, assume it is needed. + # Collect directories needed for a minimal binary distro, + # Note that the last path component is added to the root, so + # if you add /usr/sbin here, it will be put into /sbin_1. + # Add such paths to /etc/profile under ${src_fs}. + set( candidate_fs /sbin /bin /lib /lib64 ) + set( host_fs "" ) + foreach( c_fs ${candidate_fs} ) + if( EXISTS ${c_fs} ) + list( APPEND host_fs ${c_fs} ) + endif() + endforeach() + add_custom_command( + OUTPUT ${dst_fs} + COMMAND ${mksquashfs_PROGRAM} ${src_fs} ${dst_fs} -all-root + COMMAND ${mksquashfs_PROGRAM} ${host_fs} ${dst_fs} -all-root + ) + add_custom_target(example-distro DEPENDS ${dst_fs}) + endif() +else() + set( mksquashfs_FOUND OFF ) +endif() +# Doesn't list mksquashfs as an optional dep, though, because it +# hasn't been sent through the find_package() scheme. +set_package_properties( mksquashfs PROPERTIES + DESCRIPTION "Create squashed filesystems" + URL "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html" + PURPOSE "Create example distro" + TYPE OPTIONAL +) + +# add_subdirectory( thirdparty ) add_subdirectory( src ) -macro_display_feature_log() +add_feature_info(Python ${WITH_PYTHON} "Python job modules") +add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules") +add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration") +add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash") -if ( NOT WITH_PYTHON ) - message( "-- WARNING: Building Calamares without Python support. Python modules will not work.\n" ) -endif() +feature_summary(WHAT ALL) # Add all targets to the build-tree export set set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" ) @@ -200,11 +318,10 @@ install( FILES "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" - "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" - "${PROJECT_BINARY_DIR}/CalamaresAddPlugin.cmake" - "${PROJECT_BINARY_DIR}/CalamaresAddModuleSubdirectory.cmake" - "${PROJECT_BINARY_DIR}/CalamaresAddLibrary.cmake" - "${PROJECT_BINARY_DIR}/CalamaresAddBrandingSubdirectory.cmake" + "CMakeModules/CalamaresAddPlugin.cmake" + "CMakeModules/CalamaresAddModuleSubdirectory.cmake" + "CMakeModules/CalamaresAddLibrary.cmake" + "CMakeModules/CalamaresAddBrandingSubdirectory.cmake" DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" ) @@ -217,12 +334,14 @@ install( "${CMAKE_INSTALL_CMAKEDIR}" ) -install( - FILES - settings.conf - DESTINATION - share/calamares -) +if( INSTALL_CONFIG ) + install( + FILES + settings.conf + DESTINATION + share/calamares + ) +endif() install( FILES @@ -238,6 +357,13 @@ install( ${CMAKE_INSTALL_DATADIR}/applications ) +install( + FILES + man/calamares.8 + DESTINATION + ${CMAKE_INSTALL_MANDIR}/man8/ +) + # uninstall target configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" diff --git a/CMakeModules/BoostPython3.cmake b/CMakeModules/BoostPython3.cmake index e708defa4..c128b58f1 100644 --- a/CMakeModules/BoostPython3.cmake +++ b/CMakeModules/BoostPython3.cmake @@ -20,38 +20,50 @@ # "python-$dotsuffix", where suffix is based on the `python_version` argument. # One can supply a custom component name by setting the # `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time. - set( CALAMARES_BOOST_PYTHON3_COMPONENT python3 CACHE STRING "Name of the Boost.Python component. If Boost.Python is installed as libboost_python-foo.so then this variable should be set to 'python-foo'." ) -macro( find_boost_python3 boost_version python_version found_var ) - set( ${found_var} OFF ) +include(FindPackageHandleStandardArgs) - # turns "3.4.123abc" into "34" - string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1\\2" _fbp_python_short_version ${python_version} ) - - foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-py${_fbp_python_short_version} ) +macro( _find_boost_python3_int boost_version componentname found_var ) + foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} ${componentname} ) find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} ) string( TOUPPER ${_fbp_name} _fbp_uc_name ) if( Boost_${_fbp_uc_name}_FOUND ) - set( ${found_var} ON ) + set( ${found_var} ${_fbp_uc_name} ) break() endif() endforeach() +endmacro() - if (NOT ${found_var}) +macro( find_boost_python3 boost_version python_version found_var ) + set( ${found_var} OFF ) + set( _fbp_found OFF ) + + # turns "3.4.123abc" into "34" + string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1\\2" _fbp_python_short_version ${python_version} ) + _find_boost_python3_int( ${boost_version} python-py${_fbp_python_short_version} _fbp_found ) + + if (NOT _fbp_found) # The following loop changes the searched name for Gentoo based distributions # turns "3.4.123abc" into "3.4" string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1.\\2" _fbp_python_short_version ${python_version} ) - foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-${_fbp_python_short_version} ) - find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} ) - string( TOUPPER ${_fbp_name} _fbp_uc_name ) - if( Boost_${_fbp_uc_name}_FOUND ) - set( ${found_var} ON ) - break() - endif() - endforeach() + _find_boost_python3_int( ${boost_version} python-${_fbp_python_short_version} _fbp_found ) endif() + + set( ${found_var} ${_fbp_found} ) + + # This is superfluous, but allows proper reporting in the features list + if ( _fbp_found ) + find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} ) + else() + find_package( Boost ${boost_version} COMPONENTS Python ) + endif() + set_package_properties( + Boost PROPERTIES + DESCRIPTION "A C++ library which enables seamless interoperability between C++ and Python 3." + URL "http://www.boost.org" + ) endmacro() diff --git a/CMakeModules/CMakeColors.cmake b/CMakeModules/CMakeColors.cmake index 4b96ac8a8..97739627d 100644 --- a/CMakeModules/CMakeColors.cmake +++ b/CMakeModules/CMakeColors.cmake @@ -1,8 +1,16 @@ if(NOT WIN32) - # [ -t 2 ] tests whether stderr is interactive. - # The negation '!' is because for POSIX shells, 0 is true and 1 is false. - execute_process(COMMAND test ! -t 2 RESULT_VARIABLE IS_STDERR_INTERACTIVE) - if(IS_STDERR_INTERACTIVE) + set(_use_color ON) + if("0" STREQUAL "$ENV{CLICOLOR}") + set(_use_color OFF) + endif() + if("0" STREQUAL "$ENV{CLICOLOR_FORCE}") + set(_use_color OFF) + endif() + if(NOT CMAKE_COLOR_MAKEFILE) + set(_use_color OFF) + endif() + + if(_use_color) string(ASCII 27 Esc) set(ColorReset "${Esc}[m") set(ColorBold "${Esc}[1m") @@ -20,5 +28,5 @@ if(NOT WIN32) set(BoldMagenta "${Esc}[1;35m") set(BoldCyan "${Esc}[1;36m") set(BoldWhite "${Esc}[1;37m") - endif(IS_STDERR_INTERACTIVE) + endif() endif() diff --git a/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake similarity index 100% rename from CalamaresAddBrandingSubdirectory.cmake rename to CMakeModules/CalamaresAddBrandingSubdirectory.cmake diff --git a/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake similarity index 94% rename from CalamaresAddLibrary.cmake rename to CMakeModules/CalamaresAddLibrary.cmake index a774b1f31..f183277c8 100644 --- a/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -45,9 +45,6 @@ function(calamares_add_library) add_library(${target} SHARED ${LIBRARY_SOURCES}) endif() - # HACK: add qt modules - every lib should define its own set of modules - qt5_use_modules(${target} Core Gui Widgets ${LIBRARY_QT5_MODULES}) - # definitions - can this be moved into set_target_properties below? add_definitions(${QT_DEFINITIONS}) set_target_properties(${target} PROPERTIES AUTOMOC TRUE) @@ -67,9 +64,15 @@ function(calamares_add_library) endif() # add link targets - target_link_libraries(${target} ${CALAMARES_LIBRARIES}) + target_link_libraries(${target} + LINK_PUBLIC ${CALAMARES_LIBRARIES} + Qt5::Core + Qt5::Gui + Qt5::Widgets + ${LIBRARY_QT5_MODULES} + ) if(LIBRARY_LINK_LIBRARIES) - target_link_libraries(${target} ${LIBRARY_LINK_LIBRARIES}) + target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES}) endif() if(LIBRARY_LINK_PRIVATE_LIBRARIES) target_link_libraries(${target} LINK_PRIVATE ${LIBRARY_LINK_PRIVATE_LIBRARIES}) diff --git a/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake similarity index 73% rename from CalamaresAddModuleSubdirectory.cmake rename to CMakeModules/CalamaresAddModuleSubdirectory.cmake index 73b6bb06f..1b60c59a7 100644 --- a/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -1,4 +1,5 @@ include( CMakeColors ) +include( CalamaresAddTranslations ) set( MODULE_DATA_DESTINATION share/calamares/modules ) @@ -21,7 +22,7 @@ function( calamares_add_module_subdirectory ) configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY ) get_filename_component( FLEXT ${MODULE_FILE} EXT ) - if( "${FLEXT}" STREQUAL ".conf" ) + if( "${FLEXT}" STREQUAL ".conf" AND INSTALL_CONFIG) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE} DESTINATION ${MODULE_DATA_DESTINATION} ) list( APPEND MODULE_CONFIG_FILES ${MODULE_FILE} ) @@ -38,10 +39,24 @@ function( calamares_add_module_subdirectory ) # message( " ${Green}FILES:${ColorReset} ${MODULE_FILES}" ) message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" ) if( MODULE_CONFIG_FILES ) - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" ) + if (INSTALL_CONFIG) + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" ) + else() + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => [Skipping installation]" ) + endif() endif() message( "" ) endif() + # We copy over the lang directory, if any + if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) + install_calamares_gettext_translations( + ${SUBDIRECTORY} + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" + FILENAME ${SUBDIRECTORY}.mo + RENAME calamares-${SUBDIRECTORY}.mo + ) + endif() + else() message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." ) message( "" ) diff --git a/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake similarity index 58% rename from CalamaresAddPlugin.cmake rename to CMakeModules/CalamaresAddPlugin.cmake index fb9d0086b..658fd364a 100644 --- a/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -1,12 +1,35 @@ +# Convenience function for creating a C++ (qtplugin) module for Calamares. +# This function provides cmake-time feedback about the plugin, adds +# targets for compilation and boilerplate information, and creates +# a module.desc with standard values if none is provided (which only +# happens for very unusual plugins). +# +# Usage: +# +# calamares_add_plugin( +# module-name +# TYPE +# EXPORT_MACRO macro-name +# SOURCES source-file... +# UI ui-file... +# LINK_LIBRARIES lib... +# LINK_PRIVATE_LIBRARIES lib... +# COMPILE_DEFINITIONS def... +# RESOURCES resource-file +# [NO_INSTALL] +# [SHARED_LIB] +# ) + include( CMakeParseArguments ) -include( ${CALAMARES_CMAKE_DIR}/CalamaresAddLibrary.cmake ) +include( CalamaresAddLibrary ) +include( CMakeColors ) function( calamares_add_plugin ) # parse arguments ( name needs to be saved before passing ARGN into the macro ) set( NAME ${ARGV0} ) set( options NO_INSTALL SHARED_LIB ) set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES ) - set( multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS ) + set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS ) cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) set( PLUGIN_NAME ${NAME} ) set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} ) @@ -17,18 +40,22 @@ function( calamares_add_plugin ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" ) set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" ) - include( CMakeColors ) message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" ) if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" ) message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" ) + message( " ${Green}LINK_PRIVATE_LIBRARIES:${ColorReset} ${PLUGIN_LINK_PRIVATE_LIBRARIES}" ) # message( " ${Green}SOURCES:${ColorReset} ${PLUGIN_SOURCES}" ) # message( " ${Green}UI:${ColorReset} ${PLUGIN_UI}" ) # message( " ${Green}EXPORT_MACRO:${ColorReset} ${PLUGIN_EXPORT_MACRO}" ) # message( " ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}" ) message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" ) if( PLUGIN_CONFIG_FILES ) - message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${PLUGIN_DATA_DESTINATION}" ) + if ( INSTALL_CONFIG ) + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${PLUGIN_DATA_DESTINATION}" ) + else() + message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => [Skipping installation]" ) + endif() endif() if( PLUGIN_RESOURCES ) message( " ${Green}RESOURCES:${ColorReset} ${PLUGIN_RESOURCES}" ) @@ -60,6 +87,10 @@ function( calamares_add_plugin ) list( APPEND calamares_add_library_args "LINK_LIBRARIES" "${PLUGIN_LINK_LIBRARIES}" ) endif() + if( PLUGIN_LINK_PRIVATE_LIBRARIES ) + list( APPEND calamares_add_library_args "LINK_PRIVATE_LIBRARIES" "${PLUGIN_LINK_PRIVATE_LIBRARIES}" ) + endif() + if( PLUGIN_COMPILE_DEFINITIONS ) list( APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS} ) endif() @@ -74,13 +105,23 @@ function( calamares_add_plugin ) calamares_add_library( ${calamares_add_library_args} ) - configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY ) + if ( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_DESC_FILE} ) + configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY ) + else() + set( _file ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} ) + set( _type ${PLUGIN_TYPE} ) + file( WRITE ${_file} "# AUTO-GENERATED metadata file\n# Syntax is YAML 1.2\n---\n" ) + file( APPEND ${_file} "type: \"${_type}\"\nname: \"${PLUGIN_NAME}\"\ninterface: \"qtplugin\"\nload: \"lib${target}.so\"\n" ) + endif() + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} DESTINATION ${PLUGIN_DESTINATION} ) - foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} - DESTINATION ${PLUGIN_DATA_DESTINATION} ) - endforeach() + if ( INSTALL_CONFIG ) + foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} + DESTINATION ${PLUGIN_DATA_DESTINATION} ) + endforeach() + endif() endfunction() diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake new file mode 100644 index 000000000..b0a623908 --- /dev/null +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -0,0 +1,121 @@ +include( CMakeParseArguments ) + +# Internal macro for adding the C++ / Qt translations to the +# build and install tree. Should be called only once, from +# src/calamares/CMakeLists.txt. +macro(add_calamares_translations language) + list( APPEND CALAMARES_LANGUAGES ${ARGV} ) + + set( calamares_i18n_qrc_content "\n" ) + + # calamares and qt language files + set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) + foreach( lang ${CALAMARES_LANGUAGES} ) + set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}calamares_${lang}.qm\n" ) + list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/calamares_${lang}.ts" ) + endforeach() + + set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) + set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) + + file( WRITE ${CMAKE_BINARY_DIR}/lang/calamares_i18n.qrc "${calamares_i18n_qrc_content}" ) + + qt5_add_translation(QM_FILES ${TS_FILES}) + + ## HACK HACK HACK - around rcc limitations to allow out of source-tree building + set( trans_file calamares_i18n ) + set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) + set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) + set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) + + # Copy the QRC file to the output directory + add_custom_command( + OUTPUT ${trans_infile} + COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile} + MAIN_DEPENDENCY ${trans_srcfile} + ) + + # Run the resource compiler (rcc_options should already be set) + add_custom_command( + OUTPUT ${trans_outfile} + COMMAND "${Qt5Core_RCC_EXECUTABLE}" + ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} + MAIN_DEPENDENCY ${trans_infile} + DEPENDS ${QM_FILES} + ) +endmacro() + +# Internal macro for Python translations +# +# Translations of the Python modules that don't have their own +# lang/ subdirectories -- these are collected in top-level +# lang/python//LC_MESSAGES/python.mo +macro(add_calamares_python_translations language) + set( CALAMARES_LANGUAGES "" ) + list( APPEND CALAMARES_LANGUAGES ${ARGV} ) + + install_calamares_gettext_translations( python + SOURCE_DIR ${CMAKE_SOURCE_DIR}/lang/python + FILENAME python.mo + RENAME calamares-python.mo + ) +endmacro() + +# Installs a directory containing language-code-labeled subdirectories with +# gettext data into the appropriate system directory. Allows renaming the +# .mo files during install to avoid namespace clashes. +# +# install_calamares_gettext_translations( +# NAME +# SOURCE_DIR path/to/lang +# FILENAME +# [RENAME ] +# ) +# +# For all of the (global) translation languages enabled for Calamares, +# try installing $SOURCE_DIR/$lang/LC_MESSAGES/.mo into the +# system gettext data directory (e.g. share/locale/), possibly renaming +# filename.mo to renamed.mo in the process. +function( install_calamares_gettext_translations ) + # parse arguments ( name needs to be saved before passing ARGN into the macro ) + set( NAME ${ARGV0} ) + set( oneValueArgs NAME SOURCE_DIR FILENAME RENAME ) + cmake_parse_arguments( TRANSLATION "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + if( NOT TRANSLATION_NAME ) + set( TRANSLATION_NAME ${NAME} ) + endif() + if( NOT TRANSLATION_FILENAME ) + set( TRANSLATION_FILENAME "${TRANSLATION_NAME}.mo" ) + endif() + if( NOT TRANSLATION_RENAME ) + set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" ) + endif() + + message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}") + message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}") + + set( TRANSLATION_NAME "${NAME}" ) + set( INSTALLED_TRANSLATIONS "" ) + foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global + set( lang_mo "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_FILENAME}" ) + if( lang STREQUAL "en" ) + message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" ) + else( EXISTS ${lang_mo} ) + list( APPEND INSTALLED_LANGUAGES "${lang}" ) + install( + FILES ${lang_mo} + DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${lang}/LC_MESSAGES/ + RENAME ${TRANSLATION_RENAME} + ) + # TODO: make translations available in build dir too, for + # translation when running calamares -d from builddir. + set(_build_lc ${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/) + file(COPY ${lang_mo} DESTINATION ${_build_lc}) + if (NOT TRANSLATION_FILENAME STREQUAL TRANSLATION_RENAME) + file(RENAME ${_build_lc}${TRANSLATION_FILENAME} ${_build_lc}${TRANSLATION_RENAME}) + endif() + + endif() + endforeach() +endfunction() diff --git a/CMakeModules/FindCrypt.cmake b/CMakeModules/FindCrypt.cmake new file mode 100644 index 000000000..d17d70178 --- /dev/null +++ b/CMakeModules/FindCrypt.cmake @@ -0,0 +1,34 @@ +# - Find libcrypt +# Find the libcrypt includes and the libcrypt libraries +# This module defines +# LIBCRYPT_INCLUDE_DIR, root crypt include dir. Include crypt with crypt.h +# LIBCRYPT_LIBRARY, the path to libcrypt +# LIBCRYPT_FOUND, whether libcrypt was found + +if( CMAKE_SYSTEM MATCHES "FreeBSD" ) + # FreeBSD has crypt(3) declared in unistd.h, which lives in + # libc; the libcrypt found here is not used. + find_path( CRYPT_INCLUDE_DIR NAMES unistd.h ) + add_definitions( -DNO_CRYPT_H ) +else() + find_path( CRYPT_INCLUDE_DIR + NAMES crypt.h + HINTS + ${CMAKE_INSTALL_INCLUDEDIR} + NO_CACHE + ) +endif() + +find_library( CRYPT_LIBRARIES + NAMES crypt + HINTS + ${CMAKE_INSTALL_LIBDIR} +) + +include( FindPackageHandleStandardArgs ) +find_package_handle_standard_args( + Crypt + REQUIRED_VARS CRYPT_LIBRARIES CRYPT_INCLUDE_DIR +) + +mark_as_advanced( CRYPT_INCLUDE_DIR CRYPT_LIBRARIES ) diff --git a/src/modules/welcome/CMakeModules/FindLIBPARTED.cmake b/CMakeModules/FindLIBPARTED.cmake similarity index 100% rename from src/modules/welcome/CMakeModules/FindLIBPARTED.cmake rename to CMakeModules/FindLIBPARTED.cmake diff --git a/CMakeModules/FindPythonQt.cmake b/CMakeModules/FindPythonQt.cmake new file mode 100644 index 000000000..d016b57b1 --- /dev/null +++ b/CMakeModules/FindPythonQt.cmake @@ -0,0 +1,77 @@ +# Find PythonQt +# +# Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES +# + +# Python is required +find_package(PythonLibs) +if(NOT PYTHONLIBS_FOUND) + message(FATAL_ERROR "error: Python is required to build PythonQt") +endif() + +if(NOT EXISTS "${PYTHONQT_INSTALL_DIR}") + find_path(PYTHONQT_INSTALL_DIR include/PythonQt/PythonQt.h DOC "Directory where PythonQt was installed.") +endif() +# XXX Since PythonQt 3.0 is not yet cmakeified, depending +# on how PythonQt is built, headers will not always be +# installed in "include/PythonQt". That is why "src" +# is added as an option. See [1] for more details. +# [1] https://github.com/commontk/CTK/pull/538#issuecomment-86106367 +find_path(PYTHONQT_INCLUDE_DIR PythonQt.h + PATHS "${PYTHONQT_INSTALL_DIR}/include/PythonQt" + "${PYTHONQT_INSTALL_DIR}/src" + DOC "Path to the PythonQt include directory") + +# Minimum v3.1 is needed +find_library(PYTHONQT_LIBRARY_RELEASE PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") +find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt${CTK_CMAKE_DEBUG_POSTFIX} PythonQt${CMAKE_DEBUG_POSTFIX} PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") +find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") +find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") + +# Also check for v3.2+ +find_library(PYTHONQT_LIBRARY_RELEASE PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") +find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") +find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") +find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") + +set(PYTHONQT_LIBRARY) +if(PYTHONQT_LIBRARY_RELEASE) + list(APPEND PYTHONQT_LIBRARY optimized ${PYTHONQT_LIBRARY_RELEASE}) +endif() +if(PYTHONQT_LIBRARY_DEBUG) + list(APPEND PYTHONQT_LIBRARY debug ${PYTHONQT_LIBRARY_DEBUG}) +endif() + +set(PYTHONQT_QTALL_LIBRARY) +if(PYTHONQT_QTALL_LIBRARY_RELEASE) + list(APPEND PYTHONQT_QTALL_LIBRARY optimized ${PYTHONQT_QTALL_LIBRARY_RELEASE}) +endif() +if(PYTHONQT_QTALL_LIBRARY_DEBUG) + list(APPEND PYTHONQT_QTALL_LIBRARY debug ${PYTHONQT_QTALL_LIBRARY_DEBUG}) +endif() + +mark_as_advanced(PYTHONQT_INSTALL_DIR) +mark_as_advanced(PYTHONQT_INCLUDE_DIR) +mark_as_advanced(PYTHONQT_LIBRARY_RELEASE) +mark_as_advanced(PYTHONQT_LIBRARY_DEBUG) +mark_as_advanced(PYTHONQT_QTALL_LIBRARY_RELEASE) +mark_as_advanced(PYTHONQT_QTALL_LIBRARY_DEBUG) + +# On linux, also find libutil +if(UNIX AND NOT APPLE) + find_library(PYTHONQT_LIBUTIL util) + mark_as_advanced(PYTHONQT_LIBUTIL) +endif() + +# All upper case _FOUND variable is maintained for backwards compatibility. +set(PYTHONQT_FOUND 0) +set(PythonQt_FOUND 0) + +if(PYTHONQT_INCLUDE_DIR AND PYTHONQT_LIBRARY AND PYTHONQT_QTALL_LIBRARY) + # Currently CMake'ified PythonQt only supports building against a python Release build. + # This applies independently of CTK build type (Release, Debug, ...) + add_definitions(-DPYTHONQT_USE_RELEASE_PYTHON_FALLBACK) + set(PYTHONQT_FOUND 1) + set(PythonQt_FOUND ${PYTHONQT_FOUND}) + set(PYTHONQT_LIBRARIES ${PYTHONQT_LIBRARY} ${PYTHONQT_LIBUTIL} ${PYTHONQT_QTALL_LIBRARY}) +endif() diff --git a/CMakeModules/FindYamlCpp.cmake b/CMakeModules/FindYAMLCPP.cmake similarity index 100% rename from CMakeModules/FindYamlCpp.cmake rename to CMakeModules/FindYAMLCPP.cmake diff --git a/CMakeModules/IncludeKPMCore.cmake b/CMakeModules/IncludeKPMCore.cmake new file mode 100644 index 000000000..b06299d91 --- /dev/null +++ b/CMakeModules/IncludeKPMCore.cmake @@ -0,0 +1,17 @@ +# Shared CMake core for finding KPMCore +# +# This is wrapped into a CMake include file because there's a bunch of +# pre-requisites that need searching for before looking for KPMCore. +# If you just do find_package( KPMCore ) without finding the things +# it links against first, you get CMake errors. +# +# +find_package(ECM 5.10.0 REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) + +include(KDEInstallDirs) +include(GenerateExportHeader) +find_package( KF5 REQUIRED CoreAddons ) +find_package( KF5 REQUIRED Config I18n IconThemes KIO Service ) + +find_package( KPMcore 3.0.3 REQUIRED ) diff --git a/CMakeModules/MacroLogFeature.cmake b/CMakeModules/MacroLogFeature.cmake deleted file mode 100644 index 45e27b6df..000000000 --- a/CMakeModules/MacroLogFeature.cmake +++ /dev/null @@ -1,157 +0,0 @@ -# This file defines the Feature Logging macros. -# -# MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]]) -# Logs the information so that it can be displayed at the end -# of the configure run -# VAR : TRUE or FALSE, indicating whether the feature is supported -# FEATURE: name of the feature, e.g. "libjpeg" -# DESCRIPTION: description what this feature provides -# URL: home page -# REQUIRED: TRUE or FALSE, indicating whether the featue is required -# MIN_VERSION: minimum version number. empty string if unneeded -# COMMENTS: More info you may want to provide. empty string if unnecessary -# -# MACRO_DISPLAY_FEATURE_LOG() -# Call this to display the collected results. -# Exits CMake with a FATAL error message if a required feature is missing -# -# Example: -# -# INCLUDE(MacroLogFeature) -# -# FIND_PACKAGE(JPEG) -# MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "") -# ... -# MACRO_DISPLAY_FEATURE_LOG() - -# Copyright (c) 2006, Alexander Neundorf, -# Copyright (c) 2006, Allen Winter, -# Copyright (c) 2009, Sebastian Trueg, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -IF (NOT _macroLogFeatureAlreadyIncluded) - SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt) - IF (EXISTS ${_file}) - FILE(REMOVE ${_file}) - ENDIF (EXISTS ${_file}) - - SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) - IF (EXISTS ${_file}) - FILE(REMOVE ${_file}) - ENDIF (EXISTS ${_file}) - - SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) - IF (EXISTS ${_file}) - FILE(REMOVE ${_file}) - ENDIF (EXISTS ${_file}) - - SET(_macroLogFeatureAlreadyIncluded TRUE) - - INCLUDE(FeatureSummary) - -ENDIF (NOT _macroLogFeatureAlreadyIncluded) - - -MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments) - - STRING(TOUPPER "${ARGV4}" _required) - SET(_minvers "${ARGV5}") - SET(_comments "${ARGV6}") - - IF (${_var}) - SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) - ELSE (${_var}) - IF ("${_required}" STREQUAL "TRUE") - SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt) - ELSE ("${_required}" STREQUAL "TRUE") - SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) - ENDIF ("${_required}" STREQUAL "TRUE") - ENDIF (${_var}) - - SET(_logtext " * ${_package}") - - IF (NOT ${_var}) - IF (${_minvers} MATCHES ".*") - SET(_logtext "${_logtext} (${_minvers} or higher)") - ENDIF (${_minvers} MATCHES ".*") - SET(_logtext "${_logtext} <${_url}>\n ") - ELSE (NOT ${_var}) - SET(_logtext "${_logtext} - ") - ENDIF (NOT ${_var}) - - SET(_logtext "${_logtext}${_description}") - - IF (NOT ${_var}) - IF (${_comments} MATCHES ".*") - SET(_logtext "${_logtext}\n ${_comments}") - ENDIF (${_comments} MATCHES ".*") -# SET(_logtext "${_logtext}\n") #double-space missing features? - ENDIF (NOT ${_var}) - - FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n") - - IF(COMMAND SET_PACKAGE_INFO) # in FeatureSummary.cmake since CMake 2.8.3 - SET_PACKAGE_INFO("${_package}" "\"${_description}\"" "${_url}" "\"${_comments}\"") - ENDIF(COMMAND SET_PACKAGE_INFO) - -ENDMACRO(MACRO_LOG_FEATURE) - - -MACRO(MACRO_DISPLAY_FEATURE_LOG) - IF(COMMAND FEATURE_SUMMARY) # in FeatureSummary.cmake since CMake 2.8.3 - FEATURE_SUMMARY(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/FindPackageLog.txt - WHAT ALL) - ENDIF(COMMAND FEATURE_SUMMARY) - - SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt) - SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt) - SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt) - - IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) - SET(_printSummary TRUE) - ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile}) - - IF(_printSummary) - SET(_missingDeps 0) - IF (EXISTS ${_enabledFile}) - FILE(READ ${_enabledFile} _enabled) - FILE(REMOVE ${_enabledFile}) - SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}") - ENDIF (EXISTS ${_enabledFile}) - - - IF (EXISTS ${_disabledFile}) - SET(_missingDeps 1) - FILE(READ ${_disabledFile} _disabled) - FILE(REMOVE ${_disabledFile}) - SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}") - ENDIF (EXISTS ${_disabledFile}) - - - IF (EXISTS ${_missingFile}) - SET(_missingDeps 1) - FILE(READ ${_missingFile} _requirements) - SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}") - FILE(REMOVE ${_missingFile}) - SET(_haveMissingReq 1) - ENDIF (EXISTS ${_missingFile}) - - - IF (NOT ${_missingDeps}) - SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.") - ENDIF (NOT ${_missingDeps}) - - - MESSAGE(${_summary}) - MESSAGE("-----------------------------------------------------------------------------\n") - - - IF(_haveMissingReq) - MESSAGE(FATAL_ERROR "Exiting: Missing Requirements") - ENDIF(_haveMissingReq) - - ENDIF(_printSummary) - -ENDMACRO(MACRO_DISPLAY_FEATURE_LOG) diff --git a/CMakeModules/MacroOptionalFindPackage.cmake b/CMakeModules/MacroOptionalFindPackage.cmake deleted file mode 100644 index d4ed48e33..000000000 --- a/CMakeModules/MacroOptionalFindPackage.cmake +++ /dev/null @@ -1,48 +0,0 @@ -# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION() -# MACRO_OPTIONAL_FIND_PACKAGE( [QUIT] ) -# This macro is a combination of OPTION() and FIND_PACKAGE(), it -# works like FIND_PACKAGE(), but additionally it automatically creates -# an option name WITH_, which can be disabled via the cmake GUI. -# or via -DWITH_=OFF -# The standard _FOUND variables can be used in the same way -# as when using the normal FIND_PACKAGE() - -# Copyright (c) 2006-2010 Alexander Neundorf, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -# This is just a helper macro to set a bunch of variables empty. -# We don't know whether the package uses UPPERCASENAME or CamelCaseName, so we try both: -macro(_MOFP_SET_EMPTY_IF_DEFINED _name _var) - if(DEFINED ${_name}_${_var}) - set(${_name}_${_var} "") - endif(DEFINED ${_name}_${_var}) - - string(TOUPPER ${_name} _nameUpper) - if(DEFINED ${_nameUpper}_${_var}) - set(${_nameUpper}_${_var} "") - endif(DEFINED ${_nameUpper}_${_var}) -endmacro(_MOFP_SET_EMPTY_IF_DEFINED _package _var) - - -macro (MACRO_OPTIONAL_FIND_PACKAGE _name ) - option(WITH_${_name} "Search for ${_name} package" ON) - if (WITH_${_name}) - find_package(${_name} ${ARGN}) - else (WITH_${_name}) - string(TOUPPER ${_name} _nameUpper) - set(${_name}_FOUND FALSE) - set(${_nameUpper}_FOUND FALSE) - - _mofp_set_empty_if_defined(${_name} INCLUDE_DIRS) - _mofp_set_empty_if_defined(${_name} INCLUDE_DIR) - _mofp_set_empty_if_defined(${_name} INCLUDES) - _mofp_set_empty_if_defined(${_name} LIBRARY) - _mofp_set_empty_if_defined(${_name} LIBRARIES) - _mofp_set_empty_if_defined(${_name} LIBS) - _mofp_set_empty_if_defined(${_name} FLAGS) - _mofp_set_empty_if_defined(${_name} DEFINITIONS) - endif (WITH_${_name}) -endmacro (MACRO_OPTIONAL_FIND_PACKAGE) - diff --git a/CalamaresUse.cmake.in b/CalamaresUse.cmake.in deleted file mode 100644 index 4e8d67ba5..000000000 --- a/CalamaresUse.cmake.in +++ /dev/null @@ -1,12 +0,0 @@ -#FIXME: this duplicates top level cmakelists: how can we reduce code duplication? - -find_package( Qt5 5.3.0 CONFIG REQUIRED Core Gui Widgets LinguistTools ) - -if(NOT CALAMARES_CMAKE_DIR) - set(CALAMARES_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}) -endif() - -include( "${CALAMARES_CMAKE_DIR}/CalamaresAddLibrary.cmake" ) -include( "${CALAMARES_CMAKE_DIR}/CalamaresAddModuleSubdirectory.cmake" ) -include( "${CALAMARES_CMAKE_DIR}/CalamaresAddPlugin.cmake" ) -include( "${CALAMARES_CMAKE_DIR}/CalamaresAddBrandingSubdirectory.cmake" ) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..cd0e4f365 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,2 @@ +FROM kdeneon/all +RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools diff --git a/LICENSES/GPLv3+-ImageRegistry b/LICENSES/GPLv3+-ImageRegistry new file mode 100644 index 000000000..362e89766 --- /dev/null +++ b/LICENSES/GPLv3+-ImageRegistry @@ -0,0 +1,16 @@ +/* + * Copyright 2012, Christian Muehlhaeuser + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ diff --git a/LICENSES/GPLv3+-QJsonModel b/LICENSES/GPLv3+-QJsonModel new file mode 100644 index 000000000..8a8e272c0 --- /dev/null +++ b/LICENSES/GPLv3+-QJsonModel @@ -0,0 +1,18 @@ +/*********************************************** + Copyright (C) 2014 Schutz Sacha + This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). + + QJsonModel is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QJsonModel is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QJsonModel. If not, see . + +**********************************************/ diff --git a/LICENSES/LGPLv2.1-Presentation b/LICENSES/LGPLv2.1-Presentation new file mode 100644 index 000000000..1bb6461eb --- /dev/null +++ b/LICENSES/LGPLv2.1-Presentation @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QML Presentation System. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QML Presentation System. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + diff --git a/LICENSES/LGPLv2.1-Presentation-Exception b/LICENSES/LGPLv2.1-Presentation-Exception new file mode 100644 index 000000000..7e2e30ff9 --- /dev/null +++ b/LICENSES/LGPLv2.1-Presentation-Exception @@ -0,0 +1,22 @@ +Digia Qt LGPL Exception version 1.1 + +As an additional permission to the GNU Lesser General Public License version +2.1, the object code form of a "work that uses the Library" may incorporate +material from a header file that is part of the Library. You may distribute +such object code under terms of your choice, provided that: + (i) the header files of the Library have not been modified; and + (ii) the incorporated material is limited to numerical parameters, data + structure layouts, accessors, macros, inline functions and + templates; and + (iii) you comply with the terms of Section 6 of the GNU Lesser General + Public License version 2.1. + +Moreover, you may apply this exception to a modified version of the Library, +provided that such modification does not involve copying material from the +Library into the modified Library's header files unless such material is +limited to (i) numerical parameters; (ii) data structure layouts; +(iii) accessors; and (iv) small macros, templates and inline functions of +five lines or less in length. + +Furthermore, you are not required to apply this additional permission to a +modified version of the Library. diff --git a/LICENSES/MIT-QtWaitingSpinner b/LICENSES/MIT-QtWaitingSpinner new file mode 100644 index 000000000..c85c97aeb --- /dev/null +++ b/LICENSES/MIT-QtWaitingSpinner @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Original Work Copyright (c) 2012-2015 Alexander Turkin +Modified 2014 by William Hallatt + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 6958ef2c6..dcb5e3b67 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,19 @@ [![GitHub release](https://img.shields.io/github/release/calamares/calamares.svg)](https://github.com/calamares/calamares/releases) [![Build Status](https://calamares.io/ci/buildStatus/icon?job=calamares-post_commit)](https://calamares.io/ci/job/calamares-post_commit/) +[![Travis Build Status](https://travis-ci.org/calamares/calamares.svg?branch=master)](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) -| [Report a Bug](https://calamares.io/bugs/) | [Contribute](https://github.com/calamares/calamares/blob/master/HACKING.md) | [Translate](https://www.transifex.com/projects/p/calamares/) | Freenode (IRC): #calamares | -|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:| +| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Contribute](https://github.com/calamares/calamares/blob/master/ci/HACKING.md) | [Translate](https://www.transifex.com/projects/p/calamares/) | Freenode (IRC): #calamares | [Wiki](https://github.com/calamares/calamares/wiki) | +|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:| ### Dependencies Main: * Compiler with C++11 support: GCC >= 4.9.0 or Clang >= 3.5.1 -* CMake >= 2.8.12 -* Qt >= 5.3 +* CMake >= 3.2 +* Qt >= 5.6 * yaml-cpp >= 0.5.1 * Python >= 3.3 * Boost.Python >= 1.55.0 @@ -22,52 +23,18 @@ Main: Modules: * welcome: - * NetworkManager - * UPower + * NetworkManager + * UPower * partition: - * extra-cmake-modules - * KF5: KCoreAddons, KConfig, KI18n, KIconThemes, KIO, KService - * KPMcore >= 2.1 - * sgdisk + * extra-cmake-modules + * KF5: KCoreAddons, KConfig, KI18n, KIconThemes, KIO, KService + * KPMcore >= 3.0.3 * bootloader: - * systemd-boot or GRUB - * sgdisk + * systemd-boot or GRUB * unpackfs: - * squashfs-tools - * rsync - - -### Deployment -[__Setting up branding__](https://github.com/calamares/calamares/blob/master/src/branding/README.md) - -[__Working with modules__](https://github.com/calamares/calamares/blob/master/src/modules/README.md) - + * squashfs-tools + * rsync ### Building -Clone Calamares from GitHub and `cd` into the calamares directory, then: -``` -$ git submodule init -$ git submodule update -$ mkdir build -$ cd build -$ cmake -DCMAKE_BUILD_TYPE=Debug .. -$ make -``` -#### Supported variables for CMake - * `WITH_PYTHON` - if this is set to false, the Python module interface will not be built. Default is true. - * `SKIP_MODULES` - takes a space-separated list of module names that should not be built even if present in `src/modules` (e.g. `cmake -DSKIP_MODULES="partition mount umount welcome" ..`). Default is empty. - -### Design Notes -Calamares is currently split as follows: - 1. __libcalamares__ - The back-end library. - * Only depends on QtCore, yaml-cpp, Python and Boost.Python. - * Provides a job queue and generic jobs. - * Comes with 3 job interfaces: C++, Python and process (the latter is very limited). - 2. __libcalamaresui__ - The front-end library. - * Same dependencies as libcalamares, plus QtWidgets and other Qt modules. - * Comes with a module loading system, for different kinds of plugins. - * Supports branding components. - * Presents a bunch of pages in a scripted order, enqueues jobs in the back-end library. - 3. __calamares__ - The main executable. - * A thin wrapper around libcalamaresui; starts up and plugs together all the parts. +See [wiki](https://github.com/calamares/calamares/wiki) for up to date building and deployment instructions. diff --git a/calamares.desktop b/calamares.desktop index 776d26359..2dcc78fd2 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -3,10 +3,113 @@ Type=Application Version=1.0 Name=Calamares GenericName=System Installer +Keywords=calamares;system;installer TryExec=calamares Exec=pkexec /usr/bin/calamares Comment=Calamares — System Installer Icon=calamares Terminal=false -StartupNotify=false +StartupNotify=true Categories=Qt;System; + + +Name[ca]=Calamares +Icon[ca]=calamares +GenericName[ca]=Instal·lador de sistema +Comment[ca]=Calamares — Instal·lador de sistema +Name[da]=Calamares +Icon[da]=calamares +GenericName[da]=Systeminstallationsprogram +Comment[da]=Calamares — Systeminstallationsprogram +Name[de]=Calamares +Icon[de]=calamares +GenericName[de]=Installation des Betriebssystems +Comment[de]=Calamares - Installation des Betriebssystems +Name[en_GB]=Calamares +Icon[en_GB]=calamares +GenericName[en_GB]=System Installer +Comment[en_GB]=Calamares — System Installer +Name[es]=Calamares +Icon[es]=calamares +GenericName[es]=Instalador del Sistema +Comment[es]=Calamares — Instalador del Sistema +Name[fr]=Calamares +Icon[fr]=calamares +GenericName[fr]=Installateur système +Comment[fr]=Calamares - Installateur système +Name[he]=קלמארס +Icon[he]=קלמארס +GenericName[he]=אשף התקנה +Comment[he]=קלמארס - אשף התקנה +Name[hr]=Calamares +Icon[hr]=calamares +GenericName[hr]=Instalacija sustava +Comment[hr]=Calamares — Instalacija sustava +Name[hu]=Calamares +Icon[hu]=calamares +GenericName[hu]=Rendszer Telepítő +Comment[hu]=Calamares — Rendszer Telepítő +Name[id]=Calamares +Icon[id]=calamares +GenericName[id]=Pemasang +Comment[id]=Calamares — Pemasang Sistem +Name[is]=Calamares +Icon[is]=calamares +GenericName[is]=Kerfis uppsetning +Comment[is]=Calamares — Kerfis uppsetning +Name[ja]=Calamares +Icon[ja]=calamares +GenericName[ja]=システムインストーラー +Comment[ja]=Calamares — システムインストーラー +Name[lt]=Calamares +Icon[lt]=calamares +GenericName[lt]=Sistemos diegimas į kompiuterį +Comment[lt]=Calamares — sistemos diegyklė +Name[nl]=Calamares +Icon[nl]=calamares +GenericName[nl]=Installatieprogramma +Comment[nl]=Calamares — Installatieprogramma +Name[pl]=Calamares +Icon[pl]=calamares +GenericName[pl]=Instalator systemu +Comment[pl]=Calamares — Instalator systemu +Name[pt_BR]=Calamares +Icon[pt_BR]=calamares +GenericName[pt_BR]=Instalador de Sistema +Comment[pt_BR]=Calamares — Instalador de Sistema +Name[cs_CZ]=Calamares +Icon[cs_CZ]=calamares +GenericName[cs_CZ]=Instalační program systému +Comment[cs_CZ]=Calamares - instalační program systému +Name[ru]=Calamares +Icon[ru]=calamares +GenericName[ru]=Установщик системы +Comment[ru]=Calamares - Установщик системы +Name[sk]=Calamares +Icon[sk]=calamares +GenericName[sk]=Inštalátor systému +Comment[sk]=Calamares — Inštalátor systému +Name[sv]=Calamares +Icon[sv]=calamares +GenericName[sv]=Systeminstallerare +Comment[sv]=Calamares — Systeminstallerare +Name[zh_CN]=Calamares +Icon[zh_CN]=calamares +GenericName[zh_CN]=系统安装程序 +Comment[zh_CN]=Calamares — 系统安装程序 +Name[zh_TW]=Calamares +Icon[zh_TW]=calamares +GenericName[zh_TW]=系統安裝程式 +Comment[zh_TW]=Calamares ── 系統安裝程式 +Name[ast]=Calamares +Icon[ast]=calamares +GenericName[ast]=Instalador del sistema +Comment[ast]=Calamares — Instalador del sistema +Name[pt_PT]=Calamares +Icon[pt_PT]=calamares +GenericName[pt_PT]=Instalador de Sistema +Comment[pt_PT]=Calamares - Instalador de Sistema +Name[tr_TR]=Calamares +Icon[tr_TR]=calamares +GenericName[tr_TR]=Sistem Yükleyici +Comment[tr_TR]=Calamares — Sistem Yükleyici diff --git a/HACKING.md b/ci/HACKING.md similarity index 88% rename from HACKING.md rename to ci/HACKING.md index 4881dec03..92d1a5a48 100644 --- a/HACKING.md +++ b/ci/HACKING.md @@ -26,10 +26,21 @@ Example: * along with Calamares. If not, see . */ ``` -Copyright holders must be physical or legal personalities. A statement such as `Copyright 2014, The FooBarQuux project` has no legal value if "The FooBarQuux project" is not the legal name of a person, company, incorporated organization, etc. +Copyright holders must be physical or legal personalities. A statement such as +`Copyright 2014, The FooBarQuux project` has no legal value if "The FooBarQuux +project" is not the legal name of a person, company, incorporated +organization, etc. + +Please add your name to files you touch when making any contribution (even if +it's just a typo-fix which might not be copyrightable in all jurisdictions). Formatting ---------- + +This formatting guide applies to C++ code only; for Python modules, we use +[pycodestyle][https://github.com/PyCQA/pycodestyle] to apply a check of +some PEP8 guidelines. + * Spaces, not tabs. * Indentation is 4 spaces. * Lines should be limited to 90 characters. @@ -70,7 +81,9 @@ You can use the `hacking/calamaresstyle` script to run [astyle](http://astyle.sf.net) on your code and have it formatted the right way. -**NOTE:** An .editorconfig file is included to assist with formatting. In order to take advantage of this functionality you will need to acquire the [EditorConfig](http://editorconfig.org/#download) plug-in for your editor. +**NOTE:** An .editorconfig file is included to assist with formatting. In +order to take advantage of this functionality you will need to acquire the +[EditorConfig](http://editorconfig.org/#download) plug-in for your editor. Naming ------ diff --git a/ci/RELEASE.md b/ci/RELEASE.md new file mode 100644 index 000000000..640a91156 --- /dev/null +++ b/ci/RELEASE.md @@ -0,0 +1,65 @@ +The Calamares release process +============================= + +#### (0) A week in advance +* Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs + automatically once a week on master. +* Build with clang -Weverything, fix what's relevant. + ``` + rm -rf build ; mkdir build ; cd build + CC=clang CXX=clang++ cmake .. && make + ``` +* Make sure all tests pass. + ``` + make + make test + ``` + Note that *all* means all-that-make-sense. The partition-manager tests need + an additional environment variable to be set for some tests, which will + destroy an attached disk. This is not always desirable. +* Notify [translators][transifex]. In the dashboard there is an *Announcements* + link that you can use to send a translation announcement. + +[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview +[transifex]: https://www.transifex.com/calamares/calamares/dashboard/ + +#### (1) Preparation + +* Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set + RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that. +* Check `README.md` and everything in `hacking`, make sure it's all still + relevant. Run `hacking/calamaresstyle` to check the C++ code style. + Python code is checked as part of the Travis CI builds. +* Check defaults in `settings.conf` and other configuration files. +* Pull latest translations from Transifex. This is done nightly on Jenkins, + so a manual pull is rarely necessary. +* Update the list of enabled translation languages in `CMakeLists.txt`. + Check the [translation site][transifex] for the list of languages with + fairly complete translations. + +#### (2) Tarball +* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without + the helper script, + ``` + V=calamares-3.1.5 + git archive -o $V.tar.gz --prefix $V/ master + ``` + Double check that the tarball matches the version number. +* Test tarball. + +#### (3) Tag +* Set RC to zero in `CMakeLists.txt` if this is the actual release. +* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the + tag is shown as a verified tag. Do not sign -rc tags. +* Generate MD5 and SHA256 checksums. +* Upload tarball. +* Announce on mailing list, notify packagers. +* Write release article. + +#### (4) Release day +* Publish tarball. +* Update download page. +* Publish release article on `calamares.io`. +* Publicize on social networks. +* Close associated milestone on GitHub if this is the actual release. +* Publish blog post. diff --git a/hacking/astylerc b/ci/astylerc similarity index 100% rename from hacking/astylerc rename to ci/astylerc diff --git a/ci/buildall.sh b/ci/buildall.sh index b9fdd9cd1..f9fe7adc7 100755 --- a/ci/buildall.sh +++ b/ci/buildall.sh @@ -15,5 +15,5 @@ rm -Rf "$WORKSPACE/build" mkdir "$WORKSPACE/build" cd "$WORKSPACE/build" -CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr .. -nice -n 18 make -j2 \ No newline at end of file +CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DWEBVIEW_FORCE_WEBKIT=1 .. +nice -n 18 make -j2 diff --git a/ci/calamares-coverity.sh b/ci/calamares-coverity.sh index 727ae9af2..c7a6351c5 100755 --- a/ci/calamares-coverity.sh +++ b/ci/calamares-coverity.sh @@ -20,18 +20,18 @@ make DESTDIR="$WORKSPACE/prefix" install cd "$WORKSPACE" -wget https://scan.coverity.com/download/linux-64 --no-check-certificate \ +wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \ --post-data "token=ll90T04noQ4cORJx_zczKA&project=calamares%2Fcalamares" \ - -O coverity_tool.tgz + -O coverity_tool.tar.gz mkdir "$WORKSPACE/coveritytool" -tar xvf coverity_tool.tgz -C "$WORKSPACE/coveritytool" --strip-components 1 +tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2 export PATH="$WORKSPACE/coveritytool/bin:$PATH" rm -Rf "$WORKSPACE/build" mkdir "$WORKSPACE/build" cd "$WORKSPACE/build" -CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr .. +CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DWEBVIEW_FORCE_WEBKIT=1 .. nice -n 18 cov-build --dir cov-int make -j2 tar caf calamares-ci.tar.xz cov-int diff --git a/hacking/calamaresstyle b/ci/calamaresstyle similarity index 100% rename from hacking/calamaresstyle rename to ci/calamaresstyle diff --git a/ci/coverity-model.c b/ci/coverity-model.c new file mode 100644 index 000000000..b4282397c --- /dev/null +++ b/ci/coverity-model.c @@ -0,0 +1,6 @@ +/* Model file for Coverity checker. + See https://scan.coverity.com/tune + + Calamares doesn't seem to geenerate any false positives, + so the model-file is empty. +*/ diff --git a/ci/kpmcore-coverity.sh b/ci/kpmcore-coverity.sh index 7877da86a..9507fc438 100755 --- a/ci/kpmcore-coverity.sh +++ b/ci/kpmcore-coverity.sh @@ -4,11 +4,11 @@ sudo cp ~/jenkins-master/kpluginfactory.h /usr/include/KF5/KCoreAddons cd "$WORKSPACE" -wget https://scan.coverity.com/download/linux-64 --no-check-certificate \ +wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \ --post-data "token=cyOjQZx5EOFLdhfo7ZDa4Q&project=KDE+Partition+Manager+Core+Library+-+KPMcore" \ - -O coverity_tool.tgz + -O coverity_tool.tar.gz mkdir "$WORKSPACE/coveritytool" -tar xvf coverity_tool.tgz -C "$WORKSPACE/coveritytool" --strip-components 1 +tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2 export PATH="$WORKSPACE/coveritytool/bin:$PATH" rm -Rf "$WORKSPACE/build" diff --git a/ci/txpull.sh b/ci/txpull.sh index 8e5c760e3..53a0deaa4 100755 --- a/ci/txpull.sh +++ b/ci/txpull.sh @@ -1,15 +1,87 @@ -#!/bin/bash +#!/bin/sh +# +# Fetch the Transifex translations for Calamares and incorporate them +# into the source tree, adding commits of the different files. -# Make sure we can make Transifex and git operations from the Calamares Docker+Jenkins environment. -cp ~/jenkins-master/.transifexrc ~ -cp ~/jenkins-master/.gitconfig ~ -cp -R ~/jenkins-master/.ssh ~ +### INITIAL SETUP +# +# 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. +# +# +# 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 -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 ; } +### FETCH TRANSLATIONS +# +# Use Transifex client to get translations; this depends on the +# .tx/config file to locate files, and overwrites them in the +# filesystem with new (merged) translations. export QT_SELECT=5 tx pull --force --source --all + +### COMMIT TRANSLATIONS +# +# Produce multiple commits (for the various parts of the i18n +# infrastructure used by Calamares) of the updated translations. +# Try to be a little smart about not committing trivial changes. + +# Who is credited with these CI commits +AUTHOR="--author='Calamares CI '" +# Message to put after the module name +BOILERPLATE="Automatic merge of Transifex translations" + git add --verbose lang/calamares*.ts -git commit --author='Calamares CI ' --message='Automatic merge of Transifex translations' | true -git push --set-upstream origin master +git commit "$AUTHOR" --message="[core] $BOILERPLATE" | true + +rm -f lang/desktop*.desktop +awk ' + BEGIN {skip=0;} + /^# Translations/ {skip=1;} + {if (!skip || (length($0)>1 && $0 != "# Translations")) { + skip=0; print $0; + }}' < calamares.desktop > calamares.desktop.new +mv calamares.desktop.new calamares.desktop +git add --verbose calamares.desktop +git commit "$AUTHOR" --message="[desktop] $BOILERPLATE" | true + +# Transifex updates the PO-Created timestamp also when nothing interesting +# has happened, so drop the files which have just 1 line changed (the +# PO-Created line). This applies only to modules which use po-files. +git diff --numstat src/modules | awk '($1==1 && $2==1){print $3}' | xargs git checkout -- + +# Go through the Python modules; those with a lang/ subdir have their +# own complete gettext-based setup. +for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do + FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f) + if test -n "$FILES" ; then + MODULE_NAME=$(basename ${MODULE_DIR}) + if [ -d ${MODULE_DIR}/lang ]; then + # Convert PO files to MO files + for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do + sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE + msgfmt -o ${POFILE%.po}.mo $POFILE + done + git add --verbose ${MODULE_DIR}/lang/* + git commit "$AUTHOR" --message="[${MODULE_NAME}] $BOILERPLATE" | true + fi + fi +done + +for POFILE in $(find lang -name "python.po") ; do + sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE + msgfmt -o ${POFILE%.po}.mo $POFILE +done +git add --verbose lang/python* +git commit "$AUTHOR" --message="[python] $BOILERPLATE" | true + +# git push --set-upstream origin master diff --git a/ci/txpush.sh b/ci/txpush.sh index f6e7859bc..fe6d7170f 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -1,13 +1,77 @@ -#!/bin/bash +#!/bin/sh +# +# Fetch the Transifex translations for Calamares and incorporate them +# into the source tree, adding commits of the different files. -# Make sure we can make Transifex and git operations from the Calamares Docker+Jenkins environment. -cp ~/jenkins-master/.transifexrc ~ -cp ~/jenkins-master/.gitconfig ~ -cp -R ~/jenkins-master/.ssh ~ +### INITIAL SETUP +# +# 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. +# +# +# 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 -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 ; } + +if test "x$1" = "x--no-tx" ; then + tx() { + echo "Skipped tx $*" + } +fi + +### CREATE TRANSLATIONS +# +# Use local tools (depending on type of source) to create translation +# sources, then push to Transifex export QT_SELECT=5 lupdate src/ -ts -no-obsolete lang/calamares_en.ts -tx push --force --source --no-interactive + +tx push --source --no-interactive -r calamares.calamares-master +tx push --source --no-interactive -r calamares.fdo + +### PYTHON MODULES +# +# The Python tooling depends on the underlying distro to provide +# gettext, and handles two cases: +# +# - python modules with their own lang/ subdir, for larger translations +# - python modules without lang/, which use one shared catalog +# + +PYGETTEXT="xgettext --keyword=_n:1,2 -L python" + +SHARED_PYTHON="" +for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do + FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f) + if test -n "$FILES" ; then + MODULE_NAME=$(basename ${MODULE_DIR}) + if [ -d ${MODULE_DIR}/lang ]; then + ${PYGETTEXT} -p ${MODULE_DIR}/lang -d ${MODULE_NAME} -o ${MODULE_NAME}.pot ${MODULE_DIR}/*.py + POTFILE="${MODULE_DIR}/lang/${MODULE_NAME}.pot" + if [ -f "$POTFILE" ]; then + sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE" + tx set -r calamares.${MODULE_NAME} --source -l en "$POTFILE" + tx push --source --no-interactive -r calamares.${MODULE_NAME} + fi + else + SHARED_PYTHON="$SHARED_PYTHON $FILES" + fi + fi +done + +if test -n "$SHARED_PYTHON" ; then + ${PYGETTEXT} -p lang -d python -o python.pot $SHARED_PYTHON + POTFILE="lang/python.pot" + sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE" + tx set -r calamares.python --source -l en "$POTFILE" + tx push --source --no-interactive -r calamares.python +fi diff --git a/data/example-root/README.md b/data/example-root/README.md new file mode 100644 index 000000000..7173b3eaf --- /dev/null +++ b/data/example-root/README.md @@ -0,0 +1,11 @@ +# Example Filesystem + +This is a filesystem that will be used as / in an example distro, +*if* you build the `example-distro` target and use the default +unpackfs configuration. It should hold files and configuration +bits that need to be on the target system for example purposes. + +It should *not* have a bin/, lib/, sbin/ or lib64/ directory, +since those are copied into the example-distro filesystem +from the build host. + diff --git a/data/example-root/etc/bash.bashrc b/data/example-root/etc/bash.bashrc new file mode 100644 index 000000000..42bd3d007 --- /dev/null +++ b/data/example-root/etc/bash.bashrc @@ -0,0 +1,2 @@ +# Global .profile -- add /sbin_1 +PATH=$PATH:/sbin_1:/xbin diff --git a/data/example-root/etc/group b/data/example-root/etc/group new file mode 100644 index 000000000..1dbf9013e --- /dev/null +++ b/data/example-root/etc/group @@ -0,0 +1 @@ +root:x:0: diff --git a/data/example-root/etc/issue b/data/example-root/etc/issue new file mode 100644 index 000000000..ce0ac58e3 --- /dev/null +++ b/data/example-root/etc/issue @@ -0,0 +1 @@ +This is an example /etc/issue file. diff --git a/data/example-root/etc/locale.gen b/data/example-root/etc/locale.gen new file mode 100644 index 000000000..5e729a18d --- /dev/null +++ b/data/example-root/etc/locale.gen @@ -0,0 +1,486 @@ +# This file lists locales that you wish to have built. You can find a list +# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add +# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change +# this file, you need to rerun locale-gen. + + +# aa_DJ ISO-8859-1 +# aa_DJ.UTF-8 UTF-8 +# aa_ER UTF-8 +# aa_ER@saaho UTF-8 +# aa_ET UTF-8 +# af_ZA ISO-8859-1 +# af_ZA.UTF-8 UTF-8 +# ak_GH UTF-8 +# am_ET UTF-8 +# an_ES ISO-8859-15 +# an_ES.UTF-8 UTF-8 +# anp_IN UTF-8 +# ar_AE ISO-8859-6 +# ar_AE.UTF-8 UTF-8 +# ar_BH ISO-8859-6 +# ar_BH.UTF-8 UTF-8 +# ar_DZ ISO-8859-6 +# ar_DZ.UTF-8 UTF-8 +# ar_EG ISO-8859-6 +# ar_EG.UTF-8 UTF-8 +# ar_IN UTF-8 +# ar_IQ ISO-8859-6 +# ar_IQ.UTF-8 UTF-8 +# ar_JO ISO-8859-6 +# ar_JO.UTF-8 UTF-8 +# ar_KW ISO-8859-6 +# ar_KW.UTF-8 UTF-8 +# ar_LB ISO-8859-6 +# ar_LB.UTF-8 UTF-8 +# ar_LY ISO-8859-6 +# ar_LY.UTF-8 UTF-8 +# ar_MA ISO-8859-6 +# ar_MA.UTF-8 UTF-8 +# ar_OM ISO-8859-6 +# ar_OM.UTF-8 UTF-8 +# ar_QA ISO-8859-6 +# ar_QA.UTF-8 UTF-8 +# ar_SA ISO-8859-6 +# ar_SA.UTF-8 UTF-8 +# ar_SD ISO-8859-6 +# ar_SD.UTF-8 UTF-8 +# ar_SS UTF-8 +# ar_SY ISO-8859-6 +# ar_SY.UTF-8 UTF-8 +# ar_TN ISO-8859-6 +# ar_TN.UTF-8 UTF-8 +# ar_YE ISO-8859-6 +# ar_YE.UTF-8 UTF-8 +# as_IN UTF-8 +# ast_ES ISO-8859-15 +# ast_ES.UTF-8 UTF-8 +# ayc_PE UTF-8 +# az_AZ UTF-8 +# be_BY CP1251 +# be_BY.UTF-8 UTF-8 +# be_BY@latin UTF-8 +# bem_ZM UTF-8 +# ber_DZ UTF-8 +# ber_MA UTF-8 +# bg_BG CP1251 +# bg_BG.UTF-8 UTF-8 +# bhb_IN.UTF-8 UTF-8 +# bho_IN UTF-8 +# bn_BD UTF-8 +# bn_IN UTF-8 +# bo_CN UTF-8 +# bo_IN UTF-8 +# br_FR ISO-8859-1 +# br_FR.UTF-8 UTF-8 +# br_FR@euro ISO-8859-15 +# brx_IN UTF-8 +# bs_BA ISO-8859-2 +# bs_BA.UTF-8 UTF-8 +# byn_ER UTF-8 +# ca_AD ISO-8859-15 +# ca_AD.UTF-8 UTF-8 +# ca_ES ISO-8859-1 +# ca_ES.UTF-8 UTF-8 +# ca_ES.UTF-8@valencia UTF-8 +# ca_ES@euro ISO-8859-15 +# ca_ES@valencia ISO-8859-15 +# ca_FR ISO-8859-15 +# ca_FR.UTF-8 UTF-8 +# ca_IT ISO-8859-15 +# ca_IT.UTF-8 UTF-8 +# ce_RU UTF-8 +# ckb_IQ UTF-8 +# cmn_TW UTF-8 +# crh_UA UTF-8 +# cs_CZ ISO-8859-2 +# cs_CZ.UTF-8 UTF-8 +# csb_PL UTF-8 +# cv_RU UTF-8 +# cy_GB ISO-8859-14 +# cy_GB.UTF-8 UTF-8 +# da_DK ISO-8859-1 +# da_DK.UTF-8 UTF-8 +# de_AT ISO-8859-1 +# de_AT.UTF-8 UTF-8 +# de_AT@euro ISO-8859-15 +# de_BE ISO-8859-1 +# de_BE.UTF-8 UTF-8 +# de_BE@euro ISO-8859-15 +# de_CH ISO-8859-1 +# de_CH.UTF-8 UTF-8 +# de_DE ISO-8859-1 +# de_DE.UTF-8 UTF-8 +# de_DE@euro ISO-8859-15 +# de_LI.UTF-8 UTF-8 +# de_LU ISO-8859-1 +# de_LU.UTF-8 UTF-8 +# de_LU@euro ISO-8859-15 +# doi_IN UTF-8 +# dv_MV UTF-8 +# dz_BT UTF-8 +# el_CY ISO-8859-7 +# el_CY.UTF-8 UTF-8 +# el_GR ISO-8859-7 +# el_GR.UTF-8 UTF-8 +# en_AG UTF-8 +# en_AU ISO-8859-1 +# en_AU.UTF-8 UTF-8 +# en_BW ISO-8859-1 +# en_BW.UTF-8 UTF-8 +# en_CA ISO-8859-1 +en_CA.UTF-8 UTF-8 +# en_DK ISO-8859-1 +# en_DK.ISO-8859-15 ISO-8859-15 +# en_DK.UTF-8 UTF-8 +# en_GB ISO-8859-1 +# en_GB.ISO-8859-15 ISO-8859-15 +# en_GB.UTF-8 UTF-8 +# en_HK ISO-8859-1 +# en_HK.UTF-8 UTF-8 +# en_IE ISO-8859-1 +# en_IE.UTF-8 UTF-8 +# en_IE@euro ISO-8859-15 +# en_IN UTF-8 +# en_NG UTF-8 +# en_NZ ISO-8859-1 +# en_NZ.UTF-8 UTF-8 +# en_PH ISO-8859-1 +# en_PH.UTF-8 UTF-8 +# en_SG ISO-8859-1 +# en_SG.UTF-8 UTF-8 +# en_US ISO-8859-1 +# en_US.ISO-8859-15 ISO-8859-15 +en_US.UTF-8 UTF-8 +# en_ZA ISO-8859-1 +# en_ZA.UTF-8 UTF-8 +# en_ZM UTF-8 +# en_ZW ISO-8859-1 +# en_ZW.UTF-8 UTF-8 +# eo ISO-8859-3 +# eo.UTF-8 UTF-8 +# eo_US.UTF-8 UTF-8 +# es_AR ISO-8859-1 +# es_AR.UTF-8 UTF-8 +# es_BO ISO-8859-1 +# es_BO.UTF-8 UTF-8 +# es_CL ISO-8859-1 +# es_CL.UTF-8 UTF-8 +# es_CO ISO-8859-1 +# es_CO.UTF-8 UTF-8 +# es_CR ISO-8859-1 +# es_CR.UTF-8 UTF-8 +# es_CU UTF-8 +# es_DO ISO-8859-1 +# es_DO.UTF-8 UTF-8 +# es_EC ISO-8859-1 +# es_EC.UTF-8 UTF-8 +# es_ES ISO-8859-1 +# es_ES.UTF-8 UTF-8 +# es_ES@euro ISO-8859-15 +# es_GT ISO-8859-1 +# es_GT.UTF-8 UTF-8 +# es_HN ISO-8859-1 +# es_HN.UTF-8 UTF-8 +# es_MX ISO-8859-1 +# es_MX.UTF-8 UTF-8 +# es_NI ISO-8859-1 +# es_NI.UTF-8 UTF-8 +# es_PA ISO-8859-1 +# es_PA.UTF-8 UTF-8 +# es_PE ISO-8859-1 +# es_PE.UTF-8 UTF-8 +# es_PR ISO-8859-1 +# es_PR.UTF-8 UTF-8 +# es_PY ISO-8859-1 +# es_PY.UTF-8 UTF-8 +# es_SV ISO-8859-1 +# es_SV.UTF-8 UTF-8 +# es_US ISO-8859-1 +# es_US.UTF-8 UTF-8 +# es_UY ISO-8859-1 +# es_UY.UTF-8 UTF-8 +# es_VE ISO-8859-1 +# es_VE.UTF-8 UTF-8 +# et_EE ISO-8859-1 +# et_EE.ISO-8859-15 ISO-8859-15 +# et_EE.UTF-8 UTF-8 +# eu_ES ISO-8859-1 +# eu_ES.UTF-8 UTF-8 +# eu_ES@euro ISO-8859-15 +# eu_FR ISO-8859-1 +# eu_FR.UTF-8 UTF-8 +# eu_FR@euro ISO-8859-15 +# fa_IR UTF-8 +# ff_SN UTF-8 +# fi_FI ISO-8859-1 +# fi_FI.UTF-8 UTF-8 +# fi_FI@euro ISO-8859-15 +# fil_PH UTF-8 +# fo_FO ISO-8859-1 +# fo_FO.UTF-8 UTF-8 +# fr_BE ISO-8859-1 +# fr_BE.UTF-8 UTF-8 +# fr_BE@euro ISO-8859-15 +# fr_CA ISO-8859-1 +# fr_CA.UTF-8 UTF-8 +# fr_CH ISO-8859-1 +# fr_CH.UTF-8 UTF-8 +# fr_FR ISO-8859-1 +# fr_FR.UTF-8 UTF-8 +# fr_FR@euro ISO-8859-15 +# fr_LU ISO-8859-1 +# fr_LU.UTF-8 UTF-8 +# fr_LU@euro ISO-8859-15 +# fur_IT UTF-8 +# fy_DE UTF-8 +# fy_NL UTF-8 +# ga_IE ISO-8859-1 +# ga_IE.UTF-8 UTF-8 +# ga_IE@euro ISO-8859-15 +# gd_GB ISO-8859-15 +# gd_GB.UTF-8 UTF-8 +# gez_ER UTF-8 +# gez_ER@abegede UTF-8 +# gez_ET UTF-8 +# gez_ET@abegede UTF-8 +# gl_ES ISO-8859-1 +# gl_ES.UTF-8 UTF-8 +# gl_ES@euro ISO-8859-15 +# gu_IN UTF-8 +# gv_GB ISO-8859-1 +# gv_GB.UTF-8 UTF-8 +# ha_NG UTF-8 +# hak_TW UTF-8 +# he_IL ISO-8859-8 +# he_IL.UTF-8 UTF-8 +# hi_IN UTF-8 +# hne_IN UTF-8 +# hr_HR ISO-8859-2 +# hr_HR.UTF-8 UTF-8 +# hsb_DE ISO-8859-2 +# hsb_DE.UTF-8 UTF-8 +# ht_HT UTF-8 +# hu_HU ISO-8859-2 +# hu_HU.UTF-8 UTF-8 +# hy_AM UTF-8 +# hy_AM.ARMSCII-8 ARMSCII-8 +# ia_FR UTF-8 +# id_ID ISO-8859-1 +# id_ID.UTF-8 UTF-8 +# ig_NG UTF-8 +# ik_CA UTF-8 +# is_IS ISO-8859-1 +# is_IS.UTF-8 UTF-8 +# it_CH ISO-8859-1 +# it_CH.UTF-8 UTF-8 +# it_IT ISO-8859-1 +# it_IT.UTF-8 UTF-8 +# it_IT@euro ISO-8859-15 +# iu_CA UTF-8 +# iw_IL ISO-8859-8 +# iw_IL.UTF-8 UTF-8 +# ja_JP.EUC-JP EUC-JP +# ja_JP.UTF-8 UTF-8 +# ka_GE GEORGIAN-PS +# ka_GE.UTF-8 UTF-8 +# kk_KZ PT154 +# kk_KZ RK1048 +# kk_KZ.UTF-8 UTF-8 +# kl_GL ISO-8859-1 +# kl_GL.UTF-8 UTF-8 +# km_KH UTF-8 +# kn_IN UTF-8 +# ko_KR.EUC-KR EUC-KR +# ko_KR.UTF-8 UTF-8 +# kok_IN UTF-8 +# ks_IN UTF-8 +# ks_IN@devanagari UTF-8 +# ku_TR ISO-8859-9 +# ku_TR.UTF-8 UTF-8 +# kw_GB ISO-8859-1 +# kw_GB.UTF-8 UTF-8 +# ky_KG UTF-8 +# lb_LU UTF-8 +# lg_UG ISO-8859-10 +# lg_UG.UTF-8 UTF-8 +# li_BE UTF-8 +# li_NL UTF-8 +# lij_IT UTF-8 +# ln_CD UTF-8 +# lo_LA UTF-8 +# lt_LT ISO-8859-13 +# lt_LT.UTF-8 UTF-8 +# lv_LV ISO-8859-13 +# lv_LV.UTF-8 UTF-8 +# lzh_TW UTF-8 +# mag_IN UTF-8 +# mai_IN UTF-8 +# mg_MG ISO-8859-15 +# mg_MG.UTF-8 UTF-8 +# mhr_RU UTF-8 +# mi_NZ ISO-8859-13 +# mi_NZ.UTF-8 UTF-8 +# mk_MK ISO-8859-5 +# mk_MK.UTF-8 UTF-8 +# ml_IN UTF-8 +# mn_MN UTF-8 +# mni_IN UTF-8 +# mr_IN UTF-8 +# ms_MY ISO-8859-1 +# ms_MY.UTF-8 UTF-8 +# mt_MT ISO-8859-3 +# mt_MT.UTF-8 UTF-8 +# my_MM UTF-8 +# nan_TW UTF-8 +# nan_TW@latin UTF-8 +# nb_NO ISO-8859-1 +# nb_NO.UTF-8 UTF-8 +# nds_DE UTF-8 +# nds_NL UTF-8 +# ne_NP UTF-8 +# nhn_MX UTF-8 +# niu_NU UTF-8 +# niu_NZ UTF-8 +# nl_AW UTF-8 +# nl_BE ISO-8859-1 +# nl_BE.UTF-8 UTF-8 +# nl_BE@euro ISO-8859-15 +# nl_NL ISO-8859-1 +# nl_NL.UTF-8 UTF-8 +# nl_NL@euro ISO-8859-15 +# nn_NO ISO-8859-1 +# nn_NO.UTF-8 UTF-8 +# nr_ZA UTF-8 +# nso_ZA UTF-8 +# oc_FR ISO-8859-1 +# oc_FR.UTF-8 UTF-8 +# om_ET UTF-8 +# om_KE ISO-8859-1 +# om_KE.UTF-8 UTF-8 +# or_IN UTF-8 +# os_RU UTF-8 +# pa_IN UTF-8 +# pa_PK UTF-8 +# pap_AN UTF-8 +# pap_AW UTF-8 +# pap_CW UTF-8 +# pl_PL ISO-8859-2 +# pl_PL.UTF-8 UTF-8 +# ps_AF UTF-8 +# pt_BR ISO-8859-1 +# pt_BR.UTF-8 UTF-8 +# pt_PT ISO-8859-1 +# pt_PT.UTF-8 UTF-8 +# pt_PT@euro ISO-8859-15 +# quz_PE UTF-8 +# raj_IN UTF-8 +# ro_RO ISO-8859-2 +# ro_RO.UTF-8 UTF-8 +# ru_RU ISO-8859-5 +# ru_RU.CP1251 CP1251 +# ru_RU.KOI8-R KOI8-R +# ru_RU.UTF-8 UTF-8 +# ru_UA KOI8-U +# ru_UA.UTF-8 UTF-8 +# rw_RW UTF-8 +# sa_IN UTF-8 +# sat_IN UTF-8 +# sc_IT UTF-8 +# sd_IN UTF-8 +# sd_IN@devanagari UTF-8 +# sd_PK UTF-8 +# se_NO UTF-8 +# shs_CA UTF-8 +# si_LK UTF-8 +# sid_ET UTF-8 +# sk_SK ISO-8859-2 +# sk_SK.UTF-8 UTF-8 +# sl_SI ISO-8859-2 +# sl_SI.UTF-8 UTF-8 +# so_DJ ISO-8859-1 +# so_DJ.UTF-8 UTF-8 +# so_ET UTF-8 +# so_KE ISO-8859-1 +# so_KE.UTF-8 UTF-8 +# so_SO ISO-8859-1 +# so_SO.UTF-8 UTF-8 +# sq_AL ISO-8859-1 +# sq_AL.UTF-8 UTF-8 +# sq_MK UTF-8 +# sr_ME UTF-8 +# sr_RS UTF-8 +# sr_RS@latin UTF-8 +# ss_ZA UTF-8 +# st_ZA ISO-8859-1 +# st_ZA.UTF-8 UTF-8 +# sv_FI ISO-8859-1 +# sv_FI.UTF-8 UTF-8 +# sv_FI@euro ISO-8859-15 +# sv_SE ISO-8859-1 +# sv_SE.ISO-8859-15 ISO-8859-15 +# sv_SE.UTF-8 UTF-8 +# sw_KE UTF-8 +# sw_TZ UTF-8 +# szl_PL UTF-8 +# ta_IN UTF-8 +# ta_LK UTF-8 +# tcy_IN.UTF-8 UTF-8 +# te_IN UTF-8 +# tg_TJ KOI8-T +# tg_TJ.UTF-8 UTF-8 +# th_TH TIS-620 +# th_TH.UTF-8 UTF-8 +# the_NP UTF-8 +# ti_ER UTF-8 +# ti_ET UTF-8 +# tig_ER UTF-8 +# tk_TM UTF-8 +# tl_PH ISO-8859-1 +# tl_PH.UTF-8 UTF-8 +# tn_ZA UTF-8 +# tr_CY ISO-8859-9 +# tr_CY.UTF-8 UTF-8 +# tr_TR ISO-8859-9 +# tr_TR.UTF-8 UTF-8 +# ts_ZA UTF-8 +# tt_RU UTF-8 +# tt_RU@iqtelif UTF-8 +# ug_CN UTF-8 +# ug_CN@latin UTF-8 +# uk_UA KOI8-U +# uk_UA.UTF-8 UTF-8 +# unm_US UTF-8 +# ur_IN UTF-8 +# ur_PK UTF-8 +# uz_UZ ISO-8859-1 +# uz_UZ.UTF-8 UTF-8 +# uz_UZ@cyrillic UTF-8 +# ve_ZA UTF-8 +# vi_VN UTF-8 +# wa_BE ISO-8859-1 +# wa_BE.UTF-8 UTF-8 +# wa_BE@euro ISO-8859-15 +# wae_CH UTF-8 +# wal_ET UTF-8 +# wo_SN UTF-8 +# xh_ZA ISO-8859-1 +# xh_ZA.UTF-8 UTF-8 +# yi_US CP1255 +# yi_US.UTF-8 UTF-8 +# yo_NG UTF-8 +# yue_HK UTF-8 +# zh_CN GB2312 +# zh_CN.GB18030 GB18030 +# zh_CN.GBK GBK +# zh_CN.UTF-8 UTF-8 +# zh_HK BIG5-HKSCS +# zh_HK.UTF-8 UTF-8 +# zh_SG GB2312 +# zh_SG.GBK GBK +# zh_SG.UTF-8 UTF-8 +# zh_TW BIG5 +# zh_TW.EUC-TW EUC-TW +# zh_TW.UTF-8 UTF-8 +# zu_ZA ISO-8859-1 +# zu_ZA.UTF-8 UTF-8 diff --git a/data/example-root/etc/profile b/data/example-root/etc/profile new file mode 100644 index 000000000..42bd3d007 --- /dev/null +++ b/data/example-root/etc/profile @@ -0,0 +1,2 @@ +# Global .profile -- add /sbin_1 +PATH=$PATH:/sbin_1:/xbin diff --git a/data/example-root/etc/sudoers.d/10-installer b/data/example-root/etc/sudoers.d/10-installer new file mode 100644 index 000000000..e69de29bb diff --git a/data/example-root/usr/share/zoneinfo/.dummy b/data/example-root/usr/share/zoneinfo/.dummy new file mode 100644 index 000000000..e69de29bb diff --git a/data/example-root/usr/share/zoneinfo/America/New_York b/data/example-root/usr/share/zoneinfo/America/New_York new file mode 100644 index 000000000..7553fee37 Binary files /dev/null and b/data/example-root/usr/share/zoneinfo/America/New_York differ diff --git a/data/example-root/usr/share/zoneinfo/UTC b/data/example-root/usr/share/zoneinfo/UTC new file mode 100644 index 000000000..c3b97f1a1 Binary files /dev/null and b/data/example-root/usr/share/zoneinfo/UTC differ diff --git a/data/example-root/usr/share/zoneinfo/Zulu b/data/example-root/usr/share/zoneinfo/Zulu new file mode 100644 index 000000000..c3b97f1a1 Binary files /dev/null and b/data/example-root/usr/share/zoneinfo/Zulu differ diff --git a/data/example-root/var/lib/dbus/.dummy b/data/example-root/var/lib/dbus/.dummy new file mode 100644 index 000000000..e69de29bb diff --git a/data/example-root/var/lib/initramfs-tools b/data/example-root/var/lib/initramfs-tools new file mode 100644 index 000000000..e69de29bb diff --git a/data/example-root/xbin/linux-version b/data/example-root/xbin/linux-version new file mode 100755 index 000000000..3e91d5333 --- /dev/null +++ b/data/example-root/xbin/linux-version @@ -0,0 +1 @@ +#! /bin/true diff --git a/data/example-root/xbin/useradd b/data/example-root/xbin/useradd new file mode 100755 index 000000000..3e91d5333 --- /dev/null +++ b/data/example-root/xbin/useradd @@ -0,0 +1 @@ +#! /bin/true diff --git a/hacking/GlobalStorage.md b/hacking/GlobalStorage.md deleted file mode 100644 index 000282662..000000000 --- a/hacking/GlobalStorage.md +++ /dev/null @@ -1,36 +0,0 @@ -# GlobalStorage keys - -The GlobalStorage structure contains information which is shared among jobs. -Jobs are free to define their own keys, but some keys have been standardized. -Here they are: - -## bootLoader - -A dictionary with the following keys: - -- `installPath`: device where the boot loader should be installed ("/dev/sda", "/dev/sdb1"...) - -## branding - -A dictionary with the following keys (loaded from branding.desc): - -- `productName`: distribution unversioned product name (long version) -- `shortProductName`: distribution unversioned product name (short version) -- `version`: distribution version number (long version) -- `shortVersion`: distribution version number (short version) -- `versionedName`: distribution product name and version (long version) -- `shortVersionedName`: distribution product name and version (short version) - -## partitions - -A list of dictionaries, one per partition. The dictionary contains the following keys: - -- `device`: path to the partition device -- `fs`: the name of the file system -- `mountPoint`: where the device should be mounted -- `uuid`: the UUID of the partition device - -## rootMountPoint - -A string which contains the path where the root file system has been mounted. -This key is set by the `mount` job. diff --git a/hacking/RELEASE.md b/hacking/RELEASE.md deleted file mode 100644 index b0d0e1f5e..000000000 --- a/hacking/RELEASE.md +++ /dev/null @@ -1,35 +0,0 @@ -The Calamares release process -============================= - -#### (0) A week in advance -* Run Coverity scan, fix what's relevant. -* Build with clang -Weverything, fix what's relevant. -* Make sure all tests pass. -* Notify translators. - -#### (1) Preparation -* Check `README.md` and everything in `hacking`, make sure it's all still relevant. -* Update submodules. -* Check defaults in `settings.conf` and other configuration files. -* Pull latest translations from Transifex. -* Update the list of enabled translation languages in `CMakeLists.txt`. -* Bump version in `CMakeLists.txt`, commit. - -#### (2) Tarball -* Create tarball: `../git-archive-all/git-archive-all -v calamares-1.1-rc1.tar.gz` -* Test tarball. - -#### (3) Tag -* `git tag -s v1.1.0` -* Generate MD5 and SHA1 checksums. -* Upload tarball. -* Announce on mailing list, notify packagers. -* Write release article. - -#### (4) Release day -* Publish tarball. -* Update download page. -* Publish release article on `calamares.io`. -* Publicize on social networks. -* Update release date on JIRA. -* Publish blog post. diff --git a/lang/calamares_ar.ts b/lang/calamares_ar.ts index 0ba9f6975..e9d4a7a12 100644 --- a/lang/calamares_ar.ts +++ b/lang/calamares_ar.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - اختر قسما لتقليصه: - - - - Allocate drive space by dragging the divider below: - قم بتخصيص مساحة القرص بسحب الفاصل في الأسفل: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - سيتم من خلال هذه العملية تقليص القسم <strong>%1</strong> الذي يحوي %4 إلى %2MB وسيتم إنشاء قسم %3MB ل %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - قسم نظام EFI لايمكن ايجاده في اي مكان على هذا النظام. يرجى الرجوع و استخدام إعداد التقسيم اليدوي 1%. - - - - The EFI system partition at %1 will be used for starting %2. - قسم نظام EFI عند 1% سوف يتم استخدامه للبدء 2%. - - - - EFI system partition: - قسم نظام EFI: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>بيئة الإقلاع</strong> لهذا النّظام.<br><br>أنظمة x86 القديمة تدعم <strong>BIOS</strong> فقط.<br>غالبًا ما تستخدم الأنظمة الجديدة <strong>EFI</strong>، ولكن ما زال بإمكانك إظهاره ك‍ BIOS إن بدأته بوضع التّوافقيّة. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + بدأ هذا النّظام ببيئة إقلاع <strong>EFI</strong>.<br><br>لضبط البدء من بيئة EFI، يجب على المثبّت وضع تطبيق محمّل إقلاع، مثل <strong>GRUB</strong> أو <strong>systemd-boot</strong> على <strong>قسم نظام EFI</strong>. هذا الأمر آليّ، إلّا إن اخترت التّقسيم يدويًّا، حيث عليك اخيتاره أو إنشاؤه بنفسك. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + بدأ هذا النّظام ببيئة إقلاع <strong>BIOS</strong>.<br><br>لضبط البدء من بيئة BIOS، يجب على المثبّت وضع تطبيق محمّل إقلاع، مثل <strong>GRUB</strong>، إمّا في بداية قسم أو في <strong>قطاع الإقلاع الرّئيس</strong> قرب بداية جدول التّقسيم (محبّذ). هذا الأمر آليّ، إلّا إن اخترت التّقسيم يدويًّا، حيث عليك اخيتاره أو إنشاؤه بنفسك. @@ -70,7 +37,7 @@ Do not install a boot loader - لا تقم بثبيت محمل الإقلاع + لا تثبّت محمّل إقلاع @@ -83,27 +50,48 @@ Form - الصيغة + نموذج GlobalStorage - التخزين العمومي + التّخزين العموميّ JobQueue - قائمة انتظار العمل + صفّ المهامّ Modules - وحدات + الوحدا - + + Type: + النوع: + + + + + none + لاشيء + + + + Interface: + الواجهة: + + + + Tools + الأدوات + + + Debug information - معلومات التصحيح + معلومات التّنقيح @@ -127,25 +115,26 @@ Run command %1 %2 - شغل الأمر 1% 2% + شغّل الأمر 1% 2% Running command %1 %2 - تشغيل الأمر 1% 2% + يشغّل الأمر 1% 2% External command crashed - فشل الأمر الخارجي + انهار الأمر الخارجيّ Command %1 crashed. Output: %2 - إنتهاء الأمر 1%. -الخرج:2% + انهار الأمر %1. +الخرج: +%2 @@ -165,7 +154,7 @@ Output: Bad parameters for process job call. - معاملات سيئة لاستدعاء عمل العملية. + معاملات نداء المهمة سيّئة. @@ -199,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. - تشغيل 1% عملية. + يشغّل عمليّة %1. - + Bad working directory path مسار سيء لمجلد العمل - + Working directory %1 for python job %2 is not readable. لا يمكن القراءة من مجلد العمل %1 الخاص بعملية بايثون %2. - + Bad main script file - ملف النص البرمجي الرئيسي سيء + ملفّ السّكربت الرّئيس سيّء. - + Main script file %1 for python job %2 is not readable. - لا يمكن قراءة ملف النص البرمجي الرئيسي %1 لعمل بايثون %2. + ملفّ السّكربت الرّئيس %1 لمهمّة بايثون %2 لا يمكن قراءته. - + Boost.Python error in job "%1". خطأ Boost.Python في العمل "%1". @@ -232,66 +221,91 @@ Output: Calamares::ViewManager - + &Back &رجوع - + &Next &التالي - - + + &Cancel &إلغاء - + + + Cancel installation without changing the system. + الغاء الـ تثبيت من دون احداث تغيير في النظام + + + Cancel installation? إلغاء التثبيت؟ - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - هل تريد إلغاء عملية التثبيت الحالية؟ -المثبت سوف يتوقف عن العمل وسيتم فقدان كل التغيرات. + أتريد إلغاء عمليّة التّثبيت الحاليّة؟ +سيخرج المثبّت وتضيع كلّ التّغييرات. - + + &Yes + &نعم + + + + &No + &لا + + + + &Close + &اغلاق + + + Continue with setup? الإستمرار في التثبيت؟ - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - المثبت 1% على وشك القيام بتغيرات للقرص من اجل التثبيت 2%. -</br><strong> لن يصبح بإستطاعتك إلغاء هذه التغيرات.<strong/> + مثبّت %1 على وشك بإجراء تعديلات على قرصك لتثبيت %2.<br/><strong>لن تستطيع التّراجع عن هذا.</strong> - + &Install now &ثبت الأن - + Go &back &إرجع - - &Quit - &خروج + + &Done + - + + The installation is complete. Close the installer. + + + + Error خطأ - + Installation Failed فشل التثبيت @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type نوع الاستثناء غير معروف - + unparseable Python error - خطأ مبهم في بايثون + خطأ بايثون لا يمكن تحليله - + unparseable Python traceback - مسار تتبع مبهم في بايثون + تتبّع بايثون خلفيّ لا يمكن تحليله - + Unfetchable Python error. خطأ لا يمكن الحصول علية في بايثون. @@ -322,55 +336,55 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 المثبت - + Show debug information - اظهر معلومات التصحيح + أظهر معلومات التّنقيح CheckFileSystemJob - + Checking file system on partition %1. - تفحص نظام الملفات في القسم 1%. + يفحص نظام الملفّات في القسم %1. - + The file system check on partition %1 failed. - فشل تفحص نظام الملفات في القسم 1%. + فشل فحص نظام الملفّات في القسم %1. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - هذا الكمبيوتر لايلبي المتطلبات الدنيا للتثبيت 1%.</br> لايمكن إكمال التثبيت. <a href="#details"> تفاصيل... <a/> + لا يستوفِ هذا الحاسوب أدنى متطلّبات تثبيت %1.<br/>لا يمكن متابعة التّثبيت. <a href="#details">التّفاصيل...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - هذا الكمبيوتر لا يلبي بعض المتطلبات الموصى بها للتثبيت 1%.</br>يمكن استمرار التثبيت, لكن ربما سيتم إلغاء تفعيل بعض الميزات. + لا يستوفِ هذا الحاسوب بعض المتطلّبات المستحسنة لتثبيت %1.<br/>يمكن للمثبّت المتابعة، ولكن قد تكون بعض الميزات معطّلة. - + This program will ask you some questions and set up %2 on your computer. - سيقوم هذا البرنامج بسؤالك بعض الاسئلة و إعداد 2% على الكمبيوتر. + سيطرح البرنامج بعض الأسئلة عليك ويعدّ %2 على حاسوبك. - + For best results, please ensure that this computer: - من أجل الحصول على أفضل النتائج, يرجى التأكد من أن هذا الكمبيوتر: + لأفضل النّتائج، تحقّق من أن الحاسوب: - + System requirements - متطلبات النظام + متطلّبات النّظام @@ -378,123 +392,130 @@ The installer will quit and all changes will be lost. Form - صيغة + نموذج - + After: - بَعد : + بعد: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>تقسيم يدوي</strong><br/>يمكنك إنشاء أو تغيير حجم الأقسام بنفسك . + <strong>تقسيم يدويّ</strong><br/>يمكنك إنشاء أو تغيير حجم الأقسام بنفسك. - + Boot loader location: - موقع مُحمِّل الإقلاع : + مكان محمّل الإقلاع: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + سيتقلّص %1 إلى %2م.بايت وقسم %3م.بايت آخر جديد سيُنشأ ل‍%4. - + Select storage de&vice: - اختر جه&از تخزين + اختر &جهاز التّخزين: - - - - + + + + Current: - الحالي: + الحاليّ: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>إختر قسماّ لتقليصه, ثم اسحب الشريط السفلي لتغيير حجمه </strong> - - - - <strong>Select a partition to install on</strong> - <strong>إختر القسم الذي سيتم التثبيت فيه</strong> - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>إستبدال قسم</strong><br/>يستبدلُ قسماً معَ %1 . + <strong>اختر قسمًا لتقليصه، ثمّ اسحب الشّريط السّفليّ لتغيير حجمه </strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>اختر القسم حيث سيكون التّثبيت عليه</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + تعذّر إيجاد قسم النّظام EFI في أيّ مكان. فضلًا ارجع واستخدم التّقسيم اليدويّ لإعداد %1. + + + + The EFI system partition at %1 will be used for starting %2. + قسم النّظام EFI على %1 سيُستخدم لبدء %2. + + + + EFI system partition: + قسم نظام EFI: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + لا يبدو أن في جهاز التّخزين أيّ نظام تشغيل. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>مسح القرص</strong><br/>هذا س<font color="red">يمسح</font> كلّ البيانات الموجودة في جهاز التّخزين المحدّد. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + على جهاز التّخزين %1. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>ثبّت جنبًا إلى جنب</strong><br/>سيقلّص المثبّت قسمًا لتفريغ مساحة لِ‍ %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>استبدل قسمًا</strong><br/>يستبدل قسمًا مع %1 . + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + على جهاز التّخزين هذا نظام تشغيل ذأصلًا. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + على جهاز التّخزين هذا عدّة أنظمة تشغيل. ما الذي تودّ فعله؟<br/>يمكنك مراجعة الاختيارات وتأكيدها قبل تطبيقها على جهاز التّخزين. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -527,105 +548,115 @@ The installer will quit and all changes will be lost. Create a Partition - أنشئ قسما + أنشئ قسمًا - + + MiB + + + + Partition &Type: &نوع القسم: - + &Primary - &أساسي: + أ&ساسيّ - + E&xtended - &ممتد + ممت&دّ - + Fi&le System: - + نظام المل&فّات: - + Flags: - + الشّارات: - + &Mount Point: - نقاط &الربط: + نقطة ال&ضّمّ: - + Si&ze: - ال&حجم: + الح&جم: - - MB - MB + + En&crypt + تشفير - + Logical - منطقي + منطقيّ - + Primary - أساسي + أساسيّ - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - + أنشئ قسم %2م.بايت جديد على %4 (%3) بنظام الملفّات %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + أنشئ قسم <strong>%2م.بايت</strong> جديد على <strong>%4</strong> (%3) بنظام الملفّات <strong>%1</strong>. Creating new %1 partition on %2. - إنشاء جدول أقسام %1 جديد على %2 . + ينشئ قسم %1 جديد على %2. The installer failed to create partition on disk '%1'. - فشل المثبِت في إنشاء قسم على القرص '%1'. + فشل المثبّت في إنشاء قسم على القرص '%1'. Could not open device '%1'. - لم يستطع فتح الجهاز '%1'. + تعذّر فتح الجهاز '%1': Could not open partition table. - لم يستطع فتح جدول الأقسام. + تعذّر فتح جدول التّقسيم. The installer failed to create file system on partition %1. - فشل المثبِت في إنشاء نظام ملفات على القسم %1. + فشل المثبّت في إنشاء نظام ملفّات على القسم %1. The installer failed to update partition table on disk '%1'. - فشل المثبِت في تحديث جدول الأقسام على القرص '%1'. + فشل المثبّت في تحديث جدول التّقسيم على القرص '%1'. @@ -633,27 +664,27 @@ The installer will quit and all changes will be lost. Create Partition Table - أنشئ جدول الأقسام. + أنشئ جدول تقسيم Creating a new partition table will delete all existing data on the disk. - سيقوم إنشاء جدول إقسام جديد بحذف جميع البيانات الموجودة على القرص. + إنشاء جدول تقسيم جددي سيحذف كلّ البيانات على القرص. What kind of partition table do you want to create? - ما هو نوع جدول الأقسام الذي تريد إنشائه؟ + ما نوع جدول التّقسيم الذي تريد إنشاءه؟ Master Boot Record (MBR) - قطاع الإقلاع الرئيسي (MBR) + قطاع إقلاع رئيس (MBR) GUID Partition Table (GPT) - جدول أقسام GUID من نوع (GPT) + جدول أقسام GUID ‏(GPT) @@ -661,95 +692,95 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - إنشاء جدول أقسام %1 جديد على %2 . + أنشئ جدول تقسيم %1 جديد على %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + أنشئ جدول تقسيم <strong>%1</strong> جديد على <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + ينشئ جدول التّقسيم %1 الجديد على %2. The installer failed to create a partition table on %1. - فشل المثبِت في إنشاء جدول الأقسام على %1. + فشل المثبّت في إنشاء جدول تقسيم على %1. Could not open device %1. - لم يستطع فتح الجهاز %1. + تعذّر فتح الجهاز %1. CreateUserJob - + Create user %1 أنشئ المستخدم %1 - + Create user <strong>%1</strong>. + أنشئ المستخدم <strong>%1</strong>. + + + + Creating user %1. + ينشئ المستخدم %1. + + + + Sudoers dir is not writable. + دليل Sudoers لا يمكن الكتابة فيه. + + + + Cannot create sudoers file for writing. + تعذّر إنشاء ملفّ sudoers للكتابة. + + + + Cannot chmod sudoers file. + تعذّر تغيير صلاحيّات ملفّ sudores. + + + + Cannot open groups file for reading. + تعذّر فتح ملفّ groups للقراءة. + + + + Cannot create user %1. + تعذّر إنشاء المستخدم %1. + + + + useradd terminated with error code %1. + أُنهي useradd برمز الخطأ %1. + + + + Cannot add user %1 to groups: %2. - - Creating user %1. - جاري إنشاء المستخدم %1 . + + usermod terminated with error code %1. + - - Sudoers dir is not writable. - لا يمكن الكتابة في مجلد Sudoers. - - - - Cannot create sudoers file for writing. - لا يمكن إنشاء ملف sudoers للكتابة. - - - - Cannot chmod sudoers file. - لا يمكن تغيير صلاحيات ملف sudoers. - - - - Cannot open groups file for reading. - لا يمكن فتح ملف المجموعات للقراءة. - - - - Cannot create user %1. - لا يمكن إنشاء المستخدم %1. - - - - useradd terminated with error code %1. - انتهى الأمر useradd مع شيفرة خطأ %1. - - - - Cannot set full name for user %1. - لا يمكن تعيين الاسم الكامل للمستخدم %1. - - - - chfn terminated with error code %1. - انتهى الأمر chfn مع شيفرة خطأ %1. - - - + Cannot set home directory ownership for user %1. - لا يمكن تعيين ملكية مجلد للمستخدم %1. + تعذّر تعيين مالك دليل المستخدم ليكون %1. - + chown terminated with error code %1. - انتهى الأمر chown مع شيفرة خطأ %1. + أُنهي chown برمز الخطأ %1. @@ -762,45 +793,45 @@ The installer will quit and all changes will be lost. Delete partition <strong>%1</strong>. - احذف القسم <strong>%1</strong> . + احذف القسم <strong>%1</strong>. Deleting partition %1. - جاري حذف القسم %1 . + يحذف القسم %1 . The installer failed to delete partition %1. - فشل المثبِت في حذف القسم %1. + فشل المثبّت في حذف القسم %1. Partition (%1) and device (%2) do not match. - لا يوجد توافق بين القسم (%1) و الجهاز (%2). + لا يتوافق القسم (%1) مع الجهاز (%2). Could not open device %1. - لم يستطع فتح الجهاز %1. + تعذّر فتح الجهاز %1. Could not open partition table. - لم يستطع فتح جدول الأقسام. + تعذّر فتح جدول التّقسيم. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + نوع <strong>جدول التّقسيم</strong> على جهاز التّخزين المحدّد.<br><br>الطّريقة الوحيدة لتغيير النّوع هو بحذفه وإعادة إنشاء جدول التّقسيم من الصّفر، ممّا سيؤدّي إلى تدمير كلّ البيانات في جهاز التّخزين.<br>سيبقي هذا المثبّت جدول التّقسيم الحاليّ كما هو إلّا إن لم ترد ذلك.<br>إن لم تكن متأكّدًا، ف‍ GPT مستحسن للأنظمة الحديثة. This device has a <strong>%1</strong> partition table. - + للجهاز جدول تقسيم <strong>%1</strong>. @@ -810,12 +841,12 @@ The installer will quit and all changes will be lost. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + <strong>تعذّر اكتشاف جدول تقسيم</strong> على جهاز التّخزين المحدّد.<br><br>إمّا أن لا جدول تقسيم في الجهاز، أو أنه معطوب أو نوعه مجهول.<br>يمكن لهذا المثبّت إنشاء جدول تقسيم جديد، آليًّا أ, عبر صفحة التّقسيم اليدويّ. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>هذا هو نوع جدول التّقسيم المستحسن للأنظمة الحديثة والتي تبدأ ببيئة إقلاع <strong>EFI</strong>. @@ -831,12 +862,38 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 - تحرير قسم موجود + حرّر قسمًا موجودًا @@ -851,70 +908,108 @@ The installer will quit and all changes will be lost. Format - تهيئة + هيّئ Warning: Formatting the partition will erase all existing data. - تحذير: ستؤدي تهيئة القسم إلى حذف جميع البيانات الموجودة. + تحذير: تهيئة القسم ستمسح بياناته كلّها. &Mount Point: - &نقطة الربط: + نقطة ال&ضّمّ: Si&ze: - ح&جم: + الح&جم: - + + MiB + + + + Fi&le System: - نظام الملف&ات : + نظام المل&فّات: - + Flags: + الشّارات: + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + نموذج + + + + En&crypt system + ع&مِّ النّظام + + + + Passphrase + عبارة المرور + + + + Confirm passphrase + أكّد عبارة المرور + + + + Please enter the same passphrase in both boxes. FillGlobalStorageJob - + Set partition information - تعيين معلومات القسم + اضبط معلومات القسم - + Install %1 on <strong>new</strong> %2 system partition. - ثبّت %1 على قسم نظام %2 <strong>جديد</strong> + ثبّت %1 على قسم نظام %2 <strong>جديد</strong>. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + اضطب قسم %2 <strong>جديد</strong> بنقطة الضّمّ <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + ثبّت %2 على قسم النّظام %3 ‏<strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + اضبط القسم %3 <strong>%1</strong> بنقطة الضّمّ <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + ثبّت محمّل الإقلاع على <strong>%1</strong>. - + Setting up mount points. - + يضبط نقاط الضّمّ. @@ -922,68 +1017,83 @@ The installer will quit and all changes will be lost. Form - الصيغة + نموذج &Restart now - + أ&عد التّشغيل الآن - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + <h1>انتهينا.</h1><br/>لقد ثُبّت %1 على حاسوبك.<br/>يمكنك إعادة التّشغيل وفتح النّظام الجديد، أو متابعة استخدام بيئة %2 الحيّة. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. FinishedViewStep - + Finish - إنتهاء + أنهِ + + + + Installation Complete + + + + + The installation of %1 is complete. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - تهيئة القسم %1 (نظام الملفات: %2, الحجم %3 MB) على %4. + هيّء القسم %1 (نظام الملفّات: %2، الحجم: %3 م.بايت) على %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + هيّء قسم <strong>%3م.بايت</strong> <strong>%1</strong> بنظام الملفّات <strong>%2</strong>. - + Formatting partition %1 with file system %2. - يتم تنسيق القسم %1 مع نظام الملفات %2 . + يهيّء القسم %1 بنظام الملفّات %2. - + The installer failed to format partition %1 on disk '%2'. - فشل المثبِت في تهيئة القسم %1 على القرص '%2'. + فشل المثبّت في تهيئة القسم %1 على القرص '%2'. - + Could not open device '%1'. - لم يستطع فتح الجهاز '%1'. + تعذّر فتح الجهاز '%2': - + Could not open partition table. - لم يستطع فتح جدول الأقسام. + تعذّر فتح جدول التّقسيم. - + The installer failed to create file system on partition %1. - فشل المثبِت في إنشاء نظام ملفات على القسم %1. + فشل المثبّت في إنشاء نظام ملفّات في القسم %1. - + The installer failed to update partition table on disk '%1'. - فشل المثبِت في تحديث جدول الأقسام على القرص '%1'. + فشل المثبّت في تحديث جدول التّقسيم على القرص '%1'. @@ -993,19 +1103,19 @@ The installer will quit and all changes will be lost. Konsole not installed - كونسول غير مُثبّت + كونسول غير مثبّت Please install the kde konsole and try again! - يرجى تثبيت الـ كي دي اي كونسول والمحاولة مرة أخرى ! + فضلًا ثبّت كونسول كدي وجرّب مجدّدًا! Executing script: &nbsp;<code>%1</code> - + ينفّذ السّكربت: &nbsp;<code>%1</code> @@ -1013,26 +1123,26 @@ The installer will quit and all changes will be lost. Script - نَص بَرمَجي + سكربت KeyboardPage - + Set keyboard model to %1.<br/> - تعيين نوع لوحة المفاتيح إلى %1.<br/> + اضبط طراز لوحة المفتاتيح ليكون %1.<br/> - + Set keyboard layout to %1/%2. - تعيين توزيع لوحة المفاتيح إلى %1\%2. + اضبط تخطيط لوحة المفاتيح إلى %1/%2. KeyboardViewStep - + Keyboard لوحة المفاتيح @@ -1040,13 +1150,23 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - إعداد لغة النظام + إعداد محليّة النّظام - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + إعداد محليّة النّظام يؤثّر على لغة بعض عناصر واجهة مستخدم سطر الأوامر وأطقم محارفها.<br/>الإعداد الحاليّ هو <strong>%1</strong>. + + + + &Cancel + + + + + &OK @@ -1055,69 +1175,69 @@ The installer will quit and all changes will be lost. Form - الصيغة + نموذج I accept the terms and conditions above. - أوافق على الشروط والأحكام المذكورة أعلاه . + أقبل الشّروط والأحكام أعلاه. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>اتّفاقيّة التّرخيص</h1>عمليّة الإعداد هذه ستثبّت برمجيّات مملوكة تخضع لشروط ترخيص. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تتابع عمليّة الإعداد. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>اتّفاقيّة التّرخيص</h1>يمكن لعمليّة الإعداد تثبيت برمجيّات مملوكة تخضع لشروط ترخيص وذلك لتوفير مزايا إضافيّة وتحسين تجربة المستخدم. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + فضلًا راجع اتّفاقيّات رخص المستخدم النّهائيّ (EULA) أعلاه.<br/>إن لم تقبل الشّروط، فلن تُثبّت البرمجيّات المملوكة وستُستخدم تلك مفتوحة المصدر بدلها. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>مشغّل %1</strong><br/>من%2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>مشغّل %1 للرّسوميّات</strong><br/><font color="Grey">من %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>ملحقة %1 للمتصّفح</strong><br/><font color="Grey">من %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>مرماز %1</strong><br/><font color="Grey">من %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>حزمة %1</strong><br/><font color="Grey">من %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">من %2</font> <a href="%1">view license agreement</a> - + <a href="%1">اعرض اتّفاقيّة التّرخيص</a> @@ -1125,47 +1245,58 @@ The installer will quit and all changes will be lost. License - رُخصة + الرّخصة LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - المنطقة: + - + Zone: - المجال: + - + + &Change... - &تغيير ... + &غيّر... - + Set timezone to %1/%2.<br/> - تعيين المجال الزمني إلى %1\%2.<br/> + اضبط المنطقة الزّمنيّة إلى %1/%2.<br/> + + + + %1 (%2) + Language (Country) + LocaleViewStep - + Loading location data... - تحميل بيانات الموقع... + يحمّل بيانات المواقع... - + Location الموقع @@ -1175,48 +1306,74 @@ The installer will quit and all changes will be lost. Move file system of partition %1. - تحرك نظام الملفات للقسم %1. + انقل نظام ملفّات القسم %1. Could not open file system on partition %1 for moving. - لم يستطع فتح نظام الملفات على القرص %1 للقيام بتحريكه. + تعذّر فتح نظام الملفّات على القسم %1 للنّقل. Could not create target for moving file system on partition %1. - لم يستطع إنشاء وجهة لتحريك نظام الملفات على القسم %1. + تعذّر إنشاء هدف لنقل نظام الملفّات على القسم %1 إليه. Moving of partition %1 failed, changes have been rolled back. - فشل تحريك القسم %1, وتم التراجع عن التغييرات. + فشل نقل القسم %1، استُعيدت التّغييرات. Moving of partition %1 failed. Roll back of the changes have failed. - فشل تحريك القسم %1, و فشل أيضا التراجع عن التغييرات. + فشل نقل القسم %1. فشلت استعادة التّغييرات. Updating boot sector after the moving of partition %1 failed. - تحديث قطاع الإقلاع بعد فشل تحريك القسم %1. + فشل تحديث قطاع الإقلاع بعد نقل القسم %1. The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. - أحجام القطاعات المنطقية في مصدر النسخ و الوجهة مختلفان. و هذا غير مدعوم حاليا. + أحجام القطاعات المنطقيّة في المصدر والهدف ليسا متطابقين. هذا ليس مدعومًا حاليًّا. Source and target for copying do not overlap: Rollback is not required. - لا يوجد تداخل بين مصدر النسخ و الوجهة: لذلك لا يوجد حاجة للتراجع. + لا يتداخل مصدر النّسخ وهدفه. الاستعادة غير ضروريّة. Could not open device %1 to rollback copying. - لم يستطع فتح الجهاز %1 للتراجع عن النسخ. + + + + + NetInstallPage + + + Name + الاسم + + + + Description + الوصف + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + @@ -1224,17 +1381,17 @@ The installer will quit and all changes will be lost. Form - الصيغة + نموذج Keyboard Model: - نوع لوحة المفاتيح: + طراز لوحة المفاتيح: Type here to test your keyboard - قم بالكتابة هنا لتجريب لوحة المفاتيح + اكتب هنا لتجرّب لوحة المفاتيح @@ -1242,70 +1399,69 @@ The installer will quit and all changes will be lost. Form - الصيغة + نموذج What is your name? - ما هو اسمك؟ + ما اسمك؟ What name do you want to use to log in? - ما هو الاسم الذي تريد استخدامه لتسجيل الدخول؟ + ما الاسم الذي تريده لتلج به؟ - font-weight: normal - حجم الخط: عادي + font-weight: normal <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>يمكنك إعداد حسابات متعددة بعد التثبيت إذا كان هناك أكثر من مستخدم لهذا الكمبيوتر.</small> + <small>إن كان عدد مستخدمي هذا الحاسوب أكثر من واحد، يمكنك إعداد عدّة حسابات بعد التّبثيت.</small> Choose a password to keep your account safe. - اختر كلمة سر لإبقاء حسابك امنا. + اختر كلمة مرور لإبقاء حسابك آمنًا. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>أدخل كلمة المرور مرتين, للتأكد من أخطاء الكتابة. كلمة السر الجيدة تحوي مزيجا من الأحرف, الأرقام و علامات الترقيم, و أن يكون طولها ثمانية خانات على الأقل, ويجب تغييرها بشكل منتظم</small> + <small>أدخل ذات كلمة المرور مرّتين، للتأكّد من عدم وجود أخطاء طباعيّة. تتكوّن كلمة المرور الجيّدة من خليط أحرف وأرقام وعلامات ترقيم، وطول لا يقلّ عن 8 محارف. كذلك يحبّذ تغييرها دوريًّا لزيادة الأمان.</small> What is the name of this computer? - ماذا تريد تسمية هذا الكمبيوتر؟ + ما اسم هذا الحاسوب؟ <small>This name will be used if you make the computer visible to others on a network.</small> - <small>سيتم استخدام هذا الاسم إذا كان كمبيوترك مرئيا للاخرين على الشبكة.</small> + <small>سيُستخدم الاسم لإظهار الحاسوب للآخرين عبر الشّبكة.</small> Log in automatically without asking for the password. - + لِج آليًّا بدون طلب كلمة مرور. Use the same password for the administrator account. - + استخدم نفس كلمة المرور لحساب المدير. Choose a password for the administrator account. - اختر كلمة سر لحساب مدير النظام. + اختر كلمة مرور لحساب المدير. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>أدخل كلمة المرور مرتين, للتأكد من أخطاء الكتابة.</small> + <small>أدخل ذات كلمة المرور مرّتين، للتّأكد من عدم وجود أخطاء طباعيّة.</small> @@ -1313,35 +1469,40 @@ The installer will quit and all changes will be lost. Root - جذر + الجذر Home - رئيسي + المنزل Boot - + الإقلاع EFI system - + نظام EFI Swap - + التّبديل New partition for %1 - + قسم جديد ل‍ %1 - + + New partition + قسم جديد + + + %1 %2 %1 %2 @@ -1352,7 +1513,7 @@ The installer will quit and all changes will be lost. Free Space - المساحة المتوفرة + المساحة الحرّة @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. قسم جديد - + Name الاسم - + File System - نظام الملفات + نظام الملفّات - + Mount Point - نقطة الربط + نقطة الضّمّ - + Size الحجم @@ -1386,134 +1547,144 @@ The installer will quit and all changes will be lost. Form - الصيغة + نموذج Storage de&vice: - جه&از تخزين + ج&هاز التّخزين: &Revert All Changes - &التراجع عن جميع التغيرات + ا&عكس كلّ التّغييرات - + New Partition &Table - &جدول أقسام جديد + &جدول تقسيم جديد - + &Create - &إنشاء + أ&نشئ - + &Edit - &تحرير + ح&رّر - + &Delete - &حذف + ا&حذف - + Install boot &loader on: - + ثبّت م&حمّل الإقلاع على: - + Are you sure you want to create a new partition table on %1? - هل أنت متأكد من إنشاء جدول أقسام جديد على %1؟ + أمتأكّد من إنشاء جدول تقسيم جديد على %1؟ 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. + ثبّت %1 <strong>جنبًا إلى جنب</strong> مع نظام تشغيل آخر. + + + + <strong>Erase</strong> disk and install %1. + <strong>امسح</strong> القرص وثبّت %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>استبدل</strong> قسمًا ب‍ %1. + <strong>Manual</strong> partitioning. + تقسيم <strong>يدويّ</strong>. + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>امسح</strong> القرص <strong>%2</strong> (%3) وثبّت %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>استبدل</strong> قسمًا على القرص <strong>%2</strong> (%3) ب‍ %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - الحالي: + الحاليّ: - + After: - + بعد: - + No EFI system partition configured - + لم يُضبط أيّ قسم نظام EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set + راية قسم نظام EFI غير مضبوطة + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. @@ -1531,24 +1702,29 @@ The installer will quit and all changes will be lost. الافتراضي - + unknown - غير معروف : + مجهول - + extended - مُمتد : + ممتدّ - + unformatted - غير مُهيأ : + غير مهيّأ + + + + swap + Unpartitioned space or unknown partition table - + مساحة غير مقسّمة أو جدول تقسيم مجهول @@ -1556,127 +1732,132 @@ The installer will quit and all changes will be lost. Form - صيغة + نموذج Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + اختر مكان تثبيت %1.<br/><font color="red">تحذير: </font>سيحذف هذا كلّ الملفّات في القسم المحدّد. - + The selected item does not appear to be a valid partition. - + لا يبدو العنصر المحدّد قسمًا صالحًا. - + %1 cannot be installed on empty space. Please select an existing partition. - + لا يمكن تثبيت %1 في مساحة فارغة. فضلًا اختر قسمًا موجودًا. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + لا يمكن تثبيت %1 على قسم ممتدّ. فضلًا اختر قسمًا أساسيًّا أو ثانويًّا. - + %1 cannot be installed on this partition. - + لا يمكن تثبيت %1 على هذا القسم. - + Data partition (%1) قسم البيانات (%1) - + Unknown system partition (%1) - قسم النظام غير معروف (%1) + قسم نظام مجهول (%1) - + %1 system partition (%2) - %1 قسم النظام (%2) + قسم نظام %1 ‏(%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>القسم %1 صغير جدًّا ل‍ %2. فضلًا اختر قسمًا بحجم %3 غ.بايت على الأقلّ. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>تعذّر إيجاد قسم النّظام EFI في أيّ مكان. فضلًا ارجع واستخدم التّقسيم اليدويّ لإعداد %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>سيُثبّت %1 على %2.<br/><font color="red">تحذير: </font>ستفقد كلّ البيانات على القسم %2. - + The EFI system partition at %1 will be used for starting %2. - + سيُستخدم قسم نظام EFI على %1 لبدء %2. - + EFI system partition: - + قسم نظام EFI: RequirementsChecker - + Gathering system information... - جاري جمع معلومات عن النظام... - - - - has at least %1 GB available drive space - يوجد على الأقل مساحة %1 GB متوفرة على القرص - - - - There is not enough drive space. At least %1 GB is required. - لايوجد مساحة كافية على القرص. على الاقل 1% GB مطلوبة. + يجمع معلومات النّظام... - has at least %1 GB working memory - يوجد على الأقل %1 GB من ذاكرة التشغيل + has at least %1 GB available drive space + فيه على الأقل مساحة بحجم %1 غ.بايت حرّة - The system does not have enough working memory. At least %1 GB is required. - + There is not enough drive space. At least %1 GB is required. + ليست في القرص مساحة كافية. المطلوب هو %1 غ.بايت على الأقلّ. + has at least %1 GB working memory + فيه ذاكرة شاغرة بحجم %1 غ.بايت على الأقلّ + + + + The system does not have enough working memory. At least %1 GB is required. + ليس في النّظام ذاكرة شاغرة كافية. المطلوب هو %1 غ.بايت على الأقلّ. + + + is plugged in to a power source - موصول بمصدر الطاقة + موصول بمصدر للطّاقة - + The system is not plugged in to a power source. - النظام غير متصل بمصدر الطاقة. + النّظام ليس متّصلًا بمصدر للطّاقة. - + is connected to the Internet موصول بالإنترنت - + The system is not connected to the Internet. - النظام غير متصل بالإنترنت. + النّظام ليس موصولًا بالإنترنت - + The installer is not running with administrator rights. - المثبت لايعمل بصلاحيات المستخدم الرئيسي. + المثبّت لا يعمل بصلاحيّات المدير. + + + + The screen is too small to display the installer. + @@ -1684,17 +1865,17 @@ The installer will quit and all changes will be lost. Resize file system on partition %1. - غير حجم نظام الملفات على القسم %1. + غيّر حجم نظام الملفّات على القسم %1. Parted failed to resize filesystem. - فشل برنامج Parted بتغيير حجم نظام الملفات. + فشل Parted في تغيير حجم نظام الملفّات. Failed to resize filesystem. - فشل تغيير حجم نظام الملفات. + فشل تغيير حجم نظام الملفّات. @@ -1702,28 +1883,28 @@ The installer will quit and all changes will be lost. Resize partition %1. - غير حجم القسم %1. + غيّر حجم القسم %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - + غيّر حجم قسم <strong>%2م.بايت</strong> <strong>%1</strong> إلى <strong>%3م.بايت</strong>. Resizing %2MB partition %1 to %3MB. - + يغيّر حجم قسم %2م.بايت %1 إلى %3م.بايت. The installer failed to resize partition %1 on disk '%2'. - فشل المثبِت في تغيير حجم القسم %1 على القرص '%2'. + فشل المثبّت في تغيير حجم القسم %1 على القرص '%2'. Could not open device '%1'. - لم يستطع فتح الجهاز '%1'. + تعذّر فتح الجهاز '%1'. @@ -1731,12 +1912,12 @@ The installer will quit and all changes will be lost. Scanning storage devices... - + يفحص أجهزة التّخزين... Partitioning - جاري التّقسيم + يقسّم @@ -1744,17 +1925,17 @@ The installer will quit and all changes will be lost. Set hostname %1 - تعيين اسم المضيف %1 + اضبط اسم المضيف %1 Set hostname <strong>%1</strong>. - تعيين اسم المضيف <strong>%1</strong> . + اضبط اسم المضيف <strong>%1</strong> . Setting hostname %1. - تعيين اسم المضيف 1%. + يضبط اسم المضيف 1%. @@ -1766,79 +1947,135 @@ The installer will quit and all changes will be lost. Cannot write hostname to target system - لايمكن كتابة اسم المضيف إلى النظام الوجهة + تعذّرت كتابة اسم المضيف إلى النّظام الهدف SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - تعيين نوع لوحة المفاتيح إلى %1 ، والنّسق إلى %2-%3 + اضبك طراز لوحة المفتايح إلى %1، والتّخطيط إلى %2-%3 - + Failed to write keyboard configuration for the virtual console. - فشل في كتابة ضبط لوحة المفاتيح لوحدة التحكم الافتراضية. + فشلت كتابة ضبط لوحة المفاتيح للطرفيّة الوهميّة. - - + + + Failed to write to %1 - فشل في الكتابة الى 1% + فشلت الكتابة إلى %1 - + Failed to write keyboard configuration for X11. - فشل في كتابة ضبط لوحة المفاتيح ل X11. + فشلت كتابة ضبط لوحة المفاتيح ل‍ X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + SetPartFlagsJob - + Set flags on partition %1. + اضبط رايات القسم %1. + + + + Set flags on %1MB %2 partition. - + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - + يمحي رايات القسم <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + يمحي رايات القسم <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + يضبط رايات <strong>%2</strong> القسم<strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + فشل المثبّت في ضبط رايات القسم %1. - + Could not open device '%1'. - + تعذّر فتح الجهاز '%1'. - + Could not open partition table on device '%1'. - + تعذّر فتح جدول التّقسيم على الجهاز '%1'. - + Could not find partition '%1'. - + تعذّر إيجاد القسم '%1'. @@ -1846,45 +2083,55 @@ The installer will quit and all changes will be lost. Update geometry of partition %1. - تحديث بنية القسم %1. + حدّث هندسة القسم %1. Failed to change the geometry of the partition. - فشل في تغيير بنية القسم. + فشل تغيير هندسة القسم. SetPasswordJob - + Set password for user %1 - تعيين كلمة المرور للمستخدم %1 + اضبط كلمة مرور للمستخدم %1 - + Setting password for user %1. - إعداد كلمة المرور للمستخدم 1%. + يضبط كلمة مرور للمستخدم %1. - + Bad destination system path. - مسار سيء لمجلد النظام الوجهة. + مسار النّظام المقصد سيّء. - + rootMountPoint is %1 - نقطة الربط الرئيسية هي %1 + rootMountPoint هو %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. - لا يمكن تعيين كلمة المرور للمستخدم %1. + تعذّر ضبط كلمة مرور للمستخدم %1. - + usermod terminated with error code %1. - انتهى الأمر usermod مع شيفرة خطأ %1. + أُنهي usermod برمز الخطأ %1. @@ -1892,7 +2139,7 @@ The installer will quit and all changes will be lost. Set timezone to %1/%2 - تعيين المنطقة الزمنية إلى %1/%2 + اضبط المنطقة الزّمنيّة إلى %1/%2 @@ -1902,7 +2149,7 @@ The installer will quit and all changes will be lost. Bad path: %1 - مسار سيء: %1 + المسار سيّء: %1 @@ -1912,17 +2159,17 @@ The installer will quit and all changes will be lost. Link creation failed, target: %1; link name: %2 - فشل في إنشاء اختصار, الوجهة: %1؛ اسم الاختصار: %2 - - - - Cannot set timezone, - لا يمكن تعيين المنطقة الزمنية, + فشل إنشاء الوصلة، الهدف: %1، اسم الوصلة: %2 + Cannot set timezone, + تعذّر ضبط المنطقة الزّمنيّة، + + + Cannot open /etc/timezone for writing - لا يمكن فتح /etc/timezone للكتابة + تعذّر فتح ‎/etc/timezone للكتابة @@ -1930,7 +2177,7 @@ The installer will quit and all changes will be lost. This is an overview of what will happen once you start the install procedure. - + هذه نظرة عامّة عمّا سيحصل ما إن تبدأ عمليّة التّثبيت. @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - إسم المستخدم الخاص بك طويل جداً . + اسم المستخدم طويل جدًّا. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + يحوي اسم المستخدم محارف غير صالح. المسموح هو الأحرف الصّغيرة والأرقام فقط. - + Your hostname is too short. - إسم المُضيف قصير جداً . + اسم المضيف قصير جدًّا. - + Your hostname is too long. - إسم المُضيف طويل جداً . + اسم المضيف طويل جدًّا. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + يحوي اسم المضيف محارف غير صالحة. المسموح فقط الأحرف والأرقام والشُّرط. - - + + Your passwords do not match! لا يوجد تطابق في كلمات السر! @@ -2016,30 +2263,35 @@ The installer will quit and all changes will be lost. &حول - + <h1>Welcome to the %1 installer.</h1> - <h1>مرحبا بك في 1%المثبت. <h1/> + <h1>مرحبًا بك في مثبّت %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer حول 1% المثبت - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support - 1%الدعم + 1% الدعم WelcomeViewStep - + Welcome مرحبا بك diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index c57f37ebb..be9f765a0 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Escueyi la partición pa redimensionar: - - - - Allocate drive space by dragging the divider below: - Alluga l'espaciu d'unidá arrastrando'l divisor d'embaxo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Con esta operación, redimensionaráse a %2MB la partición <strong>%1</strong> que contién %4 y crearáse una partición nueva de %3MB pa %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Nun pue alcontrase per nenyures una partición del sistema EFI nesti ordenador. Vuelvi atrás y usa'l particionáu manual pa configurar %1, por favor. - - - - The EFI system partition at %1 will be used for starting %2. - La partición del sistema EFI en %1 usaráse p'aniciar %2. - - - - EFI system partition: - Partición del sistema EFI: - - 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. - + L'<strong>entornu d'arranque</strong> d'esti sistema.<br><br>Sistemes x86 más vieyos namái sofiten <strong>BIOS</strong>.<br>Los sistemes modernos usen davezu <strong>EFI</strong>, pero quiciabes d'amuesen como BIOS si s'anicien nel mou compatibilidá. - + 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. - + Esti sistema anicióse con un entornu d'arranque <strong>EFI</strong>.<br><br>Pa configurar l'aniciu d'un entornu EFI, esti instalador ha instalar una aplicación de xestión d'arranque, como <strong>GRUB</strong> o <strong>systemd-boot</strong> nuna <strong>partición del sistema EFI</strong>. Esto ye automático, a nun ser qu'escueyas el particionáu manual, que nesi casu has escoyer creala tu mesmu. - + 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. @@ -101,7 +68,28 @@ Módulos - + + Type: + Triba: + + + + + none + + + + + Interface: + Interfaz: + + + + Tools + Ferramientes + + + Debug information Información de depuración @@ -200,32 +188,32 @@ Salida: Calamares::PythonJob - + Running %1 operation. Executando operación %1. - + Bad working directory path Camín incorreutu del direutoriu de trabayu - + Working directory %1 for python job %2 is not readable. El direutoriu de trabayu %1 pal trabayu python %2 nun ye lleible. - + Bad main script file Ficheru incorreutu del script principal - + Main script file %1 for python job %2 is not readable. El ficheru de script principal %1 pal trabayu python %2 nun ye lleible. - + Boost.Python error in job "%1". Fallu Boost.Python nel trabayu «%1». @@ -233,65 +221,91 @@ Salida: Calamares::ViewManager - + &Back &Atrás - + &Next &Siguiente - - + + &Cancel &Encaboxar - + + + Cancel installation without changing the system. + + + + Cancel installation? ¿Encaboxar instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿De xuru que quies encaboxar el procesu actual d'instalación? L'instalador colará y perderánse toles camudancies. - + + &Yes + &Sí + + + + &No + &Non + + + + &Close + &Zarrar + + + Continue with setup? ¿Siguir cola configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instalador %1 ta a piques de facer camudancies al to discu pa instalar %2.<br/><strong>Nun sedrás capaz a desfacer estes camudancies.</strong> - + &Install now &Instalar agora - + Go &back &Dir p'atrás - - &Quit - &Colar + + &Done + &Fecho - + + The installation is complete. Close the installer. + Completóse la operación. Zarra l'instalador. + + + Error Fallu - + Installation Failed Instalación fallida @@ -299,22 +313,22 @@ L'instalador colará y perderánse toles camudancies. CalamaresPython::Helper - + Unknown exception type Tiba d'esceición desconocida - + unparseable Python error fallu non analizable de Python - + unparseable Python traceback rastexu non analizable de Python - + Unfetchable Python error. Fallu non algamable de Python @@ -322,12 +336,12 @@ L'instalador colará y perderánse toles camudancies. CalamaresWindow - + %1 Installer Instalador %1 - + Show debug information Amosar información de depuración @@ -335,12 +349,12 @@ L'instalador colará y perderánse toles camudancies. CheckFileSystemJob - + Checking file system on partition %1. Comprobando'l sistema ficheros na partición %1. - + The file system check on partition %1 failed. Falló la comprobación del sistema de ficheros na partición %1. @@ -348,7 +362,7 @@ L'instalador colará y perderánse toles camudancies. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Esti ordenador nun satifaz los requirimientos mínimos pa la instalación de %1.<br/>La instalación nun pue siguir. <a href="#details">Detalles...</a> @@ -358,17 +372,17 @@ L'instalador colará y perderánse toles camudancies. Esti ordenador nun satifaz dellos requirimientos aconseyaos pa la instalación de %1.<br/>La instalación pue siguir pero podríen deshabilitase delles carauterístiques. - + This program will ask you some questions and set up %2 on your computer. Esti programa fadráte delles entrugues y configurará %2 nel to ordenador. - + For best results, please ensure that this computer: Pa los meyores resultaos, por favor asegúrate qu'esti ordenador: - + System requirements Requirimientos del sistema @@ -381,102 +395,109 @@ L'instalador colará y perderánse toles camudancies. - + After: Dempués: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Particionáu manual</strong><br/>Pues crear o redimensionar particiones tu mesmu. - + Boot loader location: Allugamientu del xestor d'arranque: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 redimensionaráse a %2MB y crearáse la partición nueva de %3MB pa %4. - + Select storage de&vice: - + Esbillar preséu d'almacenamientu: - - - - + + + + Current: Anguaño: - + + Reuse %1 as home partition for %2. + Reusar %1 como partición home pa %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Nun pue alcontrase una partición EFI nesti sistema. Torna y usa'l particionáu a mano pa configurar %1, por favor. - + The EFI system partition at %1 will be used for starting %2. - + La partición del sistema EFI en %1 usaráse p'aniciar %2. - + EFI system partition: Partición EFI del sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu nun paez tener un sistema operativu nelli. ¿Qué te prestaría facer?<br/>Sedrás capaz a revisar y confirmar les tos escoyetes enantes de facer cualesquier camudancia al preséu d'almacenamientu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Desaniciar discu</strong><br/>Esto <font color="red">desaniciará</font> tolos datos anguaño presentes nel preséu d'almacenamientu esbilláu. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu tien %1 nelli. ¿Qué te prestaría facer?<br/>Sedrás capaz a revisar y confirmar les tos escoyetes enantes de facer cualesquier camudancia al preséu d'almacenamientu. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Tocar una partición</strong><br/>Troca una partición con %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu yá tien un sistema operativu nelli. ¿Qué te prestaría facer?<br/>Sedrás capaz a revisar y confirmar les tos escoyetes enantes de facer cualesquier camudancia al preséu d'almacenamientu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Esti preséu d'almacenamientu tien múltiples sistemes operativos nelli. ¿Qué te prestaría facer?<br/>Sedrás capaz a revisar y confirmar les tos escoyetes enantes de facer cualesquier camudancia al preséu d'almacenamientu. @@ -484,17 +505,17 @@ L'instalador colará y perderánse toles camudancies. ClearMountsJob - + Clear mounts for partitioning operations on %1 Llimpiar montaxes pa les opciones de particionáu en %1 - + Clearing mounts for partitioning operations on %1. Llimpiando los montaxes pa les opciones de particionáu en %1. - + Cleared all mounts for %1 Llimpiáronse tolos montaxes pa %1 @@ -502,22 +523,22 @@ L'instalador colará y perderánse toles camudancies. ClearTempMountsJob - + Clear all temporary mounts. Llimpiar tolos montaxes temporales. - + Clearing all temporary mounts. Llimpiando tolos montaxes temporales. - + Cannot get list of temporary mounts. Nun pue consiguise la llista de montaxes temporales. - + Cleared all temporary mounts. Llimpiáronse tolos montaxes temporales. @@ -530,60 +551,70 @@ L'instalador colará y perderánse toles camudancies. Crear una partición - + + MiB + + + + Partition &Type: &Triba de partición: - + &Primary &Primaria - + E&xtended E&stendida - + Fi&le System: Sistema de f&icheros: - + Flags: Banderes: - + &Mount Point: &Puntu montaxe: - + Si&ze: Tama&ñu: - - MB - MB + + En&crypt + &Cifrar - + Logical Llóxica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + Puntu de montaxe yá n'usu. Esbilla otru, por favor. + CreatePartitionJob @@ -687,67 +718,67 @@ L'instalador colará y perderánse toles camudancies. CreateUserJob - + Create user %1 Crear l'usuariu %1 - + Create user <strong>%1</strong>. Crearáse l'usuariu <strong>%1</strong>. - + Creating user %1. Creando l'usuariu %1. - + Sudoers dir is not writable. Nun pue escribise nel direutoriu sudoers. - + Cannot create sudoers file for writing. Nun pue crease'l ficheru sudoers pa escritura. - + Cannot chmod sudoers file. Nun pue facese chmod al ficheru sudoers. - + Cannot open groups file for reading. Nun pue abrise'l ficheru de grupos pa escritura. - + Cannot create user %1. Nun pue crease l'usuariu %1. - + useradd terminated with error code %1. useradd finó col códigu de fallu %1. - - Cannot set full name for user %1. - Nun pue afitase'l nome completu pal usuariu %1. + + Cannot add user %1 to groups: %2. + Nun pue amestase l'usuariu %1 a los grupos: %2 - - chfn terminated with error code %1. - chfn finó col códigu de fallu %1. + + usermod terminated with error code %1. + usermod finó col códigu de fallu %1. - + Cannot set home directory ownership for user %1. Nun pue afitase la propiedá del direutoriu Home al usuariu %1. - + chown terminated with error code %1. chown finó col códigu de fallu %1. @@ -793,7 +824,7 @@ L'instalador colará y perderánse toles camudancies. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ L'instalador colará y perderánse toles camudancies. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Saltar escritura de configuración LUKS pa Dracut: nun se cifró la partición «/» + + + + Failed to open %1 + Fallu al abrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Trabayu C++ maniquín + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ L'instalador colará y perderánse toles camudancies. Tama&ñu: - + + MiB + MiB + + + Fi&le System: Sistema de fic&heros: - + Flags: Banderes: + + + Mountpoint already in use. Please select another one. + Puntu de montaxe yá n'usu. Esbilla otru, por favor. + + + + EncryptWidget + + + Form + + + + + En&crypt system + &Cifrar sistema + + + + Passphrase + Fras de pasu + + + + Confirm passphrase + Confirmar fras de pasu + + + + Please enter the same passphrase in both boxes. + Introduz la mesma fras de pasu n'entrabes caxes, por favor. + FillGlobalStorageJob - + Set partition information Afitar información de partición - + Install %1 on <strong>new</strong> %2 system partition. Instalaráse %1 na <strong>nueva</strong> partición del sistema %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configuraráse la partición <strong>nueva</strong> %2 col puntu montaxe <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalaráse %2 na partición del sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configuraráse la partición %3 de <strong>%1</strong> col puntu montaxe <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalaráse'l cargador d'arranque en <strong>%1</strong>. - + Setting up mount points. Configurando puntos de montaxe. @@ -930,58 +1025,73 @@ L'instalador colará y perderánse toles camudancies. &Reaniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Too fecho.</h1><br/>%1 instalóse nel to ordenador.<br/>Quiciabes quieras reaniciar agora al to sistema nuevu, o siguir usando l'entornu live %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Finar + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatiar partición %1 (sistema de ficheros: %2, tamañu: %3 MB) en %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatiaráse la partición <strong>%3MB</strong> de <strong>%1</strong> col sistema de ficheros <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatiando la partición %1 col sistema de ficheros %2. - + The installer failed to format partition %1 on disk '%2'. L'instalador falló al formatiar la partición %1 nel discu «%2». - + Could not open device '%1'. Nun pudo abrise'l preséu «%1». - + Could not open partition table. Nun pudo abrise la tabla particiones. - + The installer failed to create file system on partition %1. L'instalador falló al crear el sistema ficheros na partición «%1». - + The installer failed to update partition table on disk '%1'. L'instalador falló al anovar la tabla particiones nel discu «%1». @@ -1019,12 +1129,12 @@ L'instalador colará y perderánse toles camudancies. KeyboardPage - + Set keyboard model to %1.<br/> Afitóse'l modelu de tecláu a %1.<br/> - + Set keyboard layout to %1/%2. Afitóse la distribución de tecláu a %1/%2. @@ -1032,7 +1142,7 @@ L'instalador colará y perderánse toles camudancies. KeyboardViewStep - + Keyboard Tecláu @@ -1040,15 +1150,25 @@ L'instalador colará y perderánse toles camudancies. LCLocaleDialog - + System locale setting Axuste de locale del sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. L'axustes de locale del sistema afeuta a la llingua y al conxuntu de caráuteres afitáu pa dellos elementos de la interfaz d'usuaru de llinia comandos.<br/>L'axuste actual ye <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ L'instalador colará y perderánse toles camudancies. LocalePage - - - The system locale is set to %1. - La locale del sistema afitóse a %1. + + The system language will be set to %1. + Afitaráse la llingua'l sistema a %1. - + + The numbers and dates locale will be set to %1. + Los númberos y dates afitaránse a %1. + + + Region: Rexón: - + Zone: Zona: - + + &Change... &Cambiar... - + Set timezone to %1/%2.<br/> Afitóse'l fusu horariu a %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Cargando datos d'allugamientu... - + Location Allugamientu @@ -1219,6 +1350,32 @@ L'instalador colará y perderánse toles camudancies. Nun pudo abrise'l preséu %1 pa desfacer la copia. + + NetInstallPage + + + Name + Nome + + + + Description + Descripción + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalación de rede. (Deshabilitáu: Nun pue dise en cata del llistáu de paquetes, comprueba la conexón de rede) + + + + NetInstallViewStep + + + Package selection + Esbilla de paquetes + + Page_Keyboard @@ -1255,7 +1412,6 @@ L'instalador colará y perderánse toles camudancies. ¿Qué nome quies usar p'aniciar sesión? - @@ -1341,7 +1497,12 @@ L'instalador colará y perderánse toles camudancies. Partición nueva pa %1 - + + New partition + Partición nueva + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ L'instalador colará y perderánse toles camudancies. Partición nueva - + Name Nome - + File System Sistema de ficheros - + Mount Point Puntu montaxe - + Size Tamañu @@ -1399,32 +1560,32 @@ L'instalador colará y perderánse toles camudancies. &Desfacer toles camudancies - + New Partition &Table &Tabla de particiones nueva - + &Create &Crear - + &Edit &Editar - + &Delete &Desaniciar - + Install boot &loader on: &Instalar xestor d'arranque en: - + Are you sure you want to create a new partition table on %1? ¿De xuru que quies crear una tabla particiones nueva en %1? @@ -1432,88 +1593,98 @@ L'instalador colará y perderánse toles camudancies. PartitionViewStep - + Gathering system information... Axuntando información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalaráse %1 <strong>cabo</strong> otru sistema operativu. - + <strong>Erase</strong> disk and install %1. <strong>Desaniciaráse</strong>'l discu ya instalaráse %1. - + <strong>Replace</strong> a partition with %1. <strong>Trocaráse</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionáu <strong>Manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalaráse %1 <strong>cabo</strong> otru sistema operativu nel discu <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Desaniciaráse</strong>'l discu <strong>%2</strong> (%3) ya instalaráse %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Trocaráse</strong> una partición nel discu <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionáu <strong>manual</strong> nel discu <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discu <strong>%1</strong> (%2) - + Current: Anguaño: - + After: Dempués: - + No EFI system partition configured Nun hai dengún sistema EFI configuráu - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + Nun s'afitó la bandera del sistema EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + Precísase una partición del sistema EFI p'aniciar %1.<br/><br/>Configuróse una partición col puntu montaxe <strong>%2</strong> pero nun s'afitó la so bandera <strong>esp</strong>.<br/>P'afitar la bandera, volvi y edita la partición.<br/><br/>Pues siguir ensin afitar la bandera pero'l to sistema pue fallar al aniciase. + + + + Boot partition not encrypted + /boot non cifráu + + + + 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. @@ -1531,19 +1702,24 @@ L'instalador colará y perderánse toles camudancies. Por defeutu - + unknown - + extended - + unformatted - + ensin formatiar + + + + swap + intercambéu @@ -1564,64 +1740,64 @@ L'instalador colará y perderánse toles camudancies. Esbilla u instalar %1.<br/><font color="red">Alvertencia: </font> esto desaniciará tolos ficheros na partición esbillada. - + The selected item does not appear to be a valid partition. L'ementu esbilláu nun paez ser una partición válida. - + %1 cannot be installed on empty space. Please select an existing partition. %1 nun pue instalase nel espaciu baleru. Esbilla una partición esistente, por favor. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 nun pue instalase nuna partición estendida. Esbilla una partición llóxica o primaria esistente, por favor. - + %1 cannot be installed on this partition. %1 nun pue instalase nesta partición. - + Data partition (%1) Partición de datos (%1) - + Unknown system partition (%1) Partición del sistema desconocida (%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>%4</strong><br/><br/> La partición %1 ye perpequeña pa %2. Esbilla una cola capacidá de polo menos %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>Nun pue alcontrase una partición EFI nesti sistema. Volvi atrás y usa'l particionáu manual pa configurar %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>Instalaráse %1 en %2.<br/><font color="red">Alvertencia: </font>perderánse tolos datos na partición %2. - + The EFI system partition at %1 will be used for starting %2. La partición del sistema EFI en %1 usaráse p'aniciar %2. - + EFI system partition: Partición del sistema EFI: @@ -1629,55 +1805,60 @@ L'instalador colará y perderánse toles camudancies. RequirementsChecker - + Gathering system information... Axuntando información del sistema... - + has at least %1 GB available drive space tien polo menos %1 GB disponibles d'espaciu en discu - + There is not enough drive space. At least %1 GB is required. Nun hai espaciu abondu na unidá. Ríquense polo menos %1 GB. - + has at least %1 GB working memory polo menos %1 GB de memoria de trabayu - + The system does not have enough working memory. At least %1 GB is required. El sistema nun tien abonda memoria de trabayu. Ríquense polo menos %1 GB. - + is plugged in to a power source ta enchufáu a una fonte d'enerxía - + The system is not plugged in to a power source. El sistema nun ta enchufáu a una fonte d'enerxía. - + is connected to the Internet ta coneutáu a internet - + The system is not connected to the Internet. El sistema nun ta coneutáu a internet. - + The installer is not running with administrator rights. L'instalador nun ta executándose con drechos alministrativos. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ L'instalador colará y perderánse toles camudancies. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Afitar modelu de tecláu a %1, distribución a %2-%3 - + Failed to write keyboard configuration for the virtual console. Fallu al escribir la configuración de tecláu pa la consola virtual. - - + + + Failed to write to %1 Fallu al escribir a %1 - + Failed to write keyboard configuration for X11. Fallu al escribir la configuración de tecláu pa X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Fallu al escribir la configuración del tecláu nel direutoriu /etc/default esistente. + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - The installer failed to set flags on partition %1. + Flag new partition as <strong>%1</strong>. - + + Clearing flags on partition <strong>%1</strong>. + Llimpiando banderes na partición <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Llimpiando banderes na partición <strong>%2</strong> de %1MB + + + + Clearing flags on new partition. + Llimpiando banderes na partición nueva. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Axustando banderes <strong>%2</strong> na partición <strong>%1</strong> + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Afitando banderes <strong>%3</strong> na partición <strong>%2</strong> de %1MB + + + + Setting flags <strong>%1</strong> on new partition. + Afitando banderes <strong>%1</strong> na partición nueva. + + + + The installer failed to set flags on partition %1. + L'instalador falló al afitar les banderes na partición %1. + + + Could not open device '%1'. Nun pudo abrise'l preséu «%1». - + Could not open partition table on device '%1'. - + Nun pudo abrise la tabla de particiones nel preséu «%1». - + Could not find partition '%1'. Nun pudo alcontrase la partición «%1». @@ -1857,32 +2094,42 @@ L'instalador colará y perderánse toles camudancies. SetPasswordJob - + Set password for user %1 Afitar la contraseña pal usuariu %1 - + Setting password for user %1. Afitando la contraseña pal usuariu %1. - + Bad destination system path. Camín incorreutu del destín del sistema. - + rootMountPoint is %1 rootMountPoint ye %1 - + + Cannot disable root account. + Nun pue deshabilitase la cuenta root. + + + + passwd terminated with error code %1. + passwd finó col códigu de fallu %1. + + + Cannot set password for user %1. Nun pue afitase la contraseña pal usuariu %1. - + usermod terminated with error code %1. usermod finó col códigu de fallu %1. @@ -1915,12 +2162,12 @@ L'instalador colará y perderánse toles camudancies. Fallu na creación del enllaz, oxetivu: %1; nome d'enllaz: %2 - + Cannot set timezone, Nun pue afitase'l fusu horariu, - + Cannot open /etc/timezone for writing Nun pue abrise /etc/timezone pa escritura @@ -1944,33 +2191,33 @@ L'instalador colará y perderánse toles camudancies. UsersPage - + Your username is too long. El to nome d'usuariu ye perllargu. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. El to nome d'usuariu contién caráuteres non válidos. Almítense namái lletres en minúscula y númberos. - + Your hostname is too short. El to nome d'agospiu ye percurtiu. - + Your hostname is too long. El to nome d'agospiu ye perllargu. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. El to nome d'agospiu contién caráuteres non válidos. Almítense namái lletres en minúscula y númberos. - - + + Your passwords do not match! ¡Les tos contraseñes nun concasen! @@ -2016,22 +2263,27 @@ L'instalador colará y perderánse toles camudancies. &Tocante a - + <h1>Welcome to the %1 installer.</h1> <h1>Bienllegáu al instalador %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Afáyate nel instalador Calamares pa %1.</h1> + + + About %1 installer Tocante al instaldor %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>pa %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac <teo@kde.org><br/>Gracies a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini y Rohan Garg.<br/><br/>El desendolcu de <a href="http://calamares.io/">Calamares</a> ta sofitáu por <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support Sofitu %1 @@ -2039,7 +2291,7 @@ L'instalador colará y perderánse toles camudancies. WelcomeViewStep - + Welcome Bienllegáu diff --git a/lang/calamares_bg.ts b/lang/calamares_bg.ts index 740ed5b97..388bb98a8 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Избери дял, който да смалиш: - - - - Allocate drive space by dragging the divider below: - Разпредели дисковото пространство, като влачиш разделителя по-долу: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - С това действие, делът <strong>%1</strong>, който съдържа %4, ще бъде смален до %2МБ и нов %3МБ дял ще бъде създаден за %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - EFI системен дял не е намерен. Моля, опитайте пак като използвате ръчно поделяне за %1. - - - - The EFI system partition at %1 will be used for starting %2. - EFI системен дял в %1 ще бъде използван за стартиране на %2. - - - - EFI system partition: - EFI системен дял: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Среда за начално зареждане</strong> на тази система.<br><br>Старите x86 системи поддържат само <strong>BIOS</strong>.<br>Модерните системи обикновено използват <strong>EFI</strong>, но може също така да използват BIOS, ако са стартирани в режим на съвместимост. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + Тази система беше стартирана с <strong>EFI</strong> среда за начално зареждане.<br><br>За да се настрои стартирането от EFI, инсталаторът трябва да разположи програма за начално зареждане като <strong>GRUB</strong> или <strong>systemd-boot</strong> на <strong>EFI Системен Дял</strong>. Това се прави автоматично, освен ако не се избере ръчно поделяне, в такъв случай вие трябва да свършите тази работа. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + Тази система беше стартирана с <strong>BIOS</strong> среда за начално зареждане.<br><br>За да се настрои стартирането от BIOS, инсталаторът трябва да разположи програма за начално зареждане като <strong>GRUB</strong> в началото на дяла или на <strong>Сектора за Начално Зареждане</strong> близо до началото на таблицата на дяловете (предпочитано). Това се прави автоматично, освен ако не се избере ръчно поделяне, в такъв случай вие трябва да свършите тази работа. @@ -55,12 +22,12 @@ Master Boot Record of %1 - Сектор за начално зареждане от %1 + Сектор за начално зареждане на %1 Boot Partition - Дял за зареждане + Дял за начално зареждане @@ -101,7 +68,28 @@ Модули - + + Type: + Вид: + + + + + none + + + + + Interface: + Интерфейс: + + + + Tools + Инструменти + + + Debug information Информация за отстраняване на грешки @@ -166,7 +154,7 @@ Output: Bad parameters for process job call. - Лоши параметри за извикване на задача за процес. + Невалидни параметри за извикване на задача за процес. @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. Изпълнение на %1 операция. - + Bad working directory path Невалиден път на работната директория - + Working directory %1 for python job %2 is not readable. Работна директория %1 за python задача %2 не се чете. - + Bad main script file - Погрешен файл на главен скрипт + Невалиден файл на главен скрипт - + Main script file %1 for python job %2 is not readable. Файлът на главен скрипт %1 за python задача %2 не се чете. - + Boost.Python error in job "%1". Boost.Python грешка в задача "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Назад - + &Next &Напред - - + + &Cancel &Отказ - + + + Cancel installation without changing the system. + + + + Cancel installation? Отмяна на инсталацията? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Наистина ли искате да отмените текущият процес на инсталиране? Инсталатора ще прекъсне и всичките промени ще бъдат загубени. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Продължаване? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Инсталатора на %1 ще направи промени по вашия диск за да инсталира %2. <br><strong>Промените ще бъдат окончателни.</strong> - + &Install now &Инсталирай сега - + Go &back В&ръщане - - &Quit - &Изход + + &Done + - + + The installation is complete. Close the installer. + + + + Error Грешка - + Installation Failed Неуспешна инсталация @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Неизвестен тип изключение - + unparseable Python error неанализируема Python грешка - + unparseable Python traceback неанализируемо Python проследяване - + Unfetchable Python error. Недостъпна Python грешка. @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 Инсталатор - + Show debug information Покажи информация за отстраняване на грешки @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Проверка на файловата система на дял %1. - + The file system check on partition %1 failed. Проверката на файловата система на дял %1 се провали. @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Този компютър не отговаря на минималните изисквания за инсталиране %1.<br/>Инсталацията не може да продължи. <a href="#details">Детайли...</a> @@ -356,20 +370,20 @@ The installer will quit and all changes will be lost. This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Този компютър не отговаря на някои от препоръчителните изисквания за инсталиране %1.<br/>Инсталацията може да продължи, но някои свойства могат да бъдат неналични. + Този компютър не отговаря на някои от препоръчителните изисквания за инсталиране %1.<br/>Инсталацията може да продължи, но някои свойства могат да бъдат недостъпни. - + This program will ask you some questions and set up %2 on your computer. Тази програма ще ви зададе няколко въпроса и ще конфигурира %2 на вашия компютър. - + For best results, please ensure that this computer: За най-добри резултати, моля бъдете сигурни че този компютър: - + System requirements Системни изисквания @@ -382,120 +396,127 @@ The installer will quit and all changes will be lost. Форма - + After: След: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Самостоятелно поделяне</strong><br/>Можете да създадете или преоразмерите дяловете сами. - + Boot loader location: - + Локация на програмата за начално зареждане: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 ще се смали до %2МБ и нов %3МБ дял ще бъде създаден за %4. - + Select storage de&vice: - + Изберете ус&тройство за съхранение: - - - - + + + + Current: Сегашен: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Изберете дял за смаляване, после влачете долната лента за преоразмеряване</strong> - + <strong>Select a partition to install on</strong> - + <strong>Изберете дял за инсталацията</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. EFI системен дял не е намерен. Моля, опитайте пак като използвате ръчно поделяне за %1. - + The EFI system partition at %1 will be used for starting %2. EFI системен дял в %1 ще бъде използван за стартиране на %2. - + EFI system partition: EFI системен дял: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Това устройство за съхранение няма инсталирана операционна система. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Изтриване на диска</strong><br/>Това ще <font color="red">изтрие</font> всички данни върху устройството за съхранение. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Това устройство за съхранение има инсталиран %1. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Инсталирайте покрай</strong><br/>Инсталатора ще раздроби дяла за да направи място за %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Замени дял</strong><br/>Заменя този дял с %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Това устройство за съхранение има инсталирана операционна система. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Това устройство за съхранение има инсталирани операционни системи. Какво ще правите?<br/>Ще може да прегледате и потвърдите избора си, преди да се направят промени по устройството за съхранение. ClearMountsJob - + Clear mounts for partitioning operations on %1 Разчисти монтиранията за операциите на подялбата на %1 - + Clearing mounts for partitioning operations on %1. Разчистване на монтиранията за операциите на подялбата на %1 - + Cleared all mounts for %1 Разчистени всички монтирания за %1 @@ -503,22 +524,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Разчисти всички временни монтирания. - + Clearing all temporary mounts. Разчистване на всички временни монтирания. - + Cannot get list of temporary mounts. Не може да се вземе лист от временни монтирания. - + Cleared all temporary mounts. Разчистени всички временни монтирания. @@ -531,72 +552,82 @@ The installer will quit and all changes will be lost. Създай дял - + + MiB + + + + Partition &Type: &Тип на дяла: - + &Primary &Основен - + E&xtended Р&азширен - + Fi&le System: Фа&йлова система: - + Flags: Флагове: - + &Mount Point: Точка на &монтиране: - + Si&ze: Раз&мер: - - MB - МБ + + En&crypt + - + Logical Логическа - + Primary Главна - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - Създай нов %2MB дял върху %4 (%3) със файлова система %1. + Създай нов %2МБ дял върху %4 (%3) със файлова система %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Създай нов <strong>%2MB</strong> дял върху <strong>%4</strong> (%3) със файлова система <strong>%1</strong>. + Създай нов <strong>%2МБ</strong> дял върху <strong>%4</strong> (%3) със файлова система <strong>%1</strong>. @@ -688,67 +719,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Създай потребител %1 - + Create user <strong>%1</strong>. Създай потребител <strong>%1</strong>. - + Creating user %1. Създаване на потребител %1. - + Sudoers dir is not writable. Директорията sudoers е незаписваема. - + Cannot create sudoers file for writing. Не може да се създаде sudoers файл за записване. - + Cannot chmod sudoers file. Не може да се изпълни chmod върху sudoers файла. - + Cannot open groups file for reading. Не може да се отвори файла на групите за четене. - + Cannot create user %1. Не може да се създаде потребител %1. - + useradd terminated with error code %1. useradd прекратен с грешка, код %1. - - Cannot set full name for user %1. - Не може да се постави пълното име на потребител %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn прекратен с грешка, код %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Не може да се постави притежанието на домашната директория за потребител %1. - + chown terminated with error code %1. chown прекратен с грешка, код %1. @@ -794,34 +825,34 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Типа на <strong>таблицата на дяловете</strong> на избраното устройство за съхранение.<br><br>Единствения начин да се промени е като се изчисти и пресъздаде таблицата на дяловете, като по този начин всички данни върху устройството ще бъдат унищожени.<br>Инсталатора ще запази сегашната таблица на дяловете, освен ако не изберете обратното.<br>Ако не сте сигурни - за модерни системи се препоръчва GPT. This device has a <strong>%1</strong> partition table. - + Устройството има <strong>%1</strong> таблица на дяловете. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Това е <strong>loop</strong> устройство.<br><br>Представлява псевдо-устройство, без таблица на дяловете, което прави файловете достъпни като блок устройства. Обикновено съдържа само една файлова система. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + Инсталатора <strong>не може да открие таблица на дяловете</strong> на избраното устройство за съхранение.<br><br>Таблицата на дяловете липсва, повредена е или е от неизвестен тип.<br>Инсталатора може да създаде нова таблица на дяловете автоматично или ръчно, чрез програмата за подялба. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Това е препоръчаният тип на таблицата на дяловете за модерни системи, които стартират от <strong>EFI</strong> среда за начално зареждане. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Тази таблица на дяловете е препоръчителна само за стари системи, които стартират с <strong>BIOS</strong> среда за начално зареждане. GPT е препоръчителна в повечето случаи.<br><br><strong>Внимание:</strong> MBR таблица на дяловете е остарял стандарт от времето на MS-DOS.<br>Само 4 <em>главни</em> дяла могат да бъдат създадени и от тях само един може да е <em>разширен</em> дял, който може да съдържа много <em>логически</em> дялове. @@ -832,6 +863,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 @@ -870,50 +927,88 @@ The installer will quit and all changes will be lost. Раз&мер: - + + MiB + + + + Fi&le System: Фа&йлова система: - + Flags: Флагове: + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + Форма + + + + En&crypt system + Крип&тиране на системата + + + + Passphrase + Парола + + + + Confirm passphrase + Потвърди паролата + + + + Please enter the same passphrase in both boxes. + + FillGlobalStorageJob - + Set partition information Постави информация за дял - + Install %1 on <strong>new</strong> %2 system partition. Инсталирай %1 на <strong>нов</strong> %2 системен дял. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Създай <strong>нов</strong> %2 дял със точка на монтиране <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Инсталирай %2 на %3 системен дял <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Създай %3 дял <strong>%1</strong> с точка на монтиране <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Инсталиране на зареждач върху <strong>%1</strong>. - + Setting up mount points. Настройка на точките за монтиране. @@ -931,58 +1026,73 @@ The installer will quit and all changes will be lost. &Рестартирай сега - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Завършено.</h1><br/>%1 беше инсталирана на вашият компютър.<br/>Вече можете да рестартирате в новата си система или да продължите да използвате %2 Живата среда. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Завърши + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Форматирай дял %1 (файлова система: %2, размер: %3 МБ) on %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Форматирай <strong>%3MB</strong> дял <strong>%1</strong> с файлова система <strong>%2</strong>. + Форматирай <strong>%3МБ</strong> дял <strong>%1</strong> с файлова система <strong>%2</strong>. - + Formatting partition %1 with file system %2. Форматирай дял %1 с файлова система %2. - + The installer failed to format partition %1 on disk '%2'. Инсталатора не успя да форматира дял %1 на диск '%2'. - + Could not open device '%1'. Не можа да се отвори устройство '%1'. - + Could not open partition table. Не можа да се отвори таблица на дяловете. - + The installer failed to create file system on partition %1. Инсталатора не успя да създаде файлова система върху дял %1. - + The installer failed to update partition table on disk '%1'. Инсталатора не успя да актуализира файлова система върху дял %1. @@ -1020,12 +1130,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Постави модел на клавиатурата на %1.<br/> - + Set keyboard layout to %1/%2. Постави оформлението на клавиатурата на %1/%2. @@ -1033,7 +1143,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Клавиатура @@ -1041,14 +1151,24 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - Настройка на местността на системата + Настройка на локацията на системата - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - Местността на системата засяга езика и символите зададени за някои елементи на командния потребителски интерфейс.<br/>Текущата настройка е <strong>%1</strong>. + Локацията на системата засяга езика и символите зададени за някои елементи на командния ред.<br/>Текущата настройка е <strong>%1</strong>. + + + + &Cancel + + + + + &OK + @@ -1132,41 +1252,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - Местността на системата е поставена на %1. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Регион: - + Zone: Зона: - + + &Change... &Промени... - + Set timezone to %1/%2.<br/> Постави часовата зона на %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Зареждане на данните за местоположение - + Location Местоположение @@ -1220,6 +1351,32 @@ The installer will quit and all changes will be lost. Не можа да се отвори устройство %1 за обратно копиране. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1256,7 +1413,6 @@ The installer will quit and all changes will be lost. Какво име искате да използвате за влизане? - @@ -1314,17 +1470,17 @@ The installer will quit and all changes will be lost. Root - + Основен Home - + Домашен Boot - + Зареждане @@ -1334,7 +1490,7 @@ The installer will quit and all changes will be lost. Swap - + Swap @@ -1342,7 +1498,12 @@ The installer will quit and all changes will be lost. Нов дял за %1 - + + New partition + + + + %1 %2 %1 %2 @@ -1362,22 +1523,22 @@ The installer will quit and all changes will be lost. Нов дял - + Name Име - + File System Файлова система - + Mount Point Точка на монтиране - + Size Размер @@ -1392,7 +1553,7 @@ The installer will quit and all changes will be lost. Storage de&vice: - + Ус&тройство за съхранение" @@ -1400,32 +1561,32 @@ The installer will quit and all changes will be lost. &Възвърни всички промени - + New Partition &Table Нова &таблица на дяловете - + &Create &Създай - + &Edit &Редактирай - + &Delete &Изтрий - + Install boot &loader on: - Инсталирай &зареждача върху: + Инсталирай &устройството за начално зареждане върху: - + Are you sure you want to create a new partition table on %1? Сигурни ли сте че искате да създадете нова таблица на дяловете върху %1? @@ -1433,88 +1594,98 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Събиране на системна информация... - + Partitions Дялове - + Install %1 <strong>alongside</strong> another operating system. Инсталирай %1 <strong>заедно</strong> с друга операционна система. - + <strong>Erase</strong> disk and install %1. <strong>Изтрий</strong> диска и инсталирай %1. - + <strong>Replace</strong> a partition with %1. <strong>Замени</strong> дял с %1. - + <strong>Manual</strong> partitioning. <strong>Ръчно</strong> поделяне. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Инсталирай %1 <strong>заедно</strong> с друга операционна система на диск <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Изтрий</strong> диск <strong>%2</strong> (%3) и инсталирай %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Замени</strong> дял на диск <strong>%2</strong> (%3) с %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ръчно</strong> поделяне на диск <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Сегашен: - + After: След: - + No EFI system partition configured - + Няма конфигуриран EFI системен дял - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI системен дял е нужен за стартиране на %1.<br/><br/>За настройка на EFI системен дял се върнете назад и изберете или създайте FAT32 файлова система с включен <strong>esp</strong> флаг и точка на монтиране <strong>%2</strong>.<br/><br/>Може да продължите без EFI системен дял, но системата може да не успее да стартира. - + EFI system partition flag not set + Не е зададен флаг на EFI системен дял + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + EFI системен дял е нужен за стартиране на %1.<br/><br/>Дялът беше конфигуриран с точка на монтиране <strong>%2</strong>, но неговия <strong>esp</strong> флаг не е включен.<br/>За да включите флага се върнете назад и редактирайте дяла.<br/><br/>Може да продължите без флага, но системата може да не успее да стартира. + + + + Boot partition not encrypted - - An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + 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. @@ -1532,24 +1703,29 @@ The installer will quit and all changes will be lost. По подразбиране - + unknown неизвестна - + extended разширена - + unformatted неформатирана + + + swap + swap + Unpartitioned space or unknown partition table - + Неразделено пространство или неизвестна таблица на дяловете @@ -1565,64 +1741,64 @@ The installer will quit and all changes will be lost. Изберете къде да инсталирате %1.<br/><font color="red">Предупреждение: </font>това ще изтрие всички файлове върху избраният дял. - + The selected item does not appear to be a valid partition. Избраният предмет не изглежда да е валиден дял. - + %1 cannot be installed on empty space. Please select an existing partition. %1 не може да бъде инсталиран на празно пространство. Моля изберете съществуващ дял. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 не може да бъде инсталиран върху разширен дял. Моля изберете съществуващ основен или логически дял. - + %1 cannot be installed on this partition. %1 не може да бъде инсталиран върху този дял. - + Data partition (%1) Дял на данните (%1) - + Unknown system partition (%1) Непознат системен дял (%1) - + %1 system partition (%2) %1 системен дял (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - <strong>%4</strong><br/><br/>Дялът %1 е твърде малък за %2. Моля изберете дял с капацитет поне %3 GiB. + <strong>%4</strong><br/><br/>Дялът %1 е твърде малък за %2. Моля изберете дял с капацитет поне %3 ГБ. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>EFI системен дял не е намерен. Моля, опитайте пак като използвате ръчно поделяне за %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 ще бъде инсталиран върху %2.<br/><font color="red">Предупреждение: </font>всички данни на дял %2 ще бъдат изгубени. - + The EFI system partition at %1 will be used for starting %2. EFI системен дял в %1 ще бъде използван за стартиране на %2. - + EFI system partition: EFI системен дял: @@ -1630,55 +1806,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... Събиране на системна информация... - + has at least %1 GB available drive space има поне %1 ГБ свободено дисково пространство - + There is not enough drive space. At least %1 GB is required. - Няма достатъчно дисково пространство.Необходимо е поне %1 GB. + Няма достатъчно дисково пространство. Необходимо е поне %1 ГБ. - + has at least %1 GB working memory има поне %1 ГБ работна памет - + The system does not have enough working memory. At least %1 GB is required. - Системата не разполага с достатъчно работна памет.Необходима е поне %1 GB. + Системата не разполага с достатъчно работна памет. Необходима е поне %1 ГБ. - + is plugged in to a power source е включен към източник на захранване - + The system is not plugged in to a power source. Системата не е включена към източник на захранване. - + is connected to the Internet е свързан към интернет - + The system is not connected to the Internet. Системата не е свързана с интернет. - + The installer is not running with administrator rights. Инсталаторът не е стартиран с права на администратор. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1708,12 +1889,12 @@ The installer will quit and all changes will be lost. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Преоразмери <strong>%2MB</strong> дял <strong>%1</strong> на <strong>%3MB</strong>. + Преоразмери <strong>%2МБ</strong> дял <strong>%1</strong> на <strong>%3МБ</strong>. Resizing %2MB partition %1 to %3MB. - Преоразмеряване от %2MB дял %1 на %3MB. + Преоразмеряване от %2МБ дял %1 на %3МБ. @@ -1732,12 +1913,12 @@ The installer will quit and all changes will be lost. Scanning storage devices... - + Сканиране на устройствата за съхранение Partitioning - + Разделяне @@ -1773,71 +1954,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Постави модела на клавиатурата на %1, оформлението на %2-%3 - + Failed to write keyboard configuration for the virtual console. Неуспешно записването на клавиатурна конфигурация за виртуалната конзола. - - + + + Failed to write to %1 Неуспешно записване върху %1 - + Failed to write keyboard configuration for X11. Неуспешно записване на клавиатурна конфигурация за X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. + Задай флагове на дял %1. + + + + Set flags on %1MB %2 partition. - + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - + Изчисти флаговете на дял <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Сложи флаг на дял <strong>%1</strong> като <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - The installer failed to set flags on partition %1. + Flag new partition as <strong>%1</strong>. - + + Clearing flags on partition <strong>%1</strong>. + Изчистване на флаговете на дял <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Задаване на флагове <strong>%2</strong> на дял <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + Инсталатора не успя да зададе флагове на дял %1. + + + Could not open device '%1'. Не можа да се отвори устройство '%1'. - + Could not open partition table on device '%1'. Не можа да се отвори таблица на дяловете в устройство '%1'. - + Could not find partition '%1'. Не може да се намери дял '%1'. @@ -1847,7 +2084,7 @@ The installer will quit and all changes will be lost. Update geometry of partition %1. - Актуализирай геометрията на дял %1. + Обнови геометрията на дял %1. @@ -1858,32 +2095,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 - Постави парола за потребител %1 + Задай парола за потребител %1 - + Setting password for user %1. Задаване на парола за потребител %1 - + Bad destination system path. Лоша дестинация за системен път. - + rootMountPoint is %1 root точка на монтиране е %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Не може да се постави парола за потребител %1. - + usermod terminated with error code %1. usermod е прекратен с грешка %1. @@ -1898,12 +2145,12 @@ The installer will quit and all changes will be lost. Cannot access selected timezone path. - Няма достъп до избраната траектория за часова зона. + Няма достъп до избрания път за часова зона. Bad path: %1 - Лоша траектория: %1 + Лош път: %1 @@ -1916,12 +2163,12 @@ The installer will quit and all changes will be lost. Неуспешно създаване на връзка: %1; име на връзка: %2 - + Cannot set timezone, Не може да се зададе часова зона, - + Cannot open /etc/timezone for writing Не може да се отвори /etc/timezone за записване @@ -1945,33 +2192,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Вашето потребителско име е твърде дълго. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Потребителското ви име съдържа непозволени символи! Само малки букви и числа са позволени. - + Your hostname is too short. Вашето име на хоста е твърде кратко. - + Your hostname is too long. Вашето име на хоста е твърде дълго. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Вашето име на хоста съдържа непозволени символи! Само букви, цифри и тирета са позволени. - - + + Your passwords do not match! Паролите Ви не съвпадат! @@ -2017,22 +2264,27 @@ The installer will quit and all changes will be lost. &Относно - + <h1>Welcome to the %1 installer.</h1> <h1>Добре дошли при инсталатора на %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Относно инсталатор %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>Aвторско право 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Благодарение на: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a>разработката е спонсорирана от <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1 поддръжка @@ -2040,7 +2292,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Добре дошли diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index b57823ef9..cae1c9e09 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Escolliu la partició per reduir: - - - - Allocate drive space by dragging the divider below: - Assigneu l'espai del disc arrossegant el separador inferior: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Amb aquesta operació la partició <strong>%1</strong>, la qual conté %4, s'encongirà a %2MB i es crearà una nova partició de %3MB per a %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau torneu enrere i useu el particionament manual per a instal·lar %1. - - - - The EFI system partition at %1 will be used for starting %2. - S'utilitzarà la partició del sistema EFI a %1 per a iniciar %2. - - - - EFI system partition: - Partició EFI de sistema: - - 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. L'<strong>entorn d'arrencada</strong> d'aquest sistema.<br><br>Els sistemes antics x86 només tenen suport per a <strong>BIOS</strong>.<br>Els moderns normalment usen <strong>EFI</strong>, però també poden mostrar-se com a BIOS si l'entorn d'arrencada s'executa en mode de compatibilitat. - + 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. Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu vosaltres mateixos. - + 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. Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu pel vostre compte. @@ -101,7 +68,28 @@ Mòduls - + + Type: + Tipus: + + + + + none + cap + + + + Interface: + Interfície: + + + + Tools + Eines + + + Debug information Informació de depuració @@ -171,28 +159,28 @@ Sortida: External command failed to finish - L'ordre externa no ha finalitzat correctament + L'ordre externa no ha acabat correctament Command %1 failed to finish in %2s. Output: %3 - L'ordre %1 no s'ha pogut finalitzar en %2s. + L'ordre %1 no s'ha pogut acabar en %2s. Sortida: %3 External command finished with errors - L'ordre externa ha finalitzat amb errors + L'ordre externa ha acabat amb errors Command %1 finished with exit code %2. Output: %3 - L'ordre %1 ha finalitzat amb el codi de sortida %2. + L'ordre %1 ha acabat amb el codi de sortida %2. Sortida: %3 @@ -200,32 +188,32 @@ Sortida: Calamares::PythonJob - + Running %1 operation. Executant l'operació %1. - + Bad working directory path Ruta errònia del directori de treball - + Working directory %1 for python job %2 is not readable. El directori de treball %1 per a la tasca python %2 no és llegible. - + Bad main script file Fitxer erroni d'script principal - + Main script file %1 for python job %2 is not readable. El fitxer de script principal %1 per a la tasca de python %2 no és llegible. - + Boost.Python error in job "%1". Error de Boost.Python a la tasca "%1". @@ -233,65 +221,91 @@ Sortida: Calamares::ViewManager - + &Back &Enrere - + &Next &Següent - - + + &Cancel &Cancel·la - + + + Cancel installation without changing the system. + Cancel·leu la instal·lació sense canviar el sistema. + + + Cancel installation? Cancel·lar la instal·lació? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voleu cancel·lar el procés d'instal·lació actual? L'instal·lador es tancarà i tots els canvis es perdran. - + + &Yes + &Sí + + + + &No + &No + + + + &Close + Tan&ca + + + Continue with setup? Voleu continuar la configuració? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'instal·lador de %1 està a punt de fer canvis al disc per tal d'instal·lar-hi %2.<br/><strong>No podreu desfer aquests canvis.</strong> - + &Install now &Instal·la ara - + Go &back Vés &enrere - - &Quit - &Tanca + + &Done + &Fet - + + The installation is complete. Close the installer. + La instal·lació s'ha acabat. Tanqueu l'instal·lador. + + + Error Error - + Installation Failed La instal·lació ha fallat @@ -299,22 +313,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. CalamaresPython::Helper - + Unknown exception type Tipus d'excepció desconeguda - + unparseable Python error Error de Python no analitzable - + unparseable Python traceback Traceback de Python no analitzable - + Unfetchable Python error. Error de Python irrecuperable. @@ -322,12 +336,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. CalamaresWindow - + %1 Installer Instal·lador de %1 - + Show debug information Mostra la informació de depuració @@ -335,12 +349,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. CheckFileSystemJob - + Checking file system on partition %1. Comprovant el sistema de fitxers de la partició %1. - + The file system check on partition %1 failed. La comprovació del sistema de fitxers de la partició %1 ha fallat. @@ -348,7 +362,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Aquest ordinador no satisfà els requisits mínims per instal·lar-hi %1.<br/> La instal·lació no pot continuar. <a href="#details">Detalls...</a> @@ -358,17 +372,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. Aquest ordinador no satisfà alguns dels requisits recomanats per instal·lar-hi %1.<br/>La instal·lació pot continuar, però algunes característiques podrien estar desactivades. - + This program will ask you some questions and set up %2 on your computer. Aquest programa us farà unes quantes preguntes i instal·larà %2 al vostre ordinador. - + For best results, please ensure that this computer: Per obtenir els millors resultats, assegureu-vos, si us plau, que aquest ordinador: - + System requirements Requisits del sistema @@ -381,102 +395,109 @@ L'instal·lador es tancarà i tots els canvis es perdran. Formulari - + After: Després: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Partiment manual</strong><br/>Podeu crear o redimensionar les particions vosaltres mateixos. - + Boot loader location: Ubicació del carregador d'arrencada: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 s'encongirà a %2MB i es crearà una partició nova de %3MB per a %4. - + Select storage de&vice: Seleccioneu un dispositiu d'e&mmagatzematge: - - - - + + + + Current: Actual: - + + Reuse %1 as home partition for %2. + Reutilitza %1 com a partició de l'usuari per a %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Seleccioneu una partició per encongir i arrossegueu-la per redimensinar-la</strong> - + <strong>Select a partition to install on</strong> <strong>Seleccioneu una partició per fer-hi la instal·lació</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i useu el partiment manual per configurar %1. - + The EFI system partition at %1 will be used for starting %2. La partició EFI de sistema a %1 s'usarà per iniciar %2. - + EFI system partition: Partició EFI del sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge no sembla que tingui un sistema operatiu. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Esborra el disc</strong><br/>Això <font color="red">esborrarà</font> totes les dades del dispositiu seleccionat. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge té %1. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instal·la al costat</strong><br/>L'instal·lador reduirà una partició per fer espai per a %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Reemplaça una partició</strong><br/>Reemplaça una partició per %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge ja té un sistema operatiu. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Aquest dispositiu d'emmagatzematge ja múltiples sistemes operatius. Què voleu fer?<br/>Podreu revisar i confirmar la tria abans que es faci cap canvi al dispositiu. @@ -484,17 +505,17 @@ L'instal·lador es tancarà i tots els canvis es perdran. ClearMountsJob - + Clear mounts for partitioning operations on %1 Neteja els muntatges per les operacions de partició a %1 - + Clearing mounts for partitioning operations on %1. Netejant els muntatges per a les operacions del particionament de %1. - + Cleared all mounts for %1 S'han netejat tots els muntatges de %1 @@ -502,22 +523,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. ClearTempMountsJob - + Clear all temporary mounts. Neteja tots els muntatges temporals - + Clearing all temporary mounts. Netejant tots els muntatges temporals. - + Cannot get list of temporary mounts. No es pot obtenir la llista dels muntatges temporals. - + Cleared all temporary mounts. S'han netejat tots els muntatges temporals. @@ -530,60 +551,70 @@ L'instal·lador es tancarà i tots els canvis es perdran. Crea una partició - + + MiB + MB + + + Partition &Type: Partició & tipus: - + &Primary &Primària - + E&xtended &Ampliada - + Fi&le System: S&istema de fitxers: - + Flags: Banderes: - + &Mount Point: Punt de &muntatge: - + Si&ze: Mi&da: - - MB - MB + + En&crypt + En&cripta - + Logical Lògica - + Primary Primària - + GPT GPT + + + Mountpoint already in use. Please select another one. + El punt de muntatge ja s'usa. Si us plau, seleccioneu-ne un altre. + CreatePartitionJob @@ -687,69 +718,69 @@ L'instal·lador es tancarà i tots els canvis es perdran. CreateUserJob - + Create user %1 Crea l'usuari %1 - + Create user <strong>%1</strong>. Crea l'usuari <strong>%1</strong>. - + Creating user %1. Creant l'usuari %1. - + Sudoers dir is not writable. El directori de sudoers no té permisos d'escriptura. - + Cannot create sudoers file for writing. No es pot crear el fitxer sudoers a escriure. - + Cannot chmod sudoers file. No es pot fer chmod al fitxer sudoers. - + Cannot open groups file for reading. - No es pot obrir el fitxer groups per a ser llegit. + No es pot obrir el fitxer groups per ser llegit. - + Cannot create user %1. No es pot crear l'usuari %1. - + useradd terminated with error code %1. - useradd ha finalitzat amb el codi d'error %1. + useradd ha acabat amb el codi d'error %1. - - Cannot set full name for user %1. - No es pot assignar el nom complet de l'usuari %1. + + Cannot add user %1 to groups: %2. + No es pot afegir l'usuari %1 als grups: %2. - - chfn terminated with error code %1. - chfn ha finalitzat amb el codi d'error %1. + + usermod terminated with error code %1. + usermod ha acabat amb el codi d'error %1. - + Cannot set home directory ownership for user %1. - No es pot assignar el permís de propietat del directori personal de l'usuari %1. + No es pot establir la propietat del directori personal a l'usuari %1. - + chown terminated with error code %1. - chown ha finalitzat amb el codi d'error %1. + chown ha acabat amb el codi d'error %1. @@ -793,7 +824,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. El tipus de <strong>taula de particions</strong> actualment present al dispositiu d'emmagatzematge seleccionat. L'única manera de canviar el tipus de taula de particions és esborrar i tornar a crear la taula de particions des de zero, fet que destrueix totes les dades del dispositiu d'emmagatzematge. <br> Aquest instal·lador mantindrà la taula de particions actual llevat que decidiu expressament el contrari. <br>Si no n'esteu segur, als sistemes moderns es prefereix GPT. @@ -831,6 +862,32 @@ L'instal·lador es tancarà i tots els canvis es perdran. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Escriu la configuració de LUKS per a Dracut a %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Omet l'escriptura de la configuració de LUKS per a Dracut: la partició "/" no està encriptada + + + + Failed to open %1 + Ha fallat obrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Tasca C++ fictícia + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ L'instal·lador es tancarà i tots els canvis es perdran. Mi&da: - + + MiB + MB + + + Fi&le System: S&istema de fitxers: - + Flags: Banderes: + + + Mountpoint already in use. Please select another one. + El punt de muntatge ja s'usa. Si us plau, seleccioneu-ne un altre. + + + + EncryptWidget + + + Form + Formulari + + + + En&crypt system + En&cripta el sistema + + + + Passphrase + Contrasenya: + + + + Confirm passphrase + Confirmeu la contrasenya + + + + Please enter the same passphrase in both boxes. + Si us plau, escriviu la mateixa constrasenya a les dues caselles. + FillGlobalStorageJob - + Set partition information Estableix la informació de la partició - + Install %1 on <strong>new</strong> %2 system partition. Instal·la %1 a la partició de sistema <strong>nova</strong> %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Estableix la partició <strong>nova</strong> %2 amb el punt de muntatge <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instal·la %2 a la partició de sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Estableix la partició %3 <strong>%1</strong> amb el punt de muntatge <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instal·la el carregador d'arrencada a <strong>%1</strong>. - + Setting up mount points. Establint els punts de muntatge. @@ -930,58 +1025,73 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Reinicia ara - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tot fet.</h1><br/>%1 s'ha instal·lat al vostre ordinador.<br/>Ara podeu reiniciar-lo per tal d'accedir al sistema operatiu nou o bé continuar utilitzant l'entorn Live de %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>La instal·lació ha fallat</h1><br/>No s'ha instal·lat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2. + FinishedViewStep - + Finish Acaba + + + Installation Complete + Instal·lació acabada + + + + The installation of %1 is complete. + La instal·lació de %1 ha acabat. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formata la partició %1 (sistema de fitxers: %2, mida: %3 MB) de %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formata la partició de <strong>%3MB</strong> <strong>%1</strong> amb el sistema de fitxers <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatant la partició %1 amb el sistema d'arxius %2. - + The installer failed to format partition %1 on disk '%2'. L'instal·lador no ha pogut formatar la partició %1 del disc '%2'. - + Could not open device '%1'. No s'ha pogut obrir el dispositiu '%1'. - + Could not open partition table. No s'ha pogut obrir la taula de particions. - + The installer failed to create file system on partition %1. L'instal·lador no ha pogut crear el sistema de fitxers de la partició %1. - + The installer failed to update partition table on disk '%1'. L'instal·lador no ha pogut actualitzar la taula de particions del disc '%1'. @@ -1019,12 +1129,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. KeyboardPage - + Set keyboard model to %1.<br/> Assigna el model del teclat a %1.<br/> - + Set keyboard layout to %1/%2. Assigna la distribució del teclat a %1/%2. @@ -1032,7 +1142,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. KeyboardViewStep - + Keyboard Teclat @@ -1040,14 +1150,24 @@ L'instal·lador es tancarà i tots els canvis es perdran. LCLocaleDialog - + System locale setting - Configuració de la localització del sistema + Configuració de la llengua del sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - La configuració regional del sistema afecta la llengua i el joc de caràcters d'alguns elements de la interície de línia d'ordres. <br/>La configuració actual és <strong>%1</strong>. + La configuració local del sistema afecta la llengua i el joc de caràcters d'alguns elements de la interície de línia d'ordres. <br/>La configuració actual és <strong>%1</strong>. + + + + &Cancel + &Cancel·la + + + + &OK + D'ac&ord @@ -1131,41 +1251,52 @@ L'instal·lador es tancarà i tots els canvis es perdran. LocalePage - - - The system locale is set to %1. - S'ha triat %1 com a localització del sistema. + + The system language will be set to %1. + La llengua del sistema s'establirà a %1. - + + The numbers and dates locale will be set to %1. + Els números i les dates de la configuració local s'establiran a %1. + + + Region: Regió: - + Zone: Zona: - + + &Change... &Canvi... - + Set timezone to %1/%2.<br/> Estableix la zona horària a %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Carregant les dades de la ubicació... - + Location Ubicació @@ -1219,6 +1350,32 @@ L'instal·lador es tancarà i tots els canvis es perdran. No s'ha pogut obrir el dispositiu %1 per a restablir la còpia. + + NetInstallPage + + + Name + Nom + + + + Description + Descripció + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instal·lació per xarxa. (Inhabilitada: no es poden obtenir les llistes de paquets, comproveu la connexió.) + + + + NetInstallViewStep + + + Package selection + Selecció de paquets + + Page_Keyboard @@ -1234,7 +1391,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Type here to test your keyboard - Escriviu aquí per a comprovar el teclat + Escriviu aquí per comprovar el teclat @@ -1255,7 +1412,6 @@ L'instal·lador es tancarà i tots els canvis es perdran. Quin nom voleu utilitzar per iniciar la sessió d'usuari? - @@ -1270,7 +1426,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Choose a password to keep your account safe. - Escolliu una contrasenya per tal de mantenir el vostre compte d'usuari segur. + Trieu una contrasenya per tal de mantenir el compte d'usuari segur. @@ -1300,7 +1456,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. Choose a password for the administrator account. - Escolliu una contrasenya per al compte d'administració. + Trieu una contrasenya per al compte d'administració. @@ -1341,7 +1497,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Partició nova per a %1 - + + New partition + Partició nova + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ L'instal·lador es tancarà i tots els canvis es perdran. Partició nova - + Name Nom - + File System Sistema de fitxers - + Mount Point Punt de muntatge - + Size Mida @@ -1399,32 +1560,32 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Desfés tots els canvis - + New Partition &Table Nova &taula de particions - + &Create &Crea - + &Edit &Edita - + &Delete &Suprimeix - + Install boot &loader on: &Instal·la el carregador d'arrencada a: - + Are you sure you want to create a new partition table on %1? Esteu segurs que voleu crear una nova taula de particions a %1? @@ -1432,90 +1593,100 @@ L'instal·lador es tancarà i tots els canvis es perdran. PartitionViewStep - + Gathering system information... Recopilant informació del sistema... - + Partitions Particions - + Install %1 <strong>alongside</strong> another operating system. Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu. - + <strong>Erase</strong> disk and install %1. <strong>Esborra</strong> el disc i instal·la-hi %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplaça</strong> una partició amb %1. - + <strong>Manual</strong> partitioning. Partiment <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instal·la %1 <strong>al costat</strong> d'un altre sistema operatiu al disc <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Esborra</strong> el disc <strong>%2</strong> (%3) i instal·la-hi %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplaça</strong> una partició del disc <strong>%2</strong> (%3) amb %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partiment <strong>manual</strong> del disc <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disc <strong>%1</strong> (%2) - + Current: Actual: - + After: Després: - + No EFI system partition configured No hi ha cap partició EFI de sistema configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/>Per configurar una partició EFI de sistema, torneu enrere i seleccioneu o creeu un sistema de fitxers FAT32 amb la bandera <strong>esp</strong> habilitada i el punt de muntatge <strong>%2</strong>. <br/><br/>Podeu continuar sense la creació d'una partició EFI de sistema, però el sistema podria no iniciar-se. - + EFI system partition flag not set No s'ha establert la bandera de la partició EFI del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Cal una partició EFI de sistema per iniciar %1. <br/><br/> Ja s'ha configurat una partició amb el punt de muntatge <strong>%2</strong> però no se n'ha establert la bandera <strong>esp</strong>. Per establir-la-hi, torneu enrere i editeu la partició. <br/><br/>Podeu continuar sense establir la bandera, però el sistema podria no iniciar-se. + + + Boot partition not encrypted + Partició d'arrel no encriptada + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + S'ha establert una partició d'arrencada separada conjuntament amb una partició d'arrel encriptada, però la partició d'arrencada no està encriptada.<br/><br/>Hi ha aspectes de seguretat amb aquest tipus de configuració, perquè hi ha fitxers del sistema importants en una partició no encriptada.<br/>Podeu continuar, si així ho desitgeu, però el desbloqueig del sistema de fitxers succeirà després, durant l'inici del sistema.<br/>Per encriptar la partició d'arrencada, torneu enrere i torneu-la a crear seleccionant <strong>Encripta</strong> a la finestra de creació de la partició. + QObject @@ -1531,20 +1702,25 @@ L'instal·lador es tancarà i tots els canvis es perdran. Per defecte - + unknown desconeguda - + extended ampliada - + unformatted sense format + + + swap + Intercanvi + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ L'instal·lador es tancarà i tots els canvis es perdran. Seleccioneu on instal·lar %1.<br/><font color="red">Atenció: </font>això esborrarà tots els fitxers de la partició seleccionada. - + The selected item does not appear to be a valid partition. L'element seleccionat no sembla que sigui una partició vàlida. - + %1 cannot be installed on empty space. Please select an existing partition. %1 no es pot instal·lar en un espai buit. Si us plau, seleccioneu una partició existent. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 no es pot instal·lar en un partició ampliada. Si us plau, seleccioneu una partició existent primària o lògica. - + %1 cannot be installed on this partition. %1 no es pot instal·lar en aquesta partició. - + Data partition (%1) Partició de dades (%1) - + Unknown system partition (%1) Partició de sistema desconeguda (%1) - + %1 system partition (%2) %1 partició de sistema (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>La partició %1 és massa petita per a %2. Si us plau, seleccioneu una partició amb capacitat d'almenys %3 GB. - + <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/>No es pot trobar cap partició EFI enlloc del sistema. Si us plau, torneu enrere i useu el partiment manual per establir %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 s'instal·larà a %2.<br/><font color="red">Atenció: </font>totes les dades de la partició %2 es perdran. - + The EFI system partition at %1 will be used for starting %2. La partició EFI de sistema a %1 s'usarà per iniciar %2. - + EFI system partition: Partició EFI del sistema: @@ -1629,55 +1805,60 @@ L'instal·lador es tancarà i tots els canvis es perdran. RequirementsChecker - + Gathering system information... Recopilant informació del sistema... - + has at least %1 GB available drive space té com a mínim %1 GB d'espai de disc disponible. - + There is not enough drive space. At least %1 GB is required. No hi ha prou espai de disc disponible. Com a mínim hi ha d'haver %1 GB. - + has at least %1 GB working memory té com a mínim %1 GB de memòria de treball - + The system does not have enough working memory. At least %1 GB is required. El sistema no té prou memòria de treball. Com a mínim es necessita %1 GB. - + is plugged in to a power source està connectat a una font de corrent - + The system is not plugged in to a power source. El sistema no està connectat a una font de corrent. - + is connected to the Internet està connectat a Internet - + The system is not connected to the Internet. El sistema no està connectat a Internet. - + The installer is not running with administrator rights. L'instal·lador no s'ha executat amb privilegis d'administrador. + + + The screen is too small to display the installer. + La pantalla és massa petita per mostrar l'instal·lador. + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ L'instal·lador es tancarà i tots els canvis es perdran. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Canvia el model de teclat a %1, la disposició de teclat a %2-%3 - + Failed to write keyboard configuration for the virtual console. No s'ha pogut escriure la configuració del teclat per a la consola virtual. - - + + + Failed to write to %1 No s'ha pogut escriure a %1 - + Failed to write keyboard configuration for X11. No s'ha pogut escriure la configuració del teclat per X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Ha fallat escriure la configuració del teclat al directori existent /etc/default. + SetPartFlagsJob - + Set flags on partition %1. Estableix les banderes a la partició %1. - + + Set flags on %1MB %2 partition. + Estableix les banderes a la partició %1MB %2. + + + + Set flags on new partition. + Estableix les banderes a la partició nova. + + + Clear flags on partition <strong>%1</strong>. Neteja les banderes de la partició <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Neteja les banderes de la partició %1MB <strong>%2</strong>. + + + + Clear flags on new partition. + Neteja les banderes de la partició nova. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Estableix la bandera <strong>%2</strong> a la partició <strong>%1</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Estableix la bandera de la partició %1MB <strong>%2</strong> com a <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Estableix la bandera de la partició nova com a <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Netejant les banderes de la partició <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Es netegen les banderes de la partició %1MB <strong>%2</strong>. + + + + Clearing flags on new partition. + Es netegen les banderes de la partició nova. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Establint les banderes <strong>%2</strong> a la partició <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + S'estableixen les banderes <strong>%3</strong> a la partició %1MB <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + S'estableixen les banderes <strong>%1</strong> a la partició nova. + + + The installer failed to set flags on partition %1. L'instal·lador ha fallat en establir les banderes a la partició %1. - + Could not open device '%1'. No s'ha pogut obrir el dispositiu "%1". - + Could not open partition table on device '%1'. No s'ha pogut obrir la taula de particions del dispositiu "%1". - + Could not find partition '%1'. No s'ha pogut trobar la partició "%1". @@ -1857,32 +2094,42 @@ L'instal·lador es tancarà i tots els canvis es perdran. SetPasswordJob - + Set password for user %1 Assigneu una contrasenya per a l'usuari %1 - + Setting password for user %1. Establint la contrasenya de l'usuari %1. - + Bad destination system path. Destinació errònia de la ruta del sistema. - + rootMountPoint is %1 El punt de muntatge rootMountPoint és %1 - + + Cannot disable root account. + No es pot inhabilitar el compte d'arrel. + + + + passwd terminated with error code %1. + El procés passwd ha acabat amb el codi d'error %1. + + + Cannot set password for user %1. No s'ha pogut assignar la contrasenya de l'usuari %1. - + usermod terminated with error code %1. usermod ha terminat amb el codi d'error %1. @@ -1915,12 +2162,12 @@ L'instal·lador es tancarà i tots els canvis es perdran. Ha fallat la creació del vincle; destinació: %1, nom del vincle: %2 - + Cannot set timezone, No es pot establir la zona horària, - + Cannot open /etc/timezone for writing No es pot obrir /etc/timezone per escriure-hi @@ -1944,33 +2191,33 @@ L'instal·lador es tancarà i tots els canvis es perdran. UsersPage - + Your username is too long. El nom d'usuari és massa llarg. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. El nom d'usuari conté caràcters no vàlids. Només s'hi admeten lletres i números. - + Your hostname is too short. El nom d'usuari és massa curt. - + Your hostname is too long. El nom d'amfitrió és massa llarg. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. El nom d'amfitrió conté caràcters no vàlids. Només s'hi admeten lletres, números i guions. - - + + Your passwords do not match! Les contrasenyes no coincideixen! @@ -2016,22 +2263,27 @@ L'instal·lador es tancarà i tots els canvis es perdran. &Quant a - + <h1>Welcome to the %1 installer.</h1> <h1>Benvinguts a l'instal·lador %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Us donem la benvinguda a l'instal·lador Calamares per a %1.</h1> + + + About %1 installer Quant a l'instal·lador %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>per a %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac <teo@kde.org><br/>Agraïments: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini i Rohan Garg. El desenvolupament de <br/><br/><a href="http://calamares.io/">Calamares</a> està patrocinat per <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agraïments: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Equip de traducció del Calamares</a>.<br/><br/><a href="http://calamares.io/">El desenvolupament </a> del Calamares està patrocinat per <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suport @@ -2039,7 +2291,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. WelcomeViewStep - + Welcome Benvinguts diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts index 193239bc5..1bf3c9ae0 100644 --- a/lang/calamares_cs_CZ.ts +++ b/lang/calamares_cs_CZ.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Zvolte oddíl, který si přejete zmenšit. - - - - Allocate drive space by dragging the divider below: - Přidělte místo na disku pomocí rozdělovače níže: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Oddíl <strong>%1</strong> obsahující %4 bude zmenšen na %2MB a nový oddíl o velikosti %3MB bude vytvořen pro %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Nebyl nalezen žádný systémový EFI oddíl. Prosím, vraťte se zpět a zkuste pro nastavení %1 použít ruční rozdělení disku. - - - - The EFI system partition at %1 will be used for starting %2. - Pro zavedení %2 se využije systémový oddíl EFI %1. - - - - EFI system partition: - Systémový oddíl EFI: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Zaváděcí prostředí</strong> tohoto systému.<br><br>Starší x86 systémy podporují pouze <strong>BIOS</strong>.<br>Moderní systémy většinou využívají <strong>EFI</strong>, někdy lze toto prostředí přepnout do módu kompatibility a může se jevit jako BIOS. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + Systém byl spuštěn se zaváděcím prostředím <strong>EFI</strong>.<br><br>Abyste zaváděli systém prostředím EFI, instalátor musí zavést aplikaci pro zavádění systému, jako <strong>GRUB</strong> nebo <strong>systemd-boot</strong> na <strong>systémovém oddílu EFI</strong>. Proběhne to automaticky, pokud si nezvolíte ruční dělení disku, v tom případě si aplikaci pro zavádění musíte sami zvolit. - + 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. - + Systém byl spuštěn se zaváděcím prostředím <strong>BIOS</strong>.<br><br>Abyste zaváděli systém prostředím BIOS, instalátor musí umístit zavaděč systému, jako <strong>GRUB</strong>, buď na začátek oddílu nebo (lépe) do <strong>Master Boot Record</strong> na začátku tabulky oddílů. Proběhne to automaticky, pokud si nezvolíte ruční dělení disku, v tom případě si zavádění musíte nastavit sami. @@ -101,7 +68,28 @@ Moduly - + + Type: + Typ: + + + + + none + žádný + + + + Interface: + Rozhraní: + + + + Tools + Nástroje + + + Debug information Ladící informace @@ -156,12 +144,12 @@ Výstup: Command %1 failed to start. - Start příkazu %1 selhal. + Spuštění příkazu %1 selhalo. Internal error when starting command - Vnitřní chyba při startu příkazu + Vnitřní chyba při spouštění příkazu @@ -200,32 +188,32 @@ Výstup: Calamares::PythonJob - + Running %1 operation. Spouštím %1 operaci. - + Bad working directory path Špatná cesta k pracovnímu adresáři. - + Working directory %1 for python job %2 is not readable. Pracovní adresář %1 pro Python skript %2 není čitelný. - + Bad main script file Špatný hlavní soubor skriptu. - + Main script file %1 for python job %2 is not readable. Hlavní soubor %1 pro Python skript %2 není čitelný. - + Boost.Python error in job "%1". Boost.Python chyba ve skriptu "%1". @@ -233,65 +221,91 @@ Výstup: Calamares::ViewManager - + &Back &Zpět - + &Next &Další - - + + &Cancel &Zrušit - + + + Cancel installation without changing the system. + Zrušení instalace bez změny systému. + + + Cancel installation? Přerušit instalaci? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Opravdu chcete přerušit instalaci? Instalační program bude ukončen a všechny změny ztraceny. - + + &Yes + &Ano + + + + &No + &Ne + + + + &Close + &Zavřít + + + Continue with setup? Pokračovat s instalací? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalační program %1 provede změny na disku, aby se nainstaloval %2.<br/><strong>Změny nebude možné vrátit zpět.</strong> - + &Install now &Spustit instalaci - + Go &back Jít &zpět - - &Quit - &Ukončit + + &Done + &Hotovo - + + The installation is complete. Close the installer. + Instalace dokončena. Zavřete instalátor. + + + Error Chyba - + Installation Failed Instalace selhala @@ -299,22 +313,22 @@ Instalační program bude ukončen a všechny změny ztraceny. CalamaresPython::Helper - + Unknown exception type Neznámý typ výjimky - + unparseable Python error Chyba při parsování Python skriptu. - + unparseable Python traceback Chyba při parsování Python skriptu. - + Unfetchable Python error. Chyba při načítání Python skriptu. @@ -322,12 +336,12 @@ Instalační program bude ukončen a všechny změny ztraceny. CalamaresWindow - + %1 Installer %1 Instalátor - + Show debug information Ukázat ladící informace @@ -335,12 +349,12 @@ Instalační program bude ukončen a všechny změny ztraceny. CheckFileSystemJob - + Checking file system on partition %1. Kontroluji souborový systém na oddílu %1. - + The file system check on partition %1 failed. Kontrola souborového systému na oddílu %1 selhala. @@ -348,7 +362,7 @@ Instalační program bude ukončen a všechny změny ztraceny. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Počítač nesplňuje minimální požadavky pro instalaci %1.<br/>Instalace nemůže pokračovat <a href="#details">Detaily...</a> @@ -358,17 +372,17 @@ Instalační program bude ukončen a všechny změny ztraceny. Počítač nesplňuje některé doporučené požadavky pro instalaci %1.<br/>Instalace může pokračovat, ale některé funkce mohou být vypnuty. - + This program will ask you some questions and set up %2 on your computer. Tento program Vám bude pokládat otázky a pomůže nainstalovat %2 na Váš počítač. - + For best results, please ensure that this computer: Proces proběhne nejlépe, když tento počítač: - + System requirements Požadavky na systém @@ -381,102 +395,109 @@ Instalační program bude ukončen a všechny změny ztraceny. Formulář - + After: Po: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Ruční rozdělení disku</strong><br/>Můžete si vytvořit a upravit oddíly sami. - + Boot loader location: Umístění zaváděcího oddílu: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 bude zmenšen na %2MB a nový %3MB oddíl pro %4 bude vytvořen. - + Select storage de&vice: - + Zvolte paměťové zařízení: - - - - + + + + Current: - + Aktuální: - + + Reuse %1 as home partition for %2. + Opakované použití %1 jako domovský oddíl pro %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Vyberte, který oddíl chcete zmenšit, poté tažením spodní lišty můžete změnit jeho velikost.</strong> - + <strong>Select a partition to install on</strong> - + <strong>Vyberte oddíl pro provedení instalace</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Nebyl nalezen žádný systémový EFI oddíl. Prosím, vraťte se zpět a zkuste pro nastavení %1 použít ruční rozdělení disku. - + The EFI system partition at %1 will be used for starting %2. - + Pro zavedení %2 se využije systémový oddíl EFI %1. - + EFI system partition: - + Systémový oddíl EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Zdá se, že na tomto úložném zařízení není žádný operační systém. Jak chcete postupovat?<br/>Než se provedou jakékoliv změny nastavení Vašich úložných zařízení, ukáže se Vám přehled změn a budete požádáni o jejich potvrzení. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Vymazat disk</strong><br/>Touto volbou <font color="red">smažete</font> všechna data, která se nyní nachází na vybraném úložišti. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení jsem našel %1. Jak chcete postupovat?<br/>Než se provedou jakékoliv změny nastavení Vašich úložných zařízení, ukáže se Vám přehled změn a budete požádáni o jejich potvrzení. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalovat vedle</strong><br/>Instalační program zmenší oddíl a vytvoří místo pro %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Nahradit oddíl</strong><br/>Původní oddíl nahradí %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení již je operační systém. Jak chcete postupovat?<br/>Než se provedou jakékoliv změny nastavení Vašich úložných zařízení, ukáže se Vám přehled změn a budete požádáni o jejich potvrzení. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Na tomto úložném zařízení již je několik operačních systémů. Jak chcete postupovat?<br/>Než se provedou jakékoliv změny nastavení Vašich úložných zařízení, ukáže se Vám přehled změn a budete požádáni o jejich potvrzení. @@ -484,17 +505,17 @@ Instalační program bude ukončen a všechny změny ztraceny. ClearMountsJob - + Clear mounts for partitioning operations on %1 Odpojit připojené svazky pro potřeby rozdělení oddílů na %1 - + Clearing mounts for partitioning operations on %1. Odpojuji připojené svazky pro potřeby rozdělení oddílů na %1 - + Cleared all mounts for %1 Odpojeny všechny připojené svazky pro %1 @@ -502,22 +523,22 @@ Instalační program bude ukončen a všechny změny ztraceny. ClearTempMountsJob - + Clear all temporary mounts. Odpojit všechny dočasné přípojné body. - + Clearing all temporary mounts. Odpojuji všechny dočasné přípojné body. - + Cannot get list of temporary mounts. Nelze zjistit dočasné přípojné body. - + Cleared all temporary mounts. Vyčištěno od všech dočasných přípojných bodů. @@ -530,60 +551,70 @@ Instalační program bude ukončen a všechny změny ztraceny. Vytvořit oddíl - + + MiB + MiB + + + Partition &Type: &Typ oddílu: - + &Primary &Primární - + E&xtended &Rozšířený - + Fi&le System: - + &Souborový systém: - + Flags: - + Příznaky: - + &Mount Point: &Bod připojení: - + Si&ze: &Velikost: - - MB - MB + + En&crypt + Š&ifrovat - + Logical Logický - + Primary Primární - + GPT GPT + + + Mountpoint already in use. Please select another one. + Bod připojení je už používán. Prosím vyberte jiný. + CreatePartitionJob @@ -687,67 +718,67 @@ Instalační program bude ukončen a všechny změny ztraceny. CreateUserJob - + Create user %1 Vytvořit uživatele %1 - + Create user <strong>%1</strong>. Vytvořit uživatele <strong>%1</strong>. - + Creating user %1. Vytvářím uživatele %1. - + Sudoers dir is not writable. Nelze zapisovat do adresáře Sudoers. - + Cannot create sudoers file for writing. Nelze vytvořit soubor sudoers pro zápis. - + Cannot chmod sudoers file. Nelze použít chmod na soubor sudoers. - + Cannot open groups file for reading. Nelze otevřít soubor groups pro čtení. - + Cannot create user %1. Nelze vytvořit uživatele %1. - + useradd terminated with error code %1. Příkaz useradd ukončen s chybovým kódem %1. - - Cannot set full name for user %1. - Nelze nastavit celé jméno pro uživatele %1. + + Cannot add user %1 to groups: %2. + Nelze přidat uživatele %1 do skupin: %2. - - chfn terminated with error code %1. - Příkaz chfn ukončen s chybovým kódem %1. + + usermod terminated with error code %1. + usermod ukončen s chybovým kódem %1. - + Cannot set home directory ownership for user %1. Nelze nastavit vlastnictví domovského adresáře pro uživatele %1. - + chown terminated with error code %1. Příkaz chown ukončen s chybovým kódem %1. @@ -793,19 +824,19 @@ Instalační program bude ukončen a všechny změny ztraceny. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Typ <strong>tabulky oddílů</strong>, který je na vybraném úložném zařízení.<br><br>Jedinou možností změnit typ tabulky oddílů je smazání a znovu vytvoření nové tabulky oddílů, tím se smažou všechna data na daném úložném zařízení.<br>Instalační program zanechá stávající typ tabulky oddílů, pokud si sami nenavolíte jeho změnu.<br>Pokud si nejste jisti, na moderních systémech se upřednostňuje GPT. This device has a <strong>%1</strong> partition table. - + Zařízení má tabulku oddílů <strong>%1</strong>. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Vybrané úložné zařízení je <strong>loop</strong> zařízení.<br><br> Nejedná se o vlastní tabulku oddílů, je to pseudo zařízení, které zpřístupňuje soubory blokově. Tento typ nastavení většinou obsahuje jediný systém souborů. @@ -820,7 +851,7 @@ Instalační program bude ukončen a všechny změny ztraceny. <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>Tento typ tabulky oddílů je vhodný pro starší systémy, které jsou spouštěny z prostředí <strong>BIOS</strong>. Více se dnes využívá GPT.<br><strong>Upozornění:</strong> Tabulka oddílů MBR je zastaralý standard z dob MS-DOS.<br>Lze vytvořit pouze 4 <em>primární</em> oddíly, a z těchto 4, jeden může být <em>rozšířeným</em> oddílem, který potom může obsahovat více <em>logických</em> oddílů. @@ -831,6 +862,32 @@ Instalační program bude ukončen a všechny změny ztraceny. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Zapsat nastavení LUKS pro Dracut do %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Přeskočit zápis nastavení LUKS pro Dracut: oddíl "/" není šifovaný + + + + Failed to open %1 + Selhalo čtení %1 + + + + DummyCppJob + + + Dummy C++ Job + Slepá úloha C++ + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ Instalační program bude ukončen a všechny změny ztraceny. &Velikost: - + + MiB + MiB + + + Fi&le System: &Souborový systém: - + Flags: - + Příznaky: + + + + Mountpoint already in use. Please select another one. + Bod připojení je už používán. Prosím vyberte jiný. + + + + EncryptWidget + + + Form + Formulář + + + + En&crypt system + Z&ašifrovat systém + + + + Passphrase + Heslo: + + + + Confirm passphrase + Potvrď heslo + + + + Please enter the same passphrase in both boxes. + Zadejte prosím stejné heslo do obou polí. FillGlobalStorageJob - + Set partition information Nastavit informace oddílu - + Install %1 on <strong>new</strong> %2 system partition. Instalovat %1 na <strong>nový</strong> %2 systémový oddíl. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Nastavit <strong>nový</strong> %2 oddíl s přípojným bodem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalovat %2 na %3 systémový oddíl <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Nastavit %3 oddíl <strong>%1</strong> s přípojným bodem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalovat zavaděč na <strong>%1</strong>. - + Setting up mount points. Nastavuji přípojné body. @@ -930,58 +1025,73 @@ Instalační program bude ukončen a všechny změny ztraceny. &Restartovat nyní - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Instalace je u konce.</h1><br/>%1 byl nainstalován na Váš počítač.<br/>Teď můžete počítač restartovat a přejít do čerstvě naistalovaného systému, nebo můžete pokračovat v práci s živým prostředím %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Instalace selhala</h1><br/>%1 nebyl instalován na váš počítač.<br/>Hlášení o chybě: %2. + FinishedViewStep - + Finish Dokončit + + + Installation Complete + Instalace dokončena + + + + The installation of %1 is complete. + Instalace %1 je dokončena. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formátovat oddíl %1 (souborový systém: %2, velikost %3 MB) na %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Naformátovat <strong>%3MB</strong> oddíl <strong>%1</strong> souborovým systémem <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formátuji oddíl %1 souborovým systémem %2. - + The installer failed to format partition %1 on disk '%2'. Instalátor selhal při formátování oddílu %1 na disku '%2'. - + Could not open device '%1'. Nelze otevřít zařízení '%1'. - + Could not open partition table. Nelze otevřít tabulku oddílů. - + The installer failed to create file system on partition %1. Instalátor selhal při vytváření systému souborů na oddílu %1. - + The installer failed to update partition table on disk '%1'. Instalátor selhal při aktualizaci tabulky oddílů na disku '%1'. @@ -1019,12 +1129,12 @@ Instalační program bude ukončen a všechny změny ztraceny. KeyboardPage - + Set keyboard model to %1.<br/> Nastavit model klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavit rozložení klávesnice na %1/%2. @@ -1032,7 +1142,7 @@ Instalační program bude ukončen a všechny změny ztraceny. KeyboardViewStep - + Keyboard Klávesnice @@ -1040,15 +1150,25 @@ Instalační program bude ukončen a všechny změny ztraceny. LCLocaleDialog - + System locale setting Nastavení locale systému - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Nastavené locale systému ovlivňuje jazyk a znakovou sadu pro UI příkazové řádky.<br/>Současné nastavení je <strong>%1</strong>. + + + &Cancel + &Zrušit + + + + &OK + &OK + LicensePage @@ -1131,41 +1251,52 @@ Instalační program bude ukončen a všechny změny ztraceny. LocalePage - - - The system locale is set to %1. - Systémový locale je nastaven na %1. + + The system language will be set to %1. + Jazyk systému bude nastaven na 1%. - + + The numbers and dates locale will be set to %1. + Čísla a data národního prostředí budou nastavena na %1. + + + Region: Oblast: - + Zone: Pásmo: - + + &Change... &Změnit... - + Set timezone to %1/%2.<br/> Nastavit časové pásmo na %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Načítání informací o poloze... - + Location Poloha @@ -1219,6 +1350,32 @@ Instalační program bude ukončen a všechny změny ztraceny. Nelze otevřít zařízení %1 pro zpětné kopírování. + + NetInstallPage + + + Name + Jméno + + + + Description + Popis + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Síťová instalace. (Zakázáno: Nelze načíst seznamy balíků, zkontrolujte připojení k síti) + + + + NetInstallViewStep + + + Package selection + Výběr balíků + + Page_Keyboard @@ -1255,7 +1412,6 @@ Instalační program bude ukončen a všechny změny ztraceny. Jaké jméno chcete používat pro přihlašování do systému? - @@ -1341,7 +1497,12 @@ Instalační program bude ukončen a všechny změny ztraceny. Nový oddíl pro %1 - + + New partition + Nový oddíl + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Instalační program bude ukončen a všechny změny ztraceny. Nový oddíl - + Name Jméno - + File System - Souborový systé + Souborový systém - + Mount Point Přípojný bod - + Size Velikost @@ -1399,32 +1560,32 @@ Instalační program bude ukončen a všechny změny ztraceny. V&rátit všechny změny - + New Partition &Table Nová &tabulka oddílů - + &Create &Vytvořit - + &Edit &Upravit - + &Delete &Smazat - + Install boot &loader on: Nainstalovat &zavaděč na: - + Are you sure you want to create a new partition table on %1? Opravdu si přejete vytvořit novou tabulku oddílů na %1? @@ -1432,89 +1593,99 @@ Instalační program bude ukončen a všechny změny ztraceny. PartitionViewStep - + Gathering system information... Shromažďuji informace o systému... - + Partitions Oddíly - + Install %1 <strong>alongside</strong> another operating system. Instalovat %1 <strong>vedle</strong> dalšího operačního systému. - + <strong>Erase</strong> disk and install %1. <strong>Smazat</strong> disk a nainstalovat %1. - + <strong>Replace</strong> a partition with %1. <strong>Nahradit</strong> oddíl %1. - + <strong>Manual</strong> partitioning. <strong>Ruční</strong> dělení disku. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalovat %1 <strong>vedle</strong> dalšího operačního systému na disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Smazat</strong> disk <strong>%2</strong> (%3) a instalovat %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Nahradit</strong> oddíl na disku <strong>%2</strong> (%3) %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ruční</strong> dělení disku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: - + Současný: - + After: Potom: - + No EFI system partition configured - + Není nakonfigurován žádný EFI systémový oddíl - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Pro spuštění %1 je potřeba systémový oddíl.<br/><br/>Pro nastavení EFI systémového oddílu se vraťte zpět a vyberte nebo vytvořte oddíl typu FAT32 s příznakem <strong>esp</strong> a přípojným bodem <strong>%2</strong>.<br/><br/>Je možné pokračovat bez nastavení systémového oddílu EFI, ale váš systém nemusí jít spustit. - + EFI system partition flag not set - + Příznak EFI systémového oddílu není nastaven - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Pro spuštění %1 je potřeba systémový oddíl.<br/><br/>Byl nakonfigurován oddíl s přípojným bodem <strong>%2</strong> ale nemá nastaven příznak <strong>esp</strong>.<br/>Pro nastavení příznaku se vraťte zpět a upravte oddíl.<br/><br/>Je možné pokračovat bez nastavení příznaku, ale váš systém nemusí jít spustit. + + + + Boot partition not encrypted + Zaváděcí oddíl není šifrován + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Kromě šifrovaného kořenového oddílu byl vytvořen i nešifrovaný oddíl zavaděče.<br/><br/>To by mohl být bezpečnostní problém, protože na nešifrovaném oddílu jsou důležité soubory systému.<br/>Pokud chcete, můžete pokračovat, ale odemykání souborového systému bude probíhat později při startu systému.<br/>Pro zašifrování oddílu zavaděče se vraťte a vytvořte ho vybráním možnosti <strong>Šifrovat</strong> v okně při vytváření oddílu. @@ -1531,20 +1702,25 @@ Instalační program bude ukončen a všechny změny ztraceny. Výchozí - + unknown neznámý - + extended rozšířený - + unformatted nenaformátovaný + + + swap + odkládací oddíl + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Instalační program bude ukončen a všechny změny ztraceny. Vyberte, kam nainstalovat %1.<br/><font color="red">Upozornění: </font>tímto smažete všechny soubory ve vybraném oddílu. - + The selected item does not appear to be a valid partition. Vybraná položka není platným oddílem. - + %1 cannot be installed on empty space. Please select an existing partition. %1 nemůže být instalován na místo bez oddílu. Prosím vyberte existující oddíl. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 nemůže být instalován na rozšířený oddíl. Prosím vyberte existující primární nebo logický oddíl. - + %1 cannot be installed on this partition. %1 nemůže být instalován na tento oddíl. - + Data partition (%1) Datový oddíl (%1) - + Unknown system partition (%1) Neznámý systémový oddíl (%1) - + %1 system partition (%2) %1 systémový oddíl (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Oddíl %1 je příliš malý pro %2. Prosím vyberte oddíl s kapacitou alespoň %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Systémový oddíl EFI nenalezen. Prosím vraťte se a zvolte ruční rozdělení disku pro nastavení %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 bude instalován na %2.<br/><font color="red">Upozornění: </font>všechna data v oddílu %2 budou ztracena. - + The EFI system partition at %1 will be used for starting %2. Pro zavedení %2 se využije systémový oddíl EFI %1. - + EFI system partition: Systémový oddíl EFI: @@ -1629,55 +1805,60 @@ Instalační program bude ukončen a všechny změny ztraceny. RequirementsChecker - + Gathering system information... Shromažďuji informace o systému... - + has at least %1 GB available drive space má minimálně %1 GB dostupného místa na disku. - + There is not enough drive space. At least %1 GB is required. Nedostatek místa na disku. Je potřeba nejméně %1 GB. - + has at least %1 GB working memory má alespoň %1 GB operační paměti - + The system does not have enough working memory. At least %1 GB is required. Systém nemá dostatek paměti. Je potřeba nejméně %1 GB. - + is plugged in to a power source je připojený ke zdroji napájení - + The system is not plugged in to a power source. Systém není připojen ke zdroji napájení. - + is connected to the Internet je připojený k Internetu - + The system is not connected to the Internet. Systém není připojený k Internetu. - + The installer is not running with administrator rights. Instalační program není spuštěn s právy administrátora. + + + The screen is too small to display the installer. + Obrazovka je příliš malá pro zobrazení instalátoru. + ResizeFileSystemJob @@ -1772,73 +1953,129 @@ Instalační program bude ukončen a všechny změny ztraceny. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Nastavit model klávesnice na %1, rozložení na %2-%3 - + Failed to write keyboard configuration for the virtual console. Selhal zápis konfigurace klávesnice do virtuální konzole. - - + + + Failed to write to %1 Selhal zápis do %1 - + Failed to write keyboard configuration for X11. Selhal zápis konfigurace klávesnice pro X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Selhal zápis nastavení klávesnice do existující složky /etc/default. + SetPartFlagsJob - + Set flags on partition %1. - + Nastavit příznak oddílu %1. - + + Set flags on %1MB %2 partition. + Nastavit příznaky na %1MB %2 oddílu. + + + + Set flags on new partition. + Nastavit příznak na novém oddílu. + + + Clear flags on partition <strong>%1</strong>. - + Smazat příznaky oddílu <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Smazat příznaky na %1MB <strong>%2</strong> oddílu. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Smazat příznaky na novém oddílu. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Nastavit příznak oddílu <strong>%1</strong> jako <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Nastavit příznak %1MB <strong>%2</strong> oddílu jako <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Nastavit příznak <strong>%1</strong> na novém oddílu. + + + + Clearing flags on partition <strong>%1</strong>. + Mazání příznaků oddílu <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Mazání příznaků na %1MB <strong>%2</strong> oddílu. + + + + Clearing flags on new partition. + Mazání příznaků na novém oddílu. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Nastavování příznaků <strong>%2</strong> na oddíle <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Nastavování příznaků <strong>%3</strong> na %1MB <strong>%2</strong> oddílu. + + + + Setting flags <strong>%1</strong> on new partition. + Nastavování příznaků <strong>%1</strong> na novém oddílu. + + + The installer failed to set flags on partition %1. - + Instalátor selhal při nastavení příznaku oddílu %1. - + Could not open device '%1'. - + Nelze otevřít zařízení '%1'. - + Could not open partition table on device '%1'. - + Nelze otevřít tabulku oddílů na zařízení '%1'. - + Could not find partition '%1'. - + Oddíl '%1' nebyl nalezen. @@ -1857,32 +2094,42 @@ Instalační program bude ukončen a všechny změny ztraceny. SetPasswordJob - + Set password for user %1 Nastavit heslo pro uživatele %1 - + Setting password for user %1. Nastavuji heslo pro uživatele %1. - + Bad destination system path. Špatná cílová systémová cesta. - + rootMountPoint is %1 rootMountPoint je %1 - + + Cannot disable root account. + Nelze zakázat účet root. + + + + passwd terminated with error code %1. + Příkaz passwd ukončen s chybovým kódem %1. + + + Cannot set password for user %1. Nelze nastavit heslo uživatele %1. - + usermod terminated with error code %1. usermod ukončen s chybovým kódem %1. @@ -1915,12 +2162,12 @@ Instalační program bude ukončen a všechny změny ztraceny. Vytváření odkazu selhalo, cíl: %1; jméno odkazu: %2 - + Cannot set timezone, Nelze nastavit časovou zónu. - + Cannot open /etc/timezone for writing Nelze otevřít /etc/timezone pro zápis @@ -1944,33 +2191,33 @@ Instalační program bude ukončen a všechny změny ztraceny. UsersPage - + Your username is too long. Vaše uživatelské jméno je příliš dlouhé. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Vaše uživatelské jméno obsahuje neplatné znaky. Jsou povolena pouze malá písmena a čísla. - + Your hostname is too short. Vaše hostname je příliš krátké. - + Your hostname is too long. Vaše hostname je příliš dlouhé. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Vaše hostname obsahuje neplatné znaky. Jsou povoleny pouze písmena, čísla a pomlčky. - - + + Your passwords do not match! Zadaná hesla se neshodují! @@ -2016,22 +2263,27 @@ Instalační program bude ukončen a všechny změny ztraceny. &O nás - + <h1>Welcome to the %1 installer.</h1> <h1>Vítejte v instalačním programu %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Vítá vás instalační program Calamares pro %1.</h1> + + + About %1 installer O instalačním programu %1. - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Zasloužili se: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> vývoj je sponzorován <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Překladatelský tým Calamares</a>.<br/><br/>Vývoj <a href="http://calamares.io/">Calamares</a> je podporován <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 podpora @@ -2039,7 +2291,7 @@ Instalační program bude ukončen a všechny změny ztraceny. WelcomeViewStep - + Welcome Vítejte diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 28d42a1f7..5ce8ee77e 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Vælg partitionen der skal krympes: - - - - Allocate drive space by dragging the divider below: - Fordel disk plads ved at trække fordeleren nedenunder: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Med denne handling, vil partitionen <strong>%1</strong>, som indeholder %4, blive skrumpet til %2MB og en ny %3MB partition vil blive lavet for %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - En EFI partition blev ikke fundet på systemet. Venligst gå tilbage og brug manuel partitionering til at sætte %1 op. - - - - The EFI system partition at %1 will be used for starting %2. - EFI system partitionen ved %1 vil blive brugt til at starte %2. - - - - EFI system partition: - EFI system partition: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Bootmiljøet</strong> for dette system.<br><br>Ældre x86-systemer understøtter kun <strong>BIOS</strong>.<br>Moderne systemer bruger normalt <strong>EFI</strong>, men kan også vises som BIOS hvis det startes i kompatibilitetstilstand. - + 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. - + Dette system blev startet med et <strong>EFI</strong>-bootmiljø.<br><br>For at konfigurere opstart fra et EFI-miljø, bliver installationsprogrammet nødt til at installere et bootloaderprogram, såsom <strong>GRUB</strong> eller <strong>systemd-boot</strong> på en <strong>EFI-systempartition</strong>. Dette vil ske automatisk, med mindre du vælger manuel partitionering, hvor du i så fald skal vælge eller oprette den selv. - + 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. - + Dette system blev startet med et <strong>BIOS</strong>-bootmiljø.<br><br>For at konfigurere opstart fra et BIOS-miljø, bliver installationsprogrammet nødt til at installere en bootloader, såsom <strong>GRUB</strong>, enten i begyndelsen af en partition eller på <strong>Master Boot Record</strong> nær begyndelsen af partitionstabellen (foretrukket). Dette sker automatisk, med mindre du vælger manuel partitionering, hvor du i så fald skal opsætte den selv. @@ -60,17 +27,17 @@ Boot Partition - Boot Partition + Bootpartition System Partition - System Partition + Systempartition Do not install a boot loader - Installér ikke en boot loader + Installér ikke en bootloader @@ -83,27 +50,48 @@ Form - Form + Formular GlobalStorage - GlobalStorage + Globalt lager JobQueue - JobQueue + Jobkø Modules - Modules + Moduler - + + Type: + Type: + + + + + none + ingen + + + + Interface: + Grænseflade: + + + + Tools + Værktøjer + + + Debug information - Debug information + Fejlretningsinformation @@ -111,7 +99,7 @@ Install - Installér + Installation @@ -137,26 +125,26 @@ External command crashed - Extern kommando fejlede + Ekstern kommando holdt op med at virke Command %1 crashed. Output: %2 - Kommando %1 fejlede. -Udskrift: + Kommando %1 holdt op med at virke. +Output: %2 External command failed to start - Extern kommando fejlede i at starte + Start af ekstern kommando mislykkedes Command %1 failed to start. - Kommando %1 fejlede i at starte. + Start af kommando %1 mislykkedes. @@ -166,209 +154,235 @@ Udskrift: Bad parameters for process job call. - Dårlige parametre til process job kald. + Ugyldige parametre til kald af procesjob. External command failed to finish - Extern kommando fejlede i at færdiggøre + Ekstern kommando kunne ikke færdiggøres Command %1 failed to finish in %2s. Output: %3 - Kommando %1 fejlede i at færdiggøre efter %2s. -Udskrift: + Kommando %1 kunne ikke færdiggøres på %2 s. +Output: %3 External command finished with errors - Extern kommando blev færdiggjort uden fejl + Ekstern kommando blev færdiggjort med fejl Command %1 finished with exit code %2. Output: %3 - Kommando %1 blev færdiggjort med exit kode %2. -Udskrift: + Kommando %1 blev færdiggjort med afslutningskode %2. +Output: %3 Calamares::PythonJob - - - Running %1 operation. - Kører %1 handling. - - - - Bad working directory path - Dårlig arbejdsmappe sti - - - - Working directory %1 for python job %2 is not readable. - Arbejdsmappe %1 for python job %2 er ikke læsbar. - + Running %1 operation. + Kører %1-handling. + + + + Bad working directory path + Ugyldig arbejdsmappesti + + + + Working directory %1 for python job %2 is not readable. + Arbejdsmappe %1 for python-job %2 er ikke læsbar. + + + Bad main script file - Dårlig hoved script fil + Ugyldig primær skriptfil - + Main script file %1 for python job %2 is not readable. - Hoved script fil %1 for python job %2 er ikke læsbar. + Primær skriptfil %1 for python-job %2 er ikke læsbar. - + Boost.Python error in job "%1". - Boost.Python fejl i job "%1". + Boost.Python-fejl i job "%1". Calamares::ViewManager - + &Back &Tilbage - + &Next &Næste - - + + &Cancel &Annullér - + + + Cancel installation without changing the system. + Annullér installation uden at ændre systemet. + + + Cancel installation? Annullér installationen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Vil du virkelig annullere den igangværende installationsprocess? + Vil du virkelig annullere den igangværende installationsproces? Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. - + + &Yes + &Ja + + + + &No + &Nej + + + + &Close + &Luk + + + Continue with setup? Fortsæt med installation? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - %1 installationsprogrammet er ved at lave ændringer til din disk for at installere %2. <br/><strong>Det vil ikke være muligt at fortryde disse ændringer.</strong> + %1-installationsprogrammet er ved at lave ændringer til din disk for at installere %2. <br/><strong>Det vil ikke være muligt at fortryde disse ændringer.</strong> - + &Install now &Installér nu - + Go &back Gå &tilbage - - &Quit - &Luk + + &Done + &Færdig - + + The installation is complete. Close the installer. + Installationen er fuldført. Luk installationsprogrammet. + + + Error Fejl - + Installation Failed - Installation Fejlede + Installation mislykkedes CalamaresPython::Helper - + Unknown exception type Ukendt undtagelsestype - + unparseable Python error - Utilgængelig Python-fejl + Python-fejl som ikke kan fortolkes - + unparseable Python traceback - Utilgængeligt Python-traceback + Python-traceback som ikke kan fortolkes - + Unfetchable Python error. - Uhentbar Python fejl. + Python-fejl som ikke kan hentes. CalamaresWindow - + %1 Installer - %1 Installationsprogram + %1-installationsprogram - + Show debug information - Vis debug information + Vis fejlretningsinformation CheckFileSystemJob - + Checking file system on partition %1. Tjekker filsystem på partition %1. - + The file system check on partition %1 failed. - Filsystem tjekket på partition %1 fejlede. + Filsystemtjek på partition %1 mislykkedes. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - Denne computer møder ikke minimum systemkrav for at installere %1.<br/>Installationen kan ikke fortsætte. <a href="#details">Detaljer...</a> + Denne computer møder ikke minimumsystemkravene for at installere %1.<br/>Installationen kan ikke fortsætte. <a href="#details">Detaljer...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Denne computer møder ikke nogle af de anbefalede systemkrav for at installere %1.<br/>Installationen kan fortsætte, men nogle features kan være slået fra. + Denne computer møder ikke nogle af de anbefalede systemkrav for at installere %1.<br/>Installationen kan fortsætte, men nogle funktionaliteter kan være deaktiveret. - + This program will ask you some questions and set up %2 on your computer. - Dette program vil stille dig et par spørgsmål og sætte %2 op på din computer. + Dette program vil stille dig nogle spørgsmål og opsætte %2 på din computer. - + For best results, please ensure that this computer: - For det bedste resultat, vær sikker på at denne computer: + For det bedste resultat sørg venligst for at denne computer: - + System requirements Systemkrav @@ -378,148 +392,155 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular - + After: Efter: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Manuel partitionering</strong><br/>Do kan lave og ændre størrelse på partitioner selv. + <strong>Manuel partitionering</strong><br/>Du kan selv oprette og ændre størrelse på partitioner. - + Boot loader location: - Boot loader lokation: + Bootloaderplacering: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 vil blive krympet til %2MB og en ny %3MB partition vil blive lavet til %4. + %1 vil blive skrumpet til %2 MB og en ny %3 MB partition vil blive oprettet for %4. - + Select storage de&vice: - + Vælg lageren&hed: - - - - + + + + Current: - + Nuværende: - + + Reuse %1 as home partition for %2. + Genbrug %1 som hjemmepartition til %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Vælg en partition der skal mindskes, træk herefter den nederste bjælke for at ændre størrelsen</strong> - + <strong>Select a partition to install on</strong> - + <strong>Vælg en partition at installere på</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + En EFI-partition blev ikke fundet på systemet. Gå venligst tilbage og brug manuel partitionering til at opsætte %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI-systempartitionen ved %1 vil blive brugt til at starte %2. - + EFI system partition: - + EFI-systempartition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Denne lagerenhed ser ikke ud til at indeholde et styresystem. Hvad vil du gerne gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. + Denne lagerenhed ser ikke ud til at indeholde et styresystem. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>Slet disk</strong><br/>Dette vil <font color="red">slette</font> alt data der er på den valgte lagerenhed lige nu. + <strong>Slet disk</strong><br/>Dette vil <font color="red">slette</font> alt data der er på den valgte lagerenhed. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Denne lagerenhed har %1 på den. Hvad vil du gerne gøre?</br>Du vil få mulighed for at se og bekræfte dine valg før det sker ændringer til lagerenheden. + Denne lagerenhed har %1 på sig. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før det sker ændringer til lagerenheden. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Installér ved siden af</strong><br/>Installationsprogrammet vil krympe en partition for at gøre plads til %1. + <strong>Installér ved siden af</strong><br/>Installationsprogrammet vil mindske en partition for at gøre plads til %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Erstat en partition</strong><br/>Erstatter en partition med %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Denne lagerenhed indeholder allerede et styresystem. Hvad vil du gerne gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. + Denne lagerenhed indeholder allerede et styresystem. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Denne lagerenhed indeholder flere styresystemer. Hvad vil du gerne gøre?</br>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. + Denne lagerenhed indeholder flere styresystemer. Hvad ønsker du at gøre?<br/>Du vil få mulighed for at se og bekræfte dine valg før der sker ændringer til lagerenheden. ClearMountsJob - + Clear mounts for partitioning operations on %1 - Frigør monteringer til partitionering på %1 + Ryd monteringspunkter for partitioneringshandlinger på %1 - + Clearing mounts for partitioning operations on %1. - Renser monteringspunkter for partitionerings handling på %1. + Rydder monteringspunkter for partitioneringshandlinger på %1. - + Cleared all mounts for %1 - Frigjorde alle monteringer til %1 + Ryddede alle monteringspunkter til %1 ClearTempMountsJob - + Clear all temporary mounts. - Rens alle midlertidige monteringspunkter. + Ryd alle midlertidige monteringspunkter. - + Clearing all temporary mounts. - Renser alle midlertidige monteringspunkter. + Rydder alle midlertidige monteringspunkter. - + Cannot get list of temporary mounts. Kan ikke få liste over midlertidige monteringspunkter. - + Cleared all temporary mounts. - Rensede alle midlertidige monteringspunkter. + Rydder alle midlertidige monteringspunkter. @@ -530,72 +551,82 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Opret en partition - - Partition &Type: - Partition &Type: + + MiB + MiB - + + Partition &Type: + Partitions&type: + + + &Primary &Primær - + E&xtended &Udvidet - + Fi&le System: - + Fi&lsystem: - + Flags: - + Flag: - + &Mount Point: - &Bindingspunkt: + &Monteringspunkt: - + Si&ze: &Størrelse: - - MB - MB + + En&crypt + Kryp&tér - + Logical Logisk - + Primary Primær - + GPT GPT + + + Mountpoint already in use. Please select another one. + Monteringspunktet er allerede i brug. Vælg venligst et andet. + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - Opret en ny %2MB partition på %4 (%3) med %1 fil system. + Opret en ny %2 MB partition på %4 (%3) med %1-filsystem. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Opret en ny <strong>%2MB</strong> partition på <strong>%4</strong> (%3) med <strong>%1</strong> fil system. + Opret en ny <strong>%2 MB</strong> partition på <strong>%4</strong> (%3) med <strong>%1</strong>-filsystem. @@ -605,7 +636,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The installer failed to create partition on disk '%1'. - Installationsprogrammet fejlede i at oprette partition på disk '%1'. + Installationsprogrammet kunne ikke oprette partition på disk '%1'. @@ -620,12 +651,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The installer failed to create file system on partition %1. - Installationsprogrammet fejlede i at oprette filsystem på partition %1. + Installationsprogrammet kunne ikke oprette filsystem på partition %1. The installer failed to update partition table on disk '%1'. - Installationsprogrammet fejlede i at opdatere partitionstabel på disk '%1'. + Installationsprogrammet kunne ikke opdatere partitionstabel på disk '%1'. @@ -638,7 +669,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Creating a new partition table will delete all existing data on the disk. - Hvis du opretter en ny partitionstabel vil det slette alle data på disken. + Oprettelse af en ny partitionstabel vil slette alle data på disken. @@ -653,7 +684,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. GUID Partition Table (GPT) - GUID Partition Table (GPT) + GUID-partitiontabel (GPT) @@ -671,12 +702,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Creating new %1 partition table on %2. - Opretter ny %1 partitionstabel på %2. + Opretter ny %1-partitionstabel på %2. The installer failed to create a partition table on %1. - Installationsprogrammet fejlede i at oprette en partitionstabel på %1. + Installationsprogrammet kunne ikke oprette en partitionstabel på %1. @@ -687,69 +718,69 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. CreateUserJob - + Create user %1 Opret bruger %1 - + Create user <strong>%1</strong>. Opret bruger <strong>%1</strong>. - + Creating user %1. Opretter bruger %1. - + Sudoers dir is not writable. - Sudoernes mappe er ikke skrivbar. + Sudoers mappe er skrivebeskyttet. - + Cannot create sudoers file for writing. - Kan ikke oprette sudoer fil til skrivning. + Kan ikke oprette sudoers fil til skrivning. - + Cannot chmod sudoers file. - Kan ikke chmod sudoer filen. + Kan ikke chmod sudoers fil. - + Cannot open groups file for reading. Kan ikke åbne gruppernes fil til læsning. - + Cannot create user %1. Kan ikke oprette bruger %1. - + useradd terminated with error code %1. - useradd stoppet med fejl kode %1. + useradd stoppet med fejlkode %1. - - Cannot set full name for user %1. - Kan ikke indstille fuld navn for bruger %1. + + Cannot add user %1 to groups: %2. + Kan ikke tilføje bruger %1 til grupperne: %2. - - chfn terminated with error code %1. - chfn stoppet med fejl kode %1. + + usermod terminated with error code %1. + usermod stoppet med fejlkode %1. - + Cannot set home directory ownership for user %1. - Kan ikke indstille hjemmemappe ejerskab for bruger %1. + Kan ikke sætte hjemmemappens ejerskab for bruger %1. - + chown terminated with error code %1. - chown stoppet med fejl kode %1. + chown stoppet med fejlkode %1. @@ -772,7 +803,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The installer failed to delete partition %1. - Installationsprogrammet fejlede ved sletning af partition %1. + Installationsprogrammet kunne ikke slette partition %1. @@ -793,34 +824,34 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Typen af <strong>partitionstabel</strong> på den valgte lagerenhed.<br><br>Den eneste måde at ændre partitionstabeltypen, er at slette og oprette partitionstabellen igen, hvilket vil destruere al data på lagerenheden.<br>Installationsprogrammet vil beholde den nuværende partitionstabel medmindre du specifikt vælger andet.<br>Hvis usikker, er GPT foretrukket på moderne systemer. This device has a <strong>%1</strong> partition table. - + Denne enhed har en <strong>%1</strong> partitionstabel. 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. - + Dette er en <strong>loop</strong>-enhed.<br><br>Det er en pseudo-enhed uden en partitionstabel, der gør en fil tilgængelig som en blokenhed. Denne type opsætning indeholder typisk kun et enkelt 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 ikke finde en partitionstabel</strong> på den valgte lagerenhed.<br><br>Enten har enheden ikke nogen partitionstabel, eller partitionstabellen er korrupt eller også er den af den ukendt type.<br>Installationsprogrammet kan lave en ny partitionstabel for dig, enten automatisk, eller igennem den manuelle partitionerings side. + Installationsprogrammet <strong>kan ikke finde en partitionstabel</strong> på den valgte lagerenhed.<br><br>Enten har enheden ikke nogen partitionstabel, eller partitionstabellen er ødelagt eller også er den af en ukendt type.<br>Installationsprogrammet kan oprette en ny partitionstabel for dig, enten automatisk, eller igennem den manuelle partitioneringsside. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - <br><br>Dette er den anbefalede partitionstabel type til moderne systemer som starter fra et <strong>EFI</strong> boot miljø. + <br><br>Dette er den anbefalede partitionstabeltype til moderne systemer som starter fra et <strong>EFI</strong>-bootmiljø. <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>Denne partitionstabeltype er kun anbefalet på ældre systemer der starter fra et <strong>BIOS</strong>-bootmiljø. GPT anbefales i de fleste tilfælde.<br><br><strong>Advarsel:</strong> MBR-partitionstabeltypen er en forældet MS-DOS-æra standard.<br>Kun 4 <em>primære</em> partitioner var tilladt, og ud af de fire kan én af dem være en <em>udvidet</em> partition, som igen må indeholde mange <em>logiske</em> partitioner. @@ -831,12 +862,38 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Skriv LUKS-konfiguration for Dracut til %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Spring skrivning af LUKS-konfiguration over for Dracut: "/"-partitionen er ikke krypteret + + + + Failed to open %1 + Kunne ikke åbne %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++-job + + EditExistingPartitionDialog Edit Existing Partition - Rediger Eksisterende Partition + Redigér eksisterende partition @@ -851,7 +908,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Format - Formater + Formatér @@ -861,7 +918,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. &Mount Point: - &Forbindingspunkt: + &Monteringspunkt: @@ -869,50 +926,88 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Stø&rrelse: - - Fi&le System: - Fi&l System: + + MiB + MiB - + + Fi&le System: + Fi&lsystem: + + + Flags: - + Flag: + + + + Mountpoint already in use. Please select another one. + Monteringspunktet er allerede i brug. Vælg venligst et andet. + + + + EncryptWidget + + + Form + Formular + + + + En&crypt system + Kryp&tér system + + + + Passphrase + Adgangskode + + + + Confirm passphrase + Bekræft adgangskode + + + + Please enter the same passphrase in both boxes. + Indtast venligst samme adgangskode i begge bokse. FillGlobalStorageJob - + Set partition information - Indstil partitionsinformation + Sæt partitionsinformation - + Install %1 on <strong>new</strong> %2 system partition. - Installér %1 på den <strong>nye</strong> %2 system partition. + Installér %1 på <strong>nye</strong> %2-systempartition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Opsæt den <strong>nye</strong> %2 partition med monteringspunkt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - Installér %2 på %3 system partition <strong>%1</strong>. + Installér %2 på %3-systempartition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Opsæt %3 partition <strong>%1</strong> med monteringspunkt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - Installér boot loader på <strong>%1</strong>. + Installér bootloader på <strong>%1</strong>. - + Setting up mount points. Opsætter monteringspunkter. @@ -922,7 +1017,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular @@ -930,60 +1025,75 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Genstart nu - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Færdig.</h1><br/>%1 er blevet installeret på din computer.<br/>Du kan nu genstarte ind i dit nye system, eller fortsætte med at bruge %2 Live miljøet. + <h1>Færdig.</h1><br/>%1 er blevet installeret på din computer.<br/>Du kan nu genstarte for at komme ind i dit nye system eller fortsætte med at bruge %2 live-miljøet. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Installation mislykkede</h1><br/>%1 er ikke blevet installeret på din computer.<br/>Fejlmeddelelsen var: %2. FinishedViewStep - + Finish Færdig + + + Installation Complete + Installation fuldført + + + + The installation of %1 is complete. + Installationen af %1 er fuldført. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - Formater partition %1 (filsystem: %2, størrelse: %3 MB) på %4. + Formatér partition %1 (filsystem: %2, størrelse: %3 MB) på %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formatér <strong>%3MB</strong> partition <strong>%1</strong> med fil system <strong>%2</strong>. + Formatér <strong>%3 MB</strong> partition <strong>%1</strong> med <strong>%2</strong>-filsystem. - + Formatting partition %1 with file system %2. - Formatterer partition %1 med fil system %2. + Formatterer partition %1 med %2-filsystem. - + The installer failed to format partition %1 on disk '%2'. - Installationsprogrammet fejlede i at formatere partition %1 på disk '%2'. + Installationsprogrammet kunne ikke formatere partition %1 på disk '%2'. - + Could not open device '%1'. Kunne ikke åbne enhed '%1'. - + Could not open partition table. Kunne ikke åbne partitionstabel. - + The installer failed to create file system on partition %1. - Installationsprogrammet fejlede i at oprette filsystem på partition %1. + Installationsprogrammet kunne ikke oprette filsystem på partition %1. - + The installer failed to update partition table on disk '%1'. - Installationsprogrammet fejlede i at opdatere partitionstabel på disk '%1'. + Installationsprogrammet kunne ikke opdatere partitionstabel på disk '%1'. @@ -1000,12 +1110,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Please install the kde konsole and try again! - Vær venlig at installere kde konsole og prøv igen! + Installér venligst kde-konsolen og prøv igen! Executing script: &nbsp;<code>%1</code> - Eksekverer script: &nbsp;<code>%1</code> + Eksekverer skript: &nbsp;<code>%1</code> @@ -1013,26 +1123,26 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Script - Script + Skript KeyboardPage - + Set keyboard model to %1.<br/> - Indstil tastatur model til %1.<br/> + Sæt tastaturmodel til %1.<br/> - + Set keyboard layout to %1/%2. - Indstil tastatur layout til %1/%2. + Sæt tastaturlayout til %1/%2. KeyboardViewStep - + Keyboard Tastatur @@ -1040,14 +1150,24 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LCLocaleDialog - + System locale setting - System område indstilling + Systemets lokalitetsindstilling - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - Systemets locale indstilling har indflydelse på sproget og tegnsæt for nogle kommandolinje bruger elementer.<br/>Denne indstilling er nu <strong>%1</strong>. + Systemets lokalitetsindstilling har indflydelse på sproget og tegnsættet for nogle kommandolinje-brugerelementer.<br/>Den nuværende indstilling er <strong>%1</strong>. + + + + &Cancel + &Annullér + + + + &OK + &OK @@ -1055,7 +1175,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular @@ -1065,22 +1185,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - <h1>Licens Aftale</h1>Denne installations procedure vil installere proprietær software der er under licenserings vilkår. + <h1>Licensaftale</h1>Denne installationsprocedure vil installere proprietær software der er underlagt licenseringsvilkår. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - Venligst gennemse Slut Bruger Licens Aftalerne (EULAs) herover. <br/>Hvis du ikke er enig med disse vilkår, kan installationen ikke fortsætte. + Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår, kan installationen ikke fortsætte. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - <h1>Licens Aftale</h1>Denne installations procedure kan installere proprietær software der er underlagt licens vilkår for at kunne tilbyde ekstra funktioner og forbedre bruger oplevelsen. + <h1>Licensaftale</h1>Denne installationsprocedure kan installere proprietær software der er underlagt licenseringsvilkår, for at kunne tilbyde yderligere funktionaliteter og forbedre brugeroplevelsen. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - Venligst gennemse Slut Bruger Licens Aftalerne (EULAs) herover.<br/>Hvis du ikke er enig med disse vilkår, vil der ikke blive installeret proprietær software, og open source alternativer vil blive brugt i stedet. + Gennemgå venligst slutbrugerlicensaftalerne (EULA'er) ovenfor.<br/>Hvis du ikke er enig med disse vilkår vil der ikke blive installeret proprietær software, og open source-alternativer vil blive brugt i stedet. @@ -1092,12 +1212,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - <strong>%1 grafik driver</strong><br/><font color="Grey">af %2</font> + <strong>%1 grafikdriver</strong><br/><font color="Grey">af %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - <strong>%1 browser plugin</strong><br/><font color="Grey">af %2</font> + <strong>%1 browser-plugin</strong><br/><font color="Grey">af %2</font> @@ -1117,7 +1237,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. <a href="%1">view license agreement</a> - <a href="%1">Se licensaftalen</a> + <a href="%1">vis licensaftalen</a> @@ -1131,43 +1251,54 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. LocalePage - - - The system locale is set to %1. - System område indstillingen er sat til %1. + + The system language will be set to %1. + Systemsproget vil blive sat til %1. - + + The numbers and dates locale will be set to %1. + Lokalitet for tal og datoer vil blive sat til %1. + + + Region: Region: - + Zone: Zone: - + + &Change... - &Ændre... + &Skift... - + Set timezone to %1/%2.<br/> - Indstil tidszone til %1/%2.<br/> + Sæt tidszone til %1/%2.<br/> + + + + %1 (%2) + Language (Country) + %1 (%2) LocaleViewStep - + Loading location data... - Loader lokationsdata... + Indlæser placeringsdata... - + Location - Lokation + Placering @@ -1190,33 +1321,59 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Moving of partition %1 failed, changes have been rolled back. - Flytning af partition %1 fejlede, ændringer er tilbageført. + Flytning af partition %1 mislykkedes, ændringer er tilbageført. Moving of partition %1 failed. Roll back of the changes have failed. - Flytning af partition %1 fejlede. Tilbageføring af ændringer fejlede. + Flytning af partition %1 mislykkedes. Tilbageføring af ændringerne mislykkedes. Updating boot sector after the moving of partition %1 failed. - Opdaterer boot sektor efter flytning af partition %1 fejlede. + Opdatering af bootsektor efter flytning af partition %1 mislykkedes. The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. - De logiske sektor størrelser for kilden og destination af kopiering er ikke den samme. Dette er ligenu ikke supporteret. + De logiske sektorstørrelser for kilden og destination for kopiering er ikke ens. Det understøttes ikke på nuværende tidspunkt. Source and target for copying do not overlap: Rollback is not required. - Kilde og destination for kopiering overlapper ikke: Tilebageføring ikke krævet. + Kilde og destination for kopiering overlapper ikke: Tilbageføring ikke påkrævet. Could not open device %1 to rollback copying. - Kunne ikke åbne enhed %1 til at tilbageføre kopiering. + Kunne ikke åbne enhed %1 til tilbageføring af kopiering. + + + + NetInstallPage + + + Name + Navn + + + + Description + Beskrivelse + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Netværksinstallation. (Deaktiveret: Kunne ikke hente pakkelister, tjek din netværksforbindelse) + + + + NetInstallViewStep + + + Package selection + Valg af pakke @@ -1224,12 +1381,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular Keyboard Model: - Tastatur Model: + Tastaturmodel: @@ -1242,7 +1399,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular @@ -1252,20 +1409,19 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. What name do you want to use to log in? - Hvilket navn vil du bruge til at logge ind? + Hvilket navn vil du bruge til at logge ind med? - font-weight: normal - font-vægt: normal + font-weight: normal <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Hvis mere end én person vil bruge denne computer, kan du indstille flere konti efter installationen.</small> + <small>Hvis mere end én person vil bruge denne computer, kan du opsætte flere konti efter installationen.</small> @@ -1275,7 +1431,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>Skriv kodeordet to gange, så det kan blive tjekket for skrivefejl. Et godt kodeord vil indeholde et mix af bogstaver, tal og specialtegn, være mindst 8 cifre langt og bør skiftes jævnligt.</small> + <small>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl. En god adgangskode indeholder en blanding af bogstaver, tal og specialtegn, og bør være mindst 8 tegn langt og bør skiftes jævnligt.</small> @@ -1290,22 +1446,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Log in automatically without asking for the password. - Log ind automatisk uden at spørge om kodeordet. + Log ind automatisk uden at spørge om adgangskoden. Use the same password for the administrator account. - Brug det samme kodeord til administrator kontoen. + Brug den samme adgangskode til administratorkontoen. Choose a password for the administrator account. - Vælg et kodeord til administrator kontoen. + Vælg en adgangskode til administratorkontoen. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>Skriv kodeordet to gange, så det kan blive tjekket for skrivefejl.</small> + <small>Skriv den samme adgangskode to gange, så det kan blive tjekket for skrivefejl.</small> @@ -1328,7 +1484,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. EFI system - EFI system + EFI-system @@ -1341,9 +1497,14 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Ny partition til %1 - + + New partition + Ny partition + + + %1 %2 - %1 %2 + %1 %2 @@ -1352,7 +1513,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Free Space - Fri Plads + Ledig plads @@ -1361,22 +1522,22 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Ny partition - + Name Navn - + File System Filsystem - + Mount Point - Forbindelsespunkt + Monteringspunkt - + Size Størrelse @@ -1386,7 +1547,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular @@ -1396,125 +1557,135 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. &Revert All Changes - &Tilbagefør Alle Ændringer + &Tilbagefør alle ændringer - + New Partition &Table - Ny Partitionstabel + Ny partitions&tabel - + &Create &Opret - + &Edit &Redigér - + &Delete &Slet - + Install boot &loader on: - Installér boot &loader på: + Installér boot&loader på: - + Are you sure you want to create a new partition table on %1? - Er du sikker på at du vil oprette en ny partitionstabel på %1? + Er du sikker på, at du vil oprette en ny partitionstabel på %1? PartitionViewStep - + Gathering system information... - Samler system information... + Indsamler systeminformation... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installér %1 <strong>ved siden af</strong> et andet styresystem. - + <strong>Erase</strong> disk and install %1. <strong>Slet</strong> disk og installér %1. - + <strong>Replace</strong> a partition with %1. <strong>Erstat</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installér %1 <strong>ved siden af</strong> et andet styresystem på disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Slet</strong> disk <strong>%2</strong> (%3) og installér %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Erstat</strong> en partition på disk <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuel</strong> partitionering på disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: - + Nuværende: - + After: - + Efter: - + No EFI system partition configured - + Ingen EFI-systempartition konfigureret - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + En EFI-systempartition er nødvendig for at starte %1.<br/><br/>For at konfigurere en EFI-systempartition skal du gå tilbage og vælge eller oprette et FAT32-filsystem med <strong>esp</strong>-flaget aktiveret og monteringspunkt <strong>%2</strong>.<br/><br/>Du kan fortsætte uden at opsætte en EFI-systempartition, men dit system vil muligvis ikke kunne starte. - + EFI system partition flag not set - + EFI-systempartitionsflag ikke sat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + En EFI-systempartition er nødvendig for at starte %1.<br/><br/>En partition var konfigureret med monteringspunkt <strong>%2</strong>, men dens <strong>esp</strong>-flag var ikke sat.<br/>For at sætte flaget skal du gå tilbage og redigere partitionen.<br/><br/>Du kan fortsætte uden at konfigurere flaget, men dit system vil muligvis ikke kunne starte. + + + + Boot partition not encrypted + Bootpartition ikke krypteret + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + En separat bootpartition blev opsat sammen med en krypteret rodpartition, men bootpartitionen er ikke krypteret.<br/><br/>Der er sikkerhedsmæssige bekymringer med denne type opsætning, da vigtige systemfiler er gemt på en ikke-krypteret partition.<br/>Du kan fortsætte hvis du vil, men oplåsning af filsystemet sker senere under systemets opstart.<br/>For at kryptere bootpartitionen skal du gå tilbage og oprette den igen, vælge <strong>Kryptér</strong> i partitionsoprettelsesvinduet. @@ -1522,7 +1693,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Default Keyboard Model - Standard Tastatur Model + Standardtastaturmodel @@ -1531,20 +1702,25 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.Standard - + unknown ukendt - + extended udvidet - + unformatted uformatteret + + + swap + swap + Unpartitioned space or unknown partition table @@ -1556,127 +1732,132 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Vælg hvor %1 skal installeres.<br/><font color="red">Advarsel: </font>dette vil slette alle filerne på den valgte partition. + Vælg hvor %1 skal installeres.<br/><font color="red">Advarsel: </font>Dette vil slette alle filer på den valgte partition. - + The selected item does not appear to be a valid partition. Det valgte emne ser ikke ud til at være en gyldig partition. - + %1 cannot be installed on empty space. Please select an existing partition. - %1 kan ikke installeres på tomt plads. Vælg venligst en eksisterende partition. + %1 kan ikke installeres på tom plads. Vælg venligst en eksisterende partition. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 kan ikke installeres på en udvidet partition. Vælg venligst en eksisterende primær eller logisk partition. - + %1 cannot be installed on this partition. %1 kan ikke installeres på denne partition. - + Data partition (%1) - Data partition (%1) + Datapartition (%1) - + Unknown system partition (%1) - Ukendt system partition (%1) + Ukendt systempartition (%1) - + %1 system partition (%2) - %1 system partition (%2) + %1-systempartition (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partitionen %1 er for lille til %2. Vælg venligst en partition med mindst %3 GiB plads. - + <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/>En EFI system partition kunne ikke findes på systemet. Venligst gå tilbage og brug manuel partitionering til at opsætte %1. + <strong>%2</strong><br/><br/>En EFI-systempartition kunne ikke findes på systemet. Gå venligst tilbage og brug manuel partitionering til at opsætte %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 vil blive installeret på %2.<br/><font color="red">Advarsel: </font>Al data på partition %2 vil gå tabt. - + The EFI system partition at %1 will be used for starting %2. - EFI system partitionen ved %1 vil blive brugt til at starte %2. + EFI-systempartitionen ved %1 vil blive brugt til at starte %2. - + EFI system partition: - EFI system partition: + EFI-systempartition: RequirementsChecker - + Gathering system information... - Samler system informationer... - - - - has at least %1 GB available drive space - har mindst %1 GB fri plads på drevet - - - - There is not enough drive space. At least %1 GB is required. - Der er ikke nok fri plads på drevet. Mindst %1 GB er påkrævet. + Indsamler systeminformation... - has at least %1 GB working memory - har mindst %1 GB virkende hukkommelse + has at least %1 GB available drive space + har mindst %1 GB ledig plads på drevet - The system does not have enough working memory. At least %1 GB is required. - Systemet har ikke nok virkende hukkommelse. Mindst %1 GB er påkrævet. + There is not enough drive space. At least %1 GB is required. + Der er ikke nok ledig plads på drevet. Mindst %1 GB er påkrævet. + has at least %1 GB working memory + har mindst %1 GB arbejdshukommelse + + + + The system does not have enough working memory. At least %1 GB is required. + Systemet har ikke nok arbejdshukommelse. Mindst %1 GB er påkrævet. + + + is plugged in to a power source - er sat til en strømkilde + er tilsluttet en strømkilde - + The system is not plugged in to a power source. - Systemet er ikke sat til en strømkilde. + Systemet er ikke tilsluttet en strømkilde. - + is connected to the Internet er forbundet til internettet - + The system is not connected to the Internet. Systemet er ikke forbundet til internettet. - + The installer is not running with administrator rights. - Installationsprogrammet kører ikke med administrator rettigheder. + Installationsprogrammet kører ikke med administratorrettigheder. + + + + The screen is too small to display the installer. + Skærmen er for lille til at vise installationsprogrammet. @@ -1684,17 +1865,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Resize file system on partition %1. - Ændre størrelse af filsystem på partition %1. + Ændr størrelse af filsystem på partition %1. Parted failed to resize filesystem. - Parted fejlede i at ændre størrelse på filsystem. + Parted kunne ikke ændre størrelse på filsystem. Failed to resize filesystem. - Fejlede i at ændre størrelse på filsystem. + Kunne ikke ændre størrelse på filsystem. @@ -1702,23 +1883,23 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Resize partition %1. - Ændre størrelse på partition %1. + Ændr størrelse på partition %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Størrelsesændring af <strong>%2MB</strong> partition <strong>%1</strong> til <strong>%3MB</strong>. + Ændr størrelse af <strong>%2 MB</strong> partition <strong>%1</strong> til <strong>%3 MB</strong>. Resizing %2MB partition %1 to %3MB. - Ændrer nu størrelsen af %2MB partition %1 til %3MB. + Ændrer nu størrelsen af %2 MB partition %1 til %3 MB. The installer failed to resize partition %1 on disk '%2'. - Installationsprogrammet fejlede i at ændre størrelse på partition %1 på disk '%2'. + Installationsprogrammet kunne ikke ændre størrelse på partition %1 på disk '%2'. @@ -1744,101 +1925,157 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Set hostname %1 - Indstil værtsnavn %1 + Sæt værtsnavn %1 Set hostname <strong>%1</strong>. - Sæt hostname <strong>%1</strong>. + Sæt værtsnavn <strong>%1</strong>. Setting hostname %1. - Sætter hostname %1. + Sætter værtsnavn %1. Internal Error - Intern Fejl + Intern fejl Cannot write hostname to target system - Kan ikke skrive værtsnavn til mål system + Kan ikke skrive værtsnavn til destinationssystem SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - Indstil tastatur model til %1, layout til %2-%3 + Sæt tastaturmodel til %1, layout til %2-%3 - + Failed to write keyboard configuration for the virtual console. - Fejl ved at skrive tastatur konfiguration for den virtuelle konsol. + Kunne ikke skrive tastaturkonfiguration for den virtuelle konsol. - - + + + Failed to write to %1 - Fejlede at skrive til %1 + Kunne ikke skrive til %1 - + Failed to write keyboard configuration for X11. - Fejlede at skrive tastatur konfiguration til X11. + Kunne ikke skrive tastaturkonfiguration for X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + Kunne ikke skrive tastaturkonfiguration til eksisterende /etc/default-mappe. SetPartFlagsJob - + Set flags on partition %1. - + Sæt flag på partition %1. - + + Set flags on %1MB %2 partition. + Sæt flag på %1 MB %2 partition. + + + + Set flags on new partition. + Sæt flag på ny partition. + + + Clear flags on partition <strong>%1</strong>. - + Ryd flag på partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Ryd flag på %1 MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Ryd flag på ny partition. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Flag partition <strong>%1</strong> som <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag %1 MB <strong>%2</strong> partition som <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Flag ny partition som <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Rydder flag på partition <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Rydder flag på %1 MB <strong>%2</strong> partition. + + + + Clearing flags on new partition. + Rydder flag på ny partition. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Sætter flag <strong>%2</strong> på partition <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Sætter flag <strong>%3</strong> på %1 MB <strong>%2</strong> partition. + + + + Setting flags <strong>%1</strong> on new partition. + Sætter flag <strong>%1</strong> på ny partition. + + + The installer failed to set flags on partition %1. - + Installationsprogrammet kunne ikke sætte flag på partition %1. - + Could not open device '%1'. - + Kunne ikke åbne enhed '%1'. - + Could not open partition table on device '%1'. - + Kunne ikke åbne partitionstabel på enhed '%1'. - + Could not find partition '%1'. - + Kunne ikke finde partition '%1'. @@ -1846,45 +2083,55 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Update geometry of partition %1. - Opdatér geometri af partition %1. + Opdatér %1-partitions geometri. Failed to change the geometry of the partition. - Fejlede i at ændre geometri af partitionen. + Kunne ikke ændre partitionens geometri. SetPasswordJob - + Set password for user %1 - Indstil kodeord for bruger %1 + Sæt adgangskode for bruger %1 - + Setting password for user %1. - Opsætter kodeord for bruger %1. + Sætter adgangskode for bruger %1. - + Bad destination system path. - Dårlig destination systemsti. + Ugyldig destinationssystemsti. - + rootMountPoint is %1 rodMonteringsPunkt er %1 - - Cannot set password for user %1. - Kan ikke indstille kodeord for bruger %1. + + Cannot disable root account. + Kan ikke deaktivere root-konto. - + + passwd terminated with error code %1. + passwd stoppet med fejlkode %1. + + + + Cannot set password for user %1. + Kan ikke sætte adgangskode for bruger %1. + + + usermod terminated with error code %1. - usermod stoppede med fejl kode %1. + usermod stoppet med fejlkode %1. @@ -1892,35 +2139,35 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Set timezone to %1/%2 - Indstil tidszone til %1/%2 + Sæt tidszone til %1/%2 Cannot access selected timezone path. - Kan ikke tilgå den valgte tidszone sti. + Kan ikke tilgå den valgte tidszonesti. Bad path: %1 - Dårlig sti: %1 + Ugyldig sti: %1 Cannot set timezone. - Kan ikke indstille tidszone. + Kan ikke sætte tidszone. Link creation failed, target: %1; link name: %2 - Link oprettelse fejlede, mål: %1; link navn: %2 - - - - Cannot set timezone, - Kan ikke definere tidszone, + Oprettelse af link mislykkedes, destination: %1; linknavn: %2 + Cannot set timezone, + Kan ikke sætte tidszone, + + + Cannot open /etc/timezone for writing Kan ikke åbne /etc/timezone til skrivning @@ -1944,35 +2191,35 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. UsersPage - + Your username is too long. Dit brugernavn er for langt. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - Dit brugernavn indeholder ugyldige tegn. Kun små bogstaver og numre er gyldige. + Dit brugernavn indeholder ugyldige tegn. Kun små bogstaver og tal er tilladt. - + Your hostname is too short. - Dit hostname er for kort. + Dit værtsnavn er for kort. - + Your hostname is too long. - Dit hostname er for langt. + Dit værtsnavn er for langt. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Dit hostname indeholder ugyldige tegn. Kun bogstaver, numre og tankestreger er gyldige. + Dit værtsnavn indeholder ugyldige tegn. Kun bogstaver, tal og tankestreger er tilladt. - - + + Your passwords do not match! - Dine kodeord er ikke ens! + Dine adgangskoder er ikke ens! @@ -1988,12 +2235,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Form - Form + Formular &Language: - &Sprog + &Sprog: @@ -2016,22 +2263,27 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.&Om - + <h1>Welcome to the %1 installer.</h1> - <h1>Velkommen til %1 installationsprogrammet.</h1> + <h1>Velkommen til %1-installationsprogrammet.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Velkommen til Calamares-installationsprogrammet for %1.</h1> + + + About %1 installer - Om %1 installationsprogrammet + Om %1-installationsprogrammet - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Tak til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Phillip Müller, Pier Liugi Fiorini og Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a>udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Bbefriér 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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>Ophavsret 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ophavsret 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Tak til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg og <a href="https://www.transifex.com/calamares/calamares/">Calamares-oversætterteam</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> udvikling er sponsoreret af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support @@ -2039,7 +2291,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. WelcomeViewStep - + Welcome Velkommen diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts index 6a0cef096..ff93c6377 100644 --- a/lang/calamares_de.ts +++ b/lang/calamares_de.ts @@ -1,52 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Wählen Sie eine Partition zum Verkleinern: - - - - Allocate drive space by dragging the divider below: - Teilen Sie Festplattenplatz zu, indem Sie den Trenner unten verschieben: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Durch diesen Vorgang wird die Partition <strong>%1</strong>, welche %4 enthält, auf %2MB verkleinert, und für %5 wird eine neue Partition mit %3MB erstellt. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Es wurde keine EFI-Systempartition auf diesem System gefunden. -Bitte gehen Sie zurück und nutzen Sie die manuelle Partitionierung, um %1 aufzusetzen. - - - - The EFI system partition at %1 will be used for starting %2. - Die EFI-Systempartition auf %1 wird benutzt, um %2 zu starten. - - - - EFI system partition: - EFI-Systempartition: - - 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. Die <strong>Boot-Umgebung</strong> dieses Systems.<br><br>Ältere x86-Systeme unterstützen nur <strong>BIOS</strong>.<br>Moderne Systeme verwenden normalerweise <strong>EFI</strong>, können jedoch auch als BIOS angezeigt werden, wenn sie im Kompatibilitätsmodus gestartet werden. - + 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. Dieses System wurde mit einer <strong>EFI</strong> Boot-Umgebung gestartet.<br><br>Um den Start von einer EFI-Umgebung zu konfigurieren, muss dieser Installer eine Bootloader-Anwendung nutzen , wie <strong>GRUB</strong> oder <strong>systemd-boot</strong> auf einer <strong>EFI System-Partition</strong>. Dies passiert automatisch, außer Sie wählen die maunuelle Partitionierung. In diesem Fall müssen Sie sie selbst auswählen oder erstellen. - + 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. Dieses System wurde mit einer <strong>BIOS</strong> Boot-Umgebung gestartet.<br><br>Um den Systemstart aus einer BIOS-Umgebung zu konfigurieren, muss dieses Installationsprogramm einen Boot-Loader installieren, wie <strong>GRUB</strong>, entweder am Anfang einer Partition oder im <strong>Master Boot Record</strong> nahe am Anfang der Partitionstabelle (bevorzugt). Dies passiert automatisch, außer Sie wählen die manuelle Partitionierung. In diesem Fall müssen Sie ihn selbst aufsetzen. @@ -102,7 +68,28 @@ Bitte gehen Sie zurück und nutzen Sie die manuelle Partitionierung, um %1 aufzu Module - + + Type: + Typ: + + + + + none + keiner + + + + Interface: + Schnittstelle: + + + + Tools + Werkzeuge + + + Debug information Debug-Information @@ -201,32 +188,32 @@ Ausgabe: Calamares::PythonJob - + Running %1 operation. Operation %1 wird ausgeführt. - + Bad working directory path Fehlerhafter Arbeitsverzeichnis-Pfad - + Working directory %1 for python job %2 is not readable. Arbeitsverzeichnis %1 für Python-Job %2 ist nicht lesbar. - + Bad main script file Fehlerhaftes Hauptskript - + Main script file %1 for python job %2 is not readable. Hauptskript-Datei %1 für Python-Job %2 ist nicht lesbar. - + Boost.Python error in job "%1". Boost.Python-Fehler in Job "%1". @@ -234,88 +221,114 @@ Ausgabe: Calamares::ViewManager - + &Back &Zurück - + &Next &Weiter - - + + &Cancel - &Beenden + &Abbrechen - + + + Cancel installation without changing the system. + Lösche die Installation ohne das System zu ändern. + + + Cancel installation? Installation abbrechen? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wollen Sie wirklich die aktuelle Installation abbrechen? Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. - + + &Yes + &Ja + + + + &No + &Nein + + + + &Close + &Schließen + + + Continue with setup? Setup fortsetzen? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Das %1 Installationsprogramm wird Änderungen an Ihrer Festplatte vornehmen, um %2 zu installieren.<br/><strong>Diese Änderungen können nicht rückgängig gemacht werden.</strong> - + &Install now Jetzt &installieren - + Go &back Gehe &zurück - - &Quit - &Beenden + + &Done + &Erledigt - + + The installation is complete. Close the installer. + Die Installation ist abgeschlossen. Schließe das Installationsprogramm. + + + Error Fehler - + Installation Failed - Die Installation ist gescheitert + Installation gescheitert CalamaresPython::Helper - + Unknown exception type - Unbekannte Ausnahme + Unbekannter Ausnahmefehler - + unparseable Python error Nicht analysierbarer Python-Fehler - + unparseable Python traceback Nicht analysierbarer Python-Traceback - + Unfetchable Python error. Nicht zuzuordnender Python-Fehler @@ -323,12 +336,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CalamaresWindow - + %1 Installer %1 Installationsprogramm - + Show debug information Debug-Information anzeigen @@ -336,12 +349,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CheckFileSystemJob - + Checking file system on partition %1. Das Dateisystem auf Partition %1 wird überprüft. - + The file system check on partition %1 failed. Die Überprüfung des Dateisystems auf Partition %1 scheiterte. @@ -349,7 +362,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Dieser Computer erfüllt nicht die Mindestvoraussetzungen für die Installation von %1.<br/>Die Installation kann nicht fortgesetzt werden. <a href="#details">Details...</a> @@ -359,17 +372,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Dieser Computer erfüllt nicht alle Voraussetzungen für die Installation von %1.<br/>Die Installation wird fortgesetzt, aber es werden eventuell nicht alle Funktionen verfügbar sein. - + This program will ask you some questions and set up %2 on your computer. Dieses Programm wird Ihnen einige Fragen stellen, um %2 auf Ihrem Computer zu installieren. - + For best results, please ensure that this computer: Für das beste Ergebnis stellen Sie bitte sicher, dass dieser Computer: - + System requirements Systemanforderungen @@ -382,102 +395,109 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Form - + After: Nachher: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Manuelle Partitionierung</strong><br/>Sie können Partitionen eigenhändig erstellen oder in der Grösse verändern. - + Boot loader location: Installationsziel des Bootloaders: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 wird auf %2MB verkleinert und eine neue Partition mit einer Größe von %3MB wird für %4 erstellt werden. - + Select storage de&vice: Speichermedium auswählen - - - - + + + + Current: Aktuell: - + + Reuse %1 as home partition for %2. + %1 als Home-Partition für %2 wiederverwenden. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Wählen Sie die zu verkleinernde Partition, dann ziehen Sie den Regler, um die Größe zu ändern</strong> - + <strong>Select a partition to install on</strong> - <strong>Wählen Sie eine Patrition für die Installation</strong> + <strong>Wählen Sie eine Partition für die Installation</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Es wurde keine EFI-Systempartition auf diesem System gefunden. Bitte gehen Sie zurück und nutzen Sie die manuelle Partitionierung, um %1 aufzusetzen. + Es wurde keine EFI-Systempartition auf diesem System gefunden. Bitte gehen Sie zurück und nutzen Sie die manuelle Partitionierung für das Einrichten von %1. - + The EFI system partition at %1 will be used for starting %2. - Die EFI Systempartition %1 wird benutzt um %2 zu starten. + Die EFI-Systempartition %1 wird benutzt, um %2 zu starten. - + EFI system partition: - EFI Systempartition + EFI-Systempartition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium scheint kein Betriebssystem installiert zu sein. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen auf diesem Speichermedium vorgenommen werden. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Festplatte löschen</strong><br/>Dies wird alle vorhandenen Daten auf dem gewählten Speichermedium <font color="red">löschen</font>. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium ist %1 installiert. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen werden. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Parallel dazu installieren</strong><br/>Das Installationsprogramm wird eine Partition verkleinern, um Platz für %1 zu schaffen. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ersetze eine Partition</strong><br/>Ersetzt eine Partition durch %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dieses Speichermedium enthält bereits ein Betriebssystem. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen wird. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Auf diesem Speichermedium sind mehrere Betriebssysteme installiert. Was möchten Sie tun?<br/>Sie können Ihre Auswahl überprüfen und bestätigen, bevor Änderungen an dem Speichermedium vorgenommen werden. @@ -485,17 +505,17 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ClearMountsJob - + Clear mounts for partitioning operations on %1 Leere Mount-Points für Partitioning-Operation auf %1 - + Clearing mounts for partitioning operations on %1. Löse eingehängte Laufwerke für die Partitionierung von %1 - + Cleared all mounts for %1 Alle Mount-Points für %1 geleert @@ -503,22 +523,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. ClearTempMountsJob - + Clear all temporary mounts. Alle temporären Mount-Points leeren. - + Clearing all temporary mounts. Löse alle temporär eingehängten Laufwerke. - + Cannot get list of temporary mounts. Konnte keine Liste von temporären Mount-Points einlesen. - + Cleared all temporary mounts. Alle temporären Mount-Points geleert. @@ -531,60 +551,70 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Partition erstellen - + + MiB + MiB + + + Partition &Type: Partitions&typ: - + &Primary &Primär - + E&xtended Er&weitert - + Fi&le System: - + Fi&le System: - + Flags: - + Markierungen: - + &Mount Point: Ein&hängepunkt: - + Si&ze: Grö&sse: - - MB - MB + + En&crypt + Ver&schlüsseln - + Logical Logisch - + Primary Primär - + GPT GPT + + + Mountpoint already in use. Please select another one. + Dieser Einhängepunkt wird schon benuztzt. Bitte wählen Sie einen anderen. + CreatePartitionJob @@ -688,67 +718,67 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. CreateUserJob - + Create user %1 Erstelle Benutzer %1 - + Create user <strong>%1</strong>. Erstelle Benutzer <strong>%1</strong>. - + Creating user %1. Erstelle Benutzer %1. - + Sudoers dir is not writable. Sudoers-Verzeichnis ist nicht beschreibbar. - + Cannot create sudoers file for writing. Kann sudoers-Datei nicht zum Schreiben erstellen. - + Cannot chmod sudoers file. Kann chmod nicht auf sudoers-Datei anwenden. - + Cannot open groups file for reading. Kann groups-Datei nicht zum Lesen öffnen. - + Cannot create user %1. Kann Benutzer %1 nicht erstellen. - + useradd terminated with error code %1. useradd wurde mit Fehlercode %1 beendet. - - Cannot set full name for user %1. - Kann vollen Namen von Benutzer %1 nicht setzen. + + Cannot add user %1 to groups: %2. + Folgenden Gruppen konnte Benutzer %1 nicht hinzugefügt werden: %2. - - chfn terminated with error code %1. - chfn wurde mit Fehlercode %1 beendet. + + usermod terminated with error code %1. + Usermod beendet mit Fehlercode %1. - + Cannot set home directory ownership for user %1. Kann Besitzrechte des Home-Verzeichnisses von Benutzer %1 nicht setzen. - + chown terminated with error code %1. chown wurde mit Fehlercode %1 beendet. @@ -794,7 +824,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Die Art von <strong>Partitionstabelle</strong> auf dem gewählten Speichermedium.<br><br>Die einzige Möglichkeit die Art der Partitionstabelle zu ändern ist sie zu löschen und sie von Grund auf neu aufzusetzen, was alle Daten auf dem Speichermedium vernichtet.<br>Dieses Installationsprogramm wird die aktuelle Partitionstabelle behalten außer Sie wählen ausdrücklich etwas anderes..<br>Falls Sie unsicher sind: auf modernen Systemen wird GPT bevorzugt. @@ -832,6 +862,32 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Schreibe LUKS-Konfiguration für Dracut nach %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Überspringe das Schreiben der LUKS-Konfiguration für Dracut: die Partition "/" ist nicht verschlüsselt + + + + Failed to open %1 + Konnte %1 nicht öffnen + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -870,52 +926,90 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Grö&sse: - + + MiB + MiB + + + Fi&le System: Datei&system: - + Flags: - + Markierungen: + + + + Mountpoint already in use. Please select another one. + Der Einhängepunkt wird schon benutzt. Bitte wählen Sie einen anderen. + + + + EncryptWidget + + + Form + Formular + + + + En&crypt system + Ver&schlüssele System + + + + Passphrase + Passwort + + + + Confirm passphrase + Passwort wiederholen + + + + Please enter the same passphrase in both boxes. + Bitte tragen Sie dasselbe Passwort in beide Felder ein. FillGlobalStorageJob - + Set partition information Setze Partitionsinformationen - + Install %1 on <strong>new</strong> %2 system partition. Installiere %1 auf <strong>neuer</strong> %2 Systempartition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Erstelle <strong>neue</strong> %2 Partition mit Einhängepunkt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installiere %2 auf %3 Systempartition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Erstelle %3 Partition <strong>%1</strong> mit Einhängepunkt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installiere Bootloader auf <strong>%1</strong>. - + Setting up mount points. - Richte Mount-Punkte ein. + Richte Einhängepunkte ein. @@ -931,58 +1025,73 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Jetzt &Neustarten - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Alles erledigt.</h1><br/>%1 wurde auf Ihrem Computer installiert.<br/>Sie können nun in Ihr neues System neustarten oder mit der %2 Live-Umgebung fortfahren. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Installation fehlgeschlagen</h1><br/>%1 wurde nicht auf deinem Computer installiert.<br/>Die Fehlermeldung lautet: %2. + FinishedViewStep - + Finish - Ende + Beenden + + + + Installation Complete + + + + + The installation of %1 is complete. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatiere Partition %1 (Dateisystem: %2, Grösse: %3 MB) auf %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatiere <strong>%3MB</strong> Partition <strong>%1</strong> mit Dateisystem strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatiere Partition %1 mit Dateisystem %2. - + The installer failed to format partition %1 on disk '%2'. Das Formatieren von Partition %1 auf Datenträger '%2' ist fehlgeschlagen. - + Could not open device '%1'. Gerät '%1' konnte nicht geöffnet werden. - + Could not open partition table. Partitionstabelle konnte nicht geöffnet werden. - + The installer failed to create file system on partition %1. Das Dateisystem auf Partition %1 konnte nicht erstellt werden. - + The installer failed to update partition table on disk '%1'. Das Aktualisieren der Partitionstabelle auf Datenträger '%1' ist fehlgeschlagen. @@ -1020,12 +1129,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. KeyboardPage - + Set keyboard model to %1.<br/> Setze Tastaturmodell auf %1.<br/> - + Set keyboard layout to %1/%2. Setze Tastaturbelegung auf %1/%2. @@ -1033,7 +1142,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. KeyboardViewStep - + Keyboard Tastatur @@ -1041,15 +1150,25 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LCLocaleDialog - + System locale setting Regions- und Spracheinstellungen - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Die Lokalisierung des Systems beeinflusst die Sprache und den Zeichensatz einiger Elemente der Kommandozeile.<br/>Die derzeitige Einstellung ist <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1132,41 +1251,52 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. LocalePage - - - The system locale is set to %1. - Das Systemgebietsschema wird auf %1 eingestellt. + + The system language will be set to %1. + Die Systemsprache wird auf %1 gestellt. - + + The numbers and dates locale will be set to %1. + Das Format für Zahlen und Datum wird auf %1 gesetzt. + + + Region: Region: - + Zone: Zeitzone: - + + &Change... &Ändern... - + Set timezone to %1/%2.<br/> Setze Zeitzone auf %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Lade Standortdaten... - + Location Standort @@ -1220,6 +1350,32 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Kann Gerät %1 nicht öffnen, um den Kopiervorgang rückgängig zu machen. + + NetInstallPage + + + Name + Name + + + + Description + Beschreibung + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Netzwerk-Installation. (Deaktiviert: Paketlisten nicht erreichbar, prüfe deine Netzwerk-Verbindung) + + + + NetInstallViewStep + + + Package selection + Paketauswahl + + Page_Keyboard @@ -1256,12 +1412,11 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Welchen Namen möchten Sie zum Anmelden benutzen? - font-weight: normal - Schriftstil: normal + font-weight: normal @@ -1342,7 +1497,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Neue Partition für %1 - + + New partition + Neue Partition + + + %1 %2 %1 %2 @@ -1362,22 +1522,22 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Neue Partition - + Name Name - + File System Dateisystem - + Mount Point Einhängepunkt - + Size Grösse @@ -1400,32 +1560,32 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Alle Änderungen &rückgängig machen - + New Partition &Table Neue Partitions&tabelle - + &Create &Erstellen - + &Edit Ä&ndern - + &Delete Lösc&hen - + Install boot &loader on: Installiere Boot&loader auf: - + Are you sure you want to create a new partition table on %1? Sind Sie sicher, dass Sie eine neue Partitionstabelle auf %1 erstellen möchten? @@ -1433,89 +1593,99 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. PartitionViewStep - + Gathering system information... Sammle Systeminformationen... - + Partitions Partitionen - + Install %1 <strong>alongside</strong> another operating system. Installiere %1 <strong>neben</strong> einem anderen Betriebssystem. - + <strong>Erase</strong> disk and install %1. <strong>Lösche</strong> Festplatte und installiere %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersetze</strong> eine Partition durch %1. - + <strong>Manual</strong> partitioning. <strong>Manuelle</strong> Partitionierung. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 <strong>parallel</strong> zu einem anderen Betriebssystem auf der Festplatte <strong>%2</strong> (%3) installieren. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. Festplatte <strong>%2</strong> <strong>löschen</strong> (%3) und %1 installieren. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. Eine Partition auf Festplatte <strong>%2</strong> (%3) durch %1 <strong>ersetzen</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuelle</strong> Partitionierung auf Festplatte <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Festplatte <strong>%1</strong> (%2) - + Current: Aktuell: - + After: Nachher: - + No EFI system partition configured - + Keine EFI-Systempartition konfiguriert - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Eine EFI Systempartition wird benötigt um %1 zu starten.<br/><br/>Um eine EFI Systempartition zu konfigurieren, gehen Sie zurück und wählen oder erstellen Sie ein FAT32 Dateisystem mit einer aktivierten <strong>esp</strong> Markierung sowie Einhängepunkt <strong>%2</strong>.<br/><br/>Sie können ohne die Einrichtung einer EFI-Systempartition weitermachen aber ihr System wird unter Umständen nicht starten können. - + EFI system partition flag not set - + Die Markierung als EFI-Systempartition wurde nicht gesetzt - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Eine EFI Systempartition wird benötigt um %1 zu starten.<br/><br/>Eine Partition wurde mit dem Einhängepunkt <strong>%2</strong> konfiguriert jedoch wurde dort keine <strong>esp</strong> Markierung gesetzt.<br/>Um diese Markierung zu setzen, gehen Sie zurück und bearbeiten Sie die Partition.<br/><br/>Sie können ohne die Markierung fortfahren aber ihr System wird unter Umständen nicht starten können. + + + + Boot partition not encrypted + Bootpartition nicht verschlüsselt + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Eine saparate Bootpartition wurde zusammen mit einer verschlüsselten Rootpartition erstellt, die Bootpartition ist aber unverschlüsselt.<br/><br/>. Dies begnet Sicherheitsbedenken, weil wichtige Systemdateien auf einer unverschlüsselten Partition gespeichert werden.<br/>Wenn Sie wollen, können Sie fortfahren, aber das entschlüsseln des Filesystems wird später während des Systemstarts erfolgen.<br/>Um die Bootpartition zu verschlüsseln, gehen Sie zurück und erstellen Sie sie neu, indem Sie <strong>Verschlüsseln</strong> im Partitionserstellungs-Fenster wählen. @@ -1532,20 +1702,25 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Standard - + unknown unbekannt - + extended erweitert - + unformatted unformatiert + + + swap + Swap + Unpartitioned space or unknown partition table @@ -1565,64 +1740,64 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Wählen Sie den Installationsort für %1.<br/><font color="red">Warnung: </font>Dies wird alle Daten auf der ausgewählten Partition löschen. - + The selected item does not appear to be a valid partition. Die aktuelle Auswahl scheint keine gültige Partition zu sein. - + %1 cannot be installed on empty space. Please select an existing partition. %1 kann nicht in einem unpartitionierten Bereich installiert werden. Bitte wählen Sie eine existierende Partition aus. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 kann nicht auf einer erweiterten Partition installiert werden. Bitte wählen Sie eine primäre oder logische Partition aus. - + %1 cannot be installed on this partition. %1 kann auf dieser Partition nicht installiert werden. - + Data partition (%1) Datenpartition (%1) - + Unknown system partition (%1) Unbekannte Systempartition (%1) - + %1 system partition (%2) %1 Systempartition (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Die Partition %1 ist zu klein für %2. Bitte wählen Sie eine Partition mit einer Kapazität von mindestens %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Es wurde keine EFI-Systempartition auf diesem System gefunden. Bitte gehen Sie zurück, und nutzen Sie die manuelle Partitionierung, um %1 aufzusetzen. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 wird installiert auf %2.<br/><font color="red">Warnung: </font> Alle Daten auf der Partition %2 werden gelöscht. - + The EFI system partition at %1 will be used for starting %2. Die EFI-Systempartition auf %1 wird benutzt, um %2 zu starten. - + EFI system partition: EFI-Systempartition: @@ -1630,55 +1805,60 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. RequirementsChecker - + Gathering system information... Sammle Systeminformationen... - + has at least %1 GB available drive space mindestens %1 GB freien Festplattenplatz hat - + There is not enough drive space. At least %1 GB is required. Der Speicherplatz auf der Festplatte ist unzureichend. Es wird mindestens %1 GB benötigt. - + has at least %1 GB working memory hat mindestens %1 GB Arbeitsspeicher - + The system does not have enough working memory. At least %1 GB is required. Das System hat nicht genug Arbeitsspeicher. Es wird mindestens %1GB benötigt. - + is plugged in to a power source ist an eine Stromquelle angeschlossen - + The system is not plugged in to a power source. Das System ist an keine Stromquelle angeschlossen. - + is connected to the Internet ist mit dem Internet verbunden - + The system is not connected to the Internet. Das System ist nicht mit dem Internet verbunden. - + The installer is not running with administrator rights. Das Installationsprogramm wird nicht mit Administratorrechten ausgeführt. + + + The screen is too small to display the installer. + Der Bildschirm ist zu klein um das Installationsprogramm anzuzeigen. + ResizeFileSystemJob @@ -1773,73 +1953,129 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definiere Tastaturmodel zu %1, Layout zu %2-%3 - + Failed to write keyboard configuration for the virtual console. Konnte keine Tastatur-Konfiguration für die virtuelle Konsole schreiben. - - + + + Failed to write to %1 Konnte nicht auf %1 schreiben - + Failed to write keyboard configuration for X11. Konnte keine Tastatur-Konfiguration für X11 schreiben. + + + Failed to write keyboard configuration to existing /etc/default directory. + Die Konfiguration der Tastatur konnte nicht in das bereits existierende Verzeichnis /etc/default geschrieben werden. + SetPartFlagsJob - + Set flags on partition %1. - + Setze Markierungen für Partition %1. - + + Set flags on %1MB %2 partition. + Setze Markierungen für %1MB %2 Partition. + + + + Set flags on new partition. + Setze Markierungen für neue Partition. + + + Clear flags on partition <strong>%1</strong>. - + Markierungen für Partition <strong>%1</strong> entfernen. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Markierungen für %1MB <strong>%2</strong> Partition entfernen. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Markierungen für neue Partition entfernen. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Partition markieren <strong>%1</strong> als <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Markiere %1MB <strong>%2</strong> Partition als <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Markiere neue Partition als <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Lösche Markierungen für Partition <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Lösche Markierungen für %1MB <strong>%2</strong> Partition. + + + + Clearing flags on new partition. + Lösche Markierungen für neue Partition. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Setze Markierungen <strong>%2</strong> für Partition <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Setze Markierungen <strong>%3</strong> für %1MB <strong>%2</strong> Partition. + + + + Setting flags <strong>%1</strong> on new partition. + Setze Markierungen <strong>%1</strong> für neue Partition. + + + The installer failed to set flags on partition %1. - + Das Installationsprogramm konnte keine Markierungen für Partition %1 setzen. - + Could not open device '%1'. - + Gerät '%1' konnte nicht geöffnet werden. - + Could not open partition table on device '%1'. - + Partitionstabelle auf Gerät '%1' konnte nicht geöffnet werden. - + Could not find partition '%1'. - + Partition '%1' konnte nicht gefunden werden. @@ -1858,32 +2094,42 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. SetPasswordJob - + Set password for user %1 Setze Passwort für Benutzer %1 - + Setting password for user %1. Setze Passwort für Benutzer %1. - + Bad destination system path. Ungültiger System-Zielpfad. - + rootMountPoint is %1 root-Einhängepunkt ist %1 - + + Cannot disable root account. + Das Root-Konto kann nicht deaktiviert werden. + + + + passwd terminated with error code %1. + Passwd beendet mit Fehlercode %1. + + + Cannot set password for user %1. Passwort für Benutzer %1 kann nicht gesetzt werden. - + usermod terminated with error code %1. usermod wurde mit Fehlercode %1 beendet. @@ -1916,12 +2162,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. Erstellen der Verknüpfung fehlgeschlagen, Ziel: %1; Verknüpfung: %2 - + Cannot set timezone, Kann die Zeitzone nicht setzen, - + Cannot open /etc/timezone for writing Kein Schreibzugriff auf /etc/timezone @@ -1945,33 +2191,33 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. UsersPage - + Your username is too long. Ihr Nutzername ist zu lang. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Ihr Nutzername enthält ungültige Zeichen. Nur Kleinbuchstaben und Ziffern sind erlaubt. - + Your hostname is too short. Ihr Hostname ist zu kurz. - + Your hostname is too long. Ihr Hostname ist zu lang. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Ihr Hostname enthält ungültige Zeichen. Nur Buchstaben, Ziffern und Striche sind erlaubt. - - + + Your passwords do not match! Ihre Passwörter stimmen nicht überein! @@ -2017,22 +2263,29 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. &Über - + <h1>Welcome to the %1 installer.</h1> <h1>Willkommen im %1 Installationsprogramm.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Willkommen beim Calamares-Installationsprogramm für %1. + + + About %1 installer Über das %1 Installationsprogramm - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Dank an: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/>Die Entwicklung von <a href="http://calamares.io/">Calamares</a> wird unterstützt von <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Danke an: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg und das <a href="https://www.transifex.com/calamares/calamares/">Calamares Übersetzungs-Team</a>.<br/><br/><a href="http://calamares.io/">Die Calamares Entwicklung wird gefördert von<br/><a href="http://www.blue-systems.com/"> Blue Systems</a> - Liberating Software. - + %1 support Unterstützung für %1 @@ -2040,7 +2293,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren. WelcomeViewStep - + Welcome Willkommen diff --git a/lang/calamares_el.ts b/lang/calamares_el.ts index 1b183e8cf..ee760147c 100644 --- a/lang/calamares_el.ts +++ b/lang/calamares_el.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Επιλέξτε κατάτμηση για συρρίκνωση: - - - - Allocate drive space by dragging the divider below: - Διανείμετε τον χώρο του δίσκου σύροντας το παρακάτω διαχωριστικό: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Με αυτή τη λειτουργία, η κατάτμηση <strong>%1</strong> που περιέχει το %4 θα συρρικνωθεί σε %2MB και μία νέα κατάτμηση %3MB θα δημιουργηθεί για το %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Πουθενά στο σύστημα δεν μπορεί να ανιχθευθεί μία κατάτμηση EFI. Παρακαλώ επιστρέψτε πίσω και χρησιμοποιήστε τη χειροκίνητη τμηματοποίηση για την εγκατάσταση του %1. - - - - The EFI system partition at %1 will be used for starting %2. - Η κατάτμηση συστήματος EFI στο %1 θα χρησιμοποιηθεί για την εκκίνηση του %2. - - - - EFI system partition: - Κατάτμηση συστήματος EFI: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + Το <strong> περιβάλλον εκκίνησης <strong> αυτού του συστήματος.<br><br>Παλαιότερα συστήματα x86 υποστηρίζουν μόνο <strong>BIOS</strong>.<br> Τα σύγχρονα συστήματα συνήθως χρησιμοποιούν <strong>EFI</strong>, αλλά ίσως επίσης να φαίνονται ως BIOS εάν εκκινήθηκαν σε λειτουργία συμβατότητας. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + Αυτό το σύστημα εκκινήθηκε με ένα <strong>EFI</strong> περιβάλλον εκκίνησης.<br><br>Για να ρυθμιστεί η εκκίνηση από ένα περιβάλλον EFI, αυτός ο εγκαταστάτης πρέπει να αναπτυχθεί ένα πρόγραμμα φορτωτή εκκίνησης, όπως <strong>GRUB</strong> ή <strong>systemd-boot</strong> σε ένα <strong>EFI Σύστημα Διαμερισμού</strong>. Αυτό είναι αυτόματο, εκτός εάν επιλέξεις χειροκίνητο διαμερισμό, στην οποία περίπτωση οφείλεις να το επιλέξεις ή να το δημιουργήσεις από μόνος σου. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. @@ -101,7 +68,28 @@ Αρθρώματα - + + Type: + Τύπος: + + + + + none + κανένα + + + + Interface: + + + + + Tools + Εργαλεία + + + Debug information Πληροφορίες αποσφαλμάτωσης @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. Εκτελείται η λειτουργία %1. - + Bad working directory path Λανθασμένη διαδρομή καταλόγου εργασίας - + Working directory %1 for python job %2 is not readable. Ο ενεργός κατάλογος %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Bad main script file Λανθασμένο κύριο αρχείο δέσμης ενεργειών - + Main script file %1 for python job %2 is not readable. Η κύρια δέσμη ενεργειών %1 για την εργασία python %2 δεν είναι δυνατόν να διαβαστεί. - + Boost.Python error in job "%1". Σφάλμα Boost.Python στην εργασία "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Προηγούμενο - + &Next &Επόμενο - - + + &Cancel &Ακύρωση - + + + Cancel installation without changing the system. + + + + Cancel installation? Ακύρωση της εγκατάστασης; - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Θέλετε πραγματικά να ακυρώσετε τη διαδικασία εγκατάστασης; Το πρόγραμμα εγκατάστασης θα τερματιστεί και όλες οι αλλαγές θα χαθούν. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Συνέχεια με την εγκατάσταση; - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Το πρόγραμμα εγκατάστασης %1 θα κάνει αλλαγές στον δίσκο για να εγκαταστήσετε το %2.<br/><strong>Δεν θα είστε σε θέση να αναιρέσετε τις αλλαγές.</strong> - + &Install now Ε&γκατάσταση τώρα - + Go &back Μετάβαση πί&σω - - &Quit - Έ&ξοδος + + &Done + - + + The installation is complete. Close the installer. + + + + Error Σφάλμα - + Installation Failed Η εγκατάσταση απέτυχε @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Άγνωστος τύπος εξαίρεσης - + unparseable Python error Μη αναγνώσιμο σφάλμα Python - + unparseable Python traceback Μη αναγνώσιμη ανίχνευση Python - + Unfetchable Python error. Μη ανακτήσιµο σφάλμα Python. @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer Εφαρμογή εγκατάστασης του %1 - + Show debug information Εμφάνιση πληροφοριών απασφαλμάτωσης @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Ελέγχεται το σύστημα αρχείων στην κατάτμηση %1. - + The file system check on partition %1 failed. Απέτυχε ο έλεγχος του συστήματος αρχείων στην κατάτμηση %1. @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ο υπολογιστής δεν ικανοποιεί τις ελάχιστες απαιτήσεις για την εγκατάσταση του %1.<br/>Η εγκατάσταση δεν μπορεί να συνεχιστεί. <a href="#details">Λεπτομέριες...</a> @@ -358,17 +372,17 @@ The installer will quit and all changes will be lost. Αυτός ο υπολογιστής δεν ικανοποιεί μερικές από τις συνιστώμενες απαιτήσεις για την εγκατάσταση του %1.<br/>Η εγκατάσταση μπορεί να συνεχιστεί, αλλά ορισμένες λειτουργίες μπορεί να απενεργοποιηθούν. - + This program will ask you some questions and set up %2 on your computer. Το πρόγραμμα θα σας κάνει μερικές ερωτήσεις και θα ρυθμίσει το %2 στον υπολογιστή σας. - + For best results, please ensure that this computer: Για καλύτερο αποτέλεσμα, παρακαλώ βεβαιωθείτε ότι ο υπολογιστής: - + System requirements Απαιτήσεις συστήματος @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. Τύπος - + After: Μετά: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Χειροκίνητη τμηματοποίηση</strong><br/>Μπορείτε να δημιουργήσετε κατατμήσεις ή να αλλάξετε το μέγεθός τους μόνοι σας. - + Boot loader location: Τοποθεσία προγράμματος εκκίνησης: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. Το %1 θα συρρικνωθεί σε %2MB και μία νέα κατάτμηση %3MB θα δημιουργηθεί για το %4. - + Select storage de&vice: Επιλέξτε συσκευή απ&οθήκευσης: - - - - + + + + Current: Τρέχον: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Επιλέξτε ένα διαμέρισμα για σμίκρυνση, και μετά σύρετε το κάτω τμήμα της μπάρας για αλλαγή του μεγέθους</strong> - + <strong>Select a partition to install on</strong> <strong>Επιλέξτε διαμέρισμα για την εγκατάσταση</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Πουθενά στο σύστημα δεν μπορεί να ανιχθευθεί μία κατάτμηση EFI. Παρακαλώ επιστρέψτε πίσω και χρησιμοποιήστε τη χειροκίνητη τμηματοποίηση για την εγκατάσταση του %1. - + The EFI system partition at %1 will be used for starting %2. Η κατάτμηση συστήματος EFI στο %1 θα χρησιμοποιηθεί για την εκκίνηση του %2. - + EFI system partition: Κατάτμηση συστήματος EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Η συσκευή αποθήκευσης δεν φαίνεται να διαθέτει κάποιο λειτουργικό σύστημα. Τί θα ήθελες να κάνεις;<br/>Θα έχεις την δυνατότητα να επιβεβαιώσεις και αναθεωρήσεις τις αλλαγές πριν γίνει οποιαδήποτε αλλαγή στην συσκευή αποθήκευσης. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Διαγραφή του δίσκου</strong><br/>Αυτό θα <font color="red">διαγράψει</font> όλα τα αρχεία στην επιλεγμένη συσκευή αποθήκευσης. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Εγκατάσταση σε επαλληλία</strong><br/>Η εγκατάσταση θα συρρικνώσει μία κατάτμηση για να κάνει χώρο για το %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Αντικατάσταση μίας κατάτμησης</strong><br/>Αντικαθιστά μία κατάτμηση με το %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Καθαρίστηκαν όλες οι προσαρτήσεις για %1 @@ -502,24 +523,24 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Καθάρισε όλες τις προσωρινές προσαρτήσεις. - + Clearing all temporary mounts. Καθάρισμα όλων των προσωρινών προσαρτήσεων. - + Cannot get list of temporary mounts. - + Η λίστα των προσωρινών προσαρτήσεων δεν μπορεί να ληφθεί. - + Cleared all temporary mounts. - + Καθαρίστηκαν όλες οι προσωρινές προσαρτήσεις. @@ -530,60 +551,70 @@ The installer will quit and all changes will be lost. Δημιουργία κατάτμησης - + + MiB + + + + Partition &Type: Τύ&πος κατάτμησης: - + &Primary Π&ρωτεύουσα - + E&xtended Ε&κτεταμένη - + Fi&le System: - + Σύστημα Αρχ&είων: - + Flags: - + Σημαίες: - + &Mount Point: Σ&ημείο προσάρτησης: - + Si&ze: &Μέγεθος: - - MB - MB + + En&crypt + - + Logical Λογική - + Primary Πρωτεύουσα - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Δημιουργία χρήστη %1 - + Create user <strong>%1</strong>. Δημιουργία χρήστη <strong>%1</strong>. - + Creating user %1. Δημιουργείται ο χρήστης %1. - + Sudoers dir is not writable. Ο κατάλογος sudoers δεν είναι εγγράψιμος. - + Cannot create sudoers file for writing. Δεν είναι δυνατή η δημιουργία του αρχείου sudoers για εγγραφή. - + Cannot chmod sudoers file. Δεν είναι δυνατό το chmod στο αρχείο sudoers. - + Cannot open groups file for reading. Δεν είναι δυνατό το άνοιγμα του αρχείου ομάδων για ανάγνωση. - + Cannot create user %1. Δεν είναι δυνατή η δημιουργία του χρήστη %1. - + useradd terminated with error code %1. Το useradd τερματίστηκε με κωδικό σφάλματος %1. - - Cannot set full name for user %1. - Δεν είναι δυνατός ο ορισμός του πλήρους όνοματος του χρήστη %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - Το chfn τερματίστηκε με κωδικό σφάλματος %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Δεν είναι δυνατός ο ορισμός της ιδιοκτησία του προσωπικού καταλόγου για τον χρήστη %1. - + chown terminated with error code %1. Το chown τερματίστηκε με κωδικό σφάλματος %1. @@ -793,14 +824,14 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. This device has a <strong>%1</strong> partition table. - + Αυτή η συσκευή έχει ένα <strong>%1</strong> πίνακα διαμερισμάτων. @@ -815,7 +846,7 @@ The installer will quit and all changes will be lost. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Αυτός είναι ο προτεινόμενος τύπος πίνακα διαμερισμάτων για σύγχρονα συστήματα τα οποία εκκινούν από ένα <strong>EFI</strong> περιβάλλον εκκίνησης. @@ -831,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ The installer will quit and all changes will be lost. &Μέγεθος: - + + MiB + + + + Fi&le System: &Σύστημα αρχείων: - + Flags: + Σημαίες: + + + + Mountpoint already in use. Please select another one. + + EncryptWidget + + + Form + Τύπος + + + + En&crypt system + + + + + Passphrase + Λέξη Κλειδί + + + + Confirm passphrase + Επιβεβαίωση λέξης κλειδί + + + + Please enter the same passphrase in both boxes. + Παρακαλώ εισάγετε την ίδια λέξη κλειδί και στα δύο κουτιά. + + FillGlobalStorageJob - + Set partition information Ορισμός πληροφοριών κατάτμησης - + Install %1 on <strong>new</strong> %2 system partition. - + Εγκατάσταση %1 στο <strong>νέο</strong> %2 διαμέρισμα συστήματος. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Εγκατάσταση φορτωτή εκκίνησης στο <strong>%1</strong>. - + Setting up mount points. @@ -930,60 +1025,75 @@ The installer will quit and all changes will be lost. Ε&πανεκκίνηση τώρα - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Η εγκατάσταση ολοκληρώθηκε.</h1><br/>Το %1 εγκαταστήθηκε στον υπολογιστή.<br/>Τώρα, μπορείτε να επανεκκινήσετε τον υπολογιστή σας ή να συνεχίσετε να δοκιμάζετε το %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Τέλος + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. Δεν είναι δυνατό το άνοιγμα της συσκευής '%1'. - + Could not open partition table. Δεν είναι δυνατό το άνοιγμα του πίνακα κατατμήσεων. - + The installer failed to create file system on partition %1. Η εγκατάσταση απέτυχε να δημιουργήσει το σύστημα αρχείων στην κατάτμηση %1. - + The installer failed to update partition table on disk '%1'. - + Η εγκατάσταση απέτυχε να αναβαθμίσει τον πίνακα κατατμήσεων στον δίσκο '%1'. @@ -1019,12 +1129,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Ορισμός του μοντέλου πληκτρολογίου σε %1.<br/> - + Set keyboard layout to %1/%2. Ορισμός της διάταξης πληκτρολογίου σε %1/%2. @@ -1032,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Πληκτρολόγιο @@ -1040,15 +1150,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting Τοπική ρύθμιση συστήματος - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Η τοπική ρύθμιση του συστήματος επηρεάζει τη γλώσσα και το σύνολο χαρακτήρων για ορισμένα στοιχεία διεπαφής χρήστη της γραμμής εντολών.<br/>Η τρέχουσα ρύθμιση είναι <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - Η τοπική ρύθμιση του συστήματος έχει οριστεί σε %1. + + The system language will be set to %1. + Η τοπική γλώσσα του συστήματος έχει οριστεί σε %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Περιοχή: - + Zone: Ζώνη: - + + &Change... &Αλλαγή... - + Set timezone to %1/%2.<br/> Ορισμός της ζώνης ώρας σε %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Γίνεται φόρτωση των δεδομένων τοποθεσίας... - + Location Τοποθεσία @@ -1175,12 +1306,12 @@ The installer will quit and all changes will be lost. Move file system of partition %1. - + Μετακίνηση μεγέθους του συστήματος αρχείων στην κατάτμηση %1. Could not open file system on partition %1 for moving. - + Δεν μπορούσε να ανοιχτή το σύστημα αρχείων στη κατάτμηση %1 για μετακίνηση. @@ -1219,6 +1350,32 @@ The installer will quit and all changes will be lost. Δεν είναι δυνατό το άνοιγμα της συσκευής '%1' για την αναίρεση της αντιγραφής. + + NetInstallPage + + + Name + Όνομα + + + + Description + Περιγραφή + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + Επιλογή πακέτου + + Page_Keyboard @@ -1255,7 +1412,6 @@ The installer will quit and all changes will be lost. Ποιο όνομα θα θέλατε να χρησιμοποιείτε για σύνδεση; - @@ -1341,7 +1497,12 @@ The installer will quit and all changes will be lost. Νέα κατάτμηση για το %1 - + + New partition + Νέα κατάτμηση + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. Νέα κατάτμηση - + Name Όνομα - + File System Σύστημα αρχείων - + Mount Point Σημείο προσάρτησης - + Size Μέγεθος @@ -1399,32 +1560,32 @@ The installer will quit and all changes will be lost. Επ&αναφορά όλων των αλλαγών - + New Partition &Table Νέος πίνακας κα&τατμήσεων - + &Create &Δημιουργία - + &Edit &Επεξεργασία - + &Delete &Διαγραφή - + Install boot &loader on: Εγκατάσταση προγράμματος ε&κκίνησης στο: - + Are you sure you want to create a new partition table on %1? Θέλετε σίγουρα να δημιουργήσετε έναν νέο πίνακα κατατμήσεων στο %1; @@ -1432,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Συλλογή πληροφοριών συστήματος... - + Partitions Κατατμήσεις - + Install %1 <strong>alongside</strong> another operating system. Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο. - + <strong>Erase</strong> disk and install %1. <strong>Διαγραφή</strong> του δίσκου και εγκατάσταση του %1. - + <strong>Replace</strong> a partition with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης με το %1. - + <strong>Manual</strong> partitioning. <strong>Χειροκίνητη</strong> τμηματοποίηση. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Εγκατάσταση του %1 <strong>παράλληλα με</strong> ένα άλλο λειτουργικό σύστημα στον δίσκο<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Διαγραφή</strong> του δίσκου <strong>%2</strong> (%3) και εγκατάσταση του %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Αντικατάσταση</strong> μιας κατάτμησης στον δίσκο <strong>%2</strong> (%3) με το %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Χειροκίνητη</strong> τμηματοποίηση του δίσκου <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Δίσκος <strong>%1</strong> (%2) - + Current: Τρέχον: - + After: Μετά: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ The installer will quit and all changes will be lost. Προκαθορισμένο - + unknown άγνωστη - + extended εκτεταμένη - + unformatted μη μορφοποιημένη + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ The installer will quit and all changes will be lost. - + The selected item does not appear to be a valid partition. - + Το επιλεγμένο στοιχείο φαίνεται να μην είναι ένα έγκυρο διαμέρισμα. - + %1 cannot be installed on empty space. Please select an existing partition. - + %1 δεν μπορεί να εγκατασταθεί σε άδειο χώρο. Παρακαλώ επίλεξε ένα υφιστάμενο διαμέρισμα. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 δεν μπορεί να εγκατασταθεί σε ένα εκτεταμένο διαμέρισμα. Παρακαλώ επίλεξε ένα υφιστάμενο πρωτεύον ή λογικό διαμέρισμα. - + %1 cannot be installed on this partition. - + %1 δεν μπορεί να εγκατασταθεί σ' αυτό το διαμέρισμα. - + Data partition (%1) Κατάτμηση δεδομένων (%1) - + Unknown system partition (%1) Άγνωστη κατάτμηση συστήματος (%1) - + %1 system partition (%2) %1 κατάτμηση συστήματος (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Πουθενά στο σύστημα δεν μπορεί να ανιχθευθεί μία κατάτμηση EFI. Παρακαλώ επιστρέψτε πίσω και χρησιμοποιήστε τη χειροκίνητη τμηματοποίηση για την εγκατάσταση του %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + The EFI system partition at %1 will be used for starting %2. Η κατάτμηση συστήματος EFI στο %1 θα χρησιμοποιηθεί για την εκκίνηση του %2. - + EFI system partition: Κατάτμηση συστήματος EFI: @@ -1629,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... Συλλογή πληροφοριών συστήματος... - + has at least %1 GB available drive space έχει τουλάχιστον %1 GB διαθέσιμου χώρου στον δίσκο - + There is not enough drive space. At least %1 GB is required. Δεν υπάρχει αρκετός χώρος στον δίσκο. Απαιτείται τουλάχιστον %1 GB. - + has at least %1 GB working memory έχει τουλάχιστον %1 GB μνημης - + The system does not have enough working memory. At least %1 GB is required. Το σύστημα δεν έχει αρκετή μνήμη. Απαιτείται τουλάχιστον %1 GB. - + is plugged in to a power source είναι συνδεδεμένος σε πηγή ρεύματος - + The system is not plugged in to a power source. Το σύστημα δεν είναι συνδεδεμένο σε πηγή ρεύματος. - + is connected to the Internet είναι συνδεδεμένος στο διαδίκτυο - + The system is not connected to the Internet. Το σύστημα δεν είναι συνδεδεμένο στο διαδίκτυο. - + The installer is not running with administrator rights. Το πρόγραμμα εγκατάστασης δεν εκτελείται με δικαιώματα διαχειριστή. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,73 +1953,129 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - The installer failed to set flags on partition %1. + Flag new partition as <strong>%1</strong>. - + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + Ο εγκαταστάτης απέτυχε να θέσει τις σημαίες στο διαμέρισμα %1. + + + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. - + Δεν μπόρεσε να βρει το διαμέρισμα '%1'. @@ -1846,43 +2083,53 @@ The installer will quit and all changes will be lost. Update geometry of partition %1. - + Εκσυγχρονισμός γεωμετρίας του διαμερίσματος %1. Failed to change the geometry of the partition. - + Απέτυχε η αλλαγή της γεωμετρίας του διαμερίσματος. SetPasswordJob - + Set password for user %1 - + Ορισμός κωδικού για τον χρήστη %1 - + Setting password for user %1. - + Ορίζεται κωδικός για τον χρήστη %1. - + Bad destination system path. - + rootMountPoint is %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -1907,7 +2154,7 @@ The installer will quit and all changes will be lost. Cannot set timezone. - + Αδυναμία ορισμού ζώνης ώρας. @@ -1915,14 +2162,14 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Αδυναμία ορισμού ζώνης ώρας, - + Cannot open /etc/timezone for writing - + Αδυναμία ανοίγματος /etc/timezone για εγγραφή @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Το όνομα χρήστη είναι πολύ μακρύ. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Το όνομα χρήστη περιέχει μη έγκυρους χαρακτήρες. Επιτρέπονται μόνο πεζά γράμματα και αριθμητικά ψηφία. - + Your hostname is too short. Το όνομα υπολογιστή είναι πολύ σύντομο. - + Your hostname is too long. Το όνομα υπολογιστή είναι πολύ μακρύ. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Το όνομα υπολογιστή περιέχει μη έγκυρους χαρακτήρες. Επιτρέπονται μόνο γράμματα, αριθμητικά ψηφία και παύλες. - - + + Your passwords do not match! Οι κωδικοί πρόσβασης δεν ταιριάζουν! @@ -2016,22 +2263,27 @@ The installer will quit and all changes will be lost. Σ&χετικά με - + <h1>Welcome to the %1 installer.</h1> <h1>Καλώς ήλθατε στην εγκατάσταση του %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Σχετικά με το πρόγραμμα εγκατάστασης %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>για το %3</strong><br/><br/>Πνευματικά δικαιώματα 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ευχαριστίες στους: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/> Η ανάπτυξη του <a href="http://calamares.io/">Calamares</a> χρηματοδοτείται από <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Απελευθερώνοντας το λογισμικό. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support Υποστήριξη %1 @@ -2039,7 +2291,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Καλώς ήλθατε diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index decb3dec9..8c81b818a 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Choose partition to shrink: - - - - Allocate drive space by dragging the divider below: - Allocate drive space by dragging the divider below: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - The EFI system partition at %1 will be used for starting %2. - The EFI system partition at %1 will be used for starting %2. - - - - EFI system partition: - EFI system partition: - - 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. 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 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. 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. @@ -101,7 +68,28 @@ Modules - + + Type: + Type: + + + + + none + none + + + + Interface: + Interface: + + + + Tools + Tools + + + Debug information Debug information @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Back - + &Next &Next - - + + &Cancel &Cancel - + + + Cancel installation without changing the system. + Cancel installation without changing the system. + + + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + &Yes + + + + &No + &No + + + + &Close + &Close + + + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - - &Quit - &Quit + + &Done + &Done - + + The installation is complete. Close the installer. + The installation is complete. Close the installer. + + + Error Error - + Installation Failed Installation Failed @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Unknown exception type - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 Installer - + Show debug information Show debug information @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Checking file system on partition %1. - + The file system check on partition %1 failed. The file system check on partition %1 failed. @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ The installer will quit and all changes will be lost. This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + This program will ask you some questions and set up %2 on your computer. This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: For best results, please ensure that this computer: - + System requirements System requirements @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. Form - + After: After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: Select storage de&vice: - - - - + + + + Current: Current: - + + Reuse %1 as home partition for %2. + Reuse %1 as home partition for %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Clear all temporary mounts. - + Clearing all temporary mounts. Clearing all temporary mounts. - + Cannot get list of temporary mounts. Cannot get list of temporary mounts. - + Cleared all temporary mounts. Cleared all temporary mounts. @@ -530,60 +551,70 @@ The installer will quit and all changes will be lost. Create a Partition - + + MiB + MiB + + + Partition &Type: Partition &Type: - + &Primary &Primary - + E&xtended E&xtended - + Fi&le System: Fi&le System: - + Flags: Flags: - + &Mount Point: &Mount Point: - + Si&ze: Si&ze: - - MB - MB + + En&crypt + En&crypt - + Logical Logical - + Primary Primary - + GPT GPT + + + Mountpoint already in use. Please select another one. + Mountpoint already in use. Please select another one. + CreatePartitionJob @@ -687,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. Create user <strong>%1</strong>. - + Creating user %1. Creating user %1. - + Sudoers dir is not writable. Sudoers dir is not writable. - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - + Cannot open groups file for reading. Cannot open groups file for reading. - + Cannot create user %1. Cannot create user %1. - + useradd terminated with error code %1. useradd terminated with error code %1. - - Cannot set full name for user %1. - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. - chfn terminated with error code %1. + + usermod terminated with error code %1. + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. Cannot set home directory ownership for user %1. - + chown terminated with error code %1. chown terminated with error code %1. @@ -793,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. 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. @@ -831,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Write LUKS configuration for Dracut to %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + Failed to open %1 + Failed to open %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ The installer will quit and all changes will be lost. Si&ze: - + + MiB + MiB + + + Fi&le System: Fi&le System: - + Flags: Flags: + + + Mountpoint already in use. Please select another one. + Mountpoint already in use. Please select another one. + + + + EncryptWidget + + + Form + Form + + + + En&crypt system + En&crypt system + + + + Passphrase + Passphrase + + + + Confirm passphrase + Confirm passphrase + + + + Please enter the same passphrase in both boxes. + Please enter the same passphrase in both boxes. + FillGlobalStorageJob - + Set partition information Set partition information - + Install %1 on <strong>new</strong> %2 system partition. Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Install boot loader on <strong>%1</strong>. - + Setting up mount points. Setting up mount points. @@ -930,58 +1025,73 @@ The installer will quit and all changes will be lost. &Restart now - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + FinishedViewStep - + Finish Finish + + + Installation Complete + Installation Complete + + + + The installation of %1 is complete. + The installation of %1 is complete. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatting partition %1 with file system %2. - + The installer failed to format partition %1 on disk '%2'. The installer failed to format partition %1 on disk '%2'. - + Could not open device '%1'. Could not open device '%1'. - + Could not open partition table. Could not open partition table. - + The installer failed to create file system on partition %1. The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. The installer failed to update partition table on disk '%1'. @@ -1019,12 +1129,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1032,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Keyboard @@ -1040,15 +1150,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + &Cancel + + + + &OK + &OK + LicensePage @@ -1131,41 +1251,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - The system locale is set to %1. + + The system language will be set to %1. + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + The numbers and dates locale will be set to %1. + + + Region: Region: - + Zone: Zone: - + + &Change... &Change... - + Set timezone to %1/%2.<br/> Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Loading location data... - + Location Location @@ -1219,6 +1350,32 @@ The installer will quit and all changes will be lost. Could not open device %1 to rollback copying. + + NetInstallPage + + + Name + Name + + + + Description + Description + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + NetInstallViewStep + + + Package selection + Package selection + + Page_Keyboard @@ -1255,7 +1412,6 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - @@ -1341,7 +1497,12 @@ The installer will quit and all changes will be lost. New partition for %1 - + + New partition + New partition + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. New partition - + Name Name - + File System File System - + Mount Point Mount Point - + Size Size @@ -1399,32 +1560,32 @@ The installer will quit and all changes will be lost. &Revert All Changes - + New Partition &Table New Partition &Table - + &Create &Create - + &Edit &Edit - + &Delete &Delete - + Install boot &loader on: Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? @@ -1432,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Current: - + After: After: - + No EFI system partition configured No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + Boot partition not encrypted + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + QObject @@ -1531,20 +1702,25 @@ The installer will quit and all changes will be lost. Default - + unknown unknown - + extended extended - + unformatted unformatted + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ The installer will quit and all changes will be lost. 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. 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 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 an extended partition. Please select an existing primary or logical partition. - + %1 cannot be installed on this partition. %1 cannot be installed on this partition. - + Data partition (%1) Data partition (%1) - + Unknown system partition (%1) Unknown system partition (%1) - + %1 system partition (%2) %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>%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>%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. <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. The EFI system partition at %1 will be used for starting %2. - + EFI system partition: EFI system partition: @@ -1629,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... Gathering system information... - + has at least %1 GB available drive space has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source is plugged in to a power source - + The system is not plugged in to a power source. The system is not plugged in to a power source. - + is connected to the Internet is connected to the Internet - + The system is not connected to the Internet. The system is not connected to the Internet. - + The installer is not running with administrator rights. The installer is not running with administrator rights. + + + The screen is too small to display the installer. + The screen is too small to display the installer. + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. Failed to write keyboard configuration for the virtual console. - - + + + Failed to write to %1 Failed to write to %1 - + Failed to write keyboard configuration for X11. Failed to write keyboard configuration for X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Failed to write keyboard configuration to existing /etc/default directory. + SetPartFlagsJob - + Set flags on partition %1. Set flags on partition %1. - + + Set flags on %1MB %2 partition. + Set flags on %1MB %2 partition. + + + + Set flags on new partition. + Set flags on new partition. + + + Clear flags on partition <strong>%1</strong>. Clear flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Clear flags on %1MB <strong>%2</strong> partition. + + + + Clear flags on new partition. + Clear flags on new partition. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Flag partition <strong>%1</strong> as <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Flag new partition as <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Clearing flags on %1MB <strong>%2</strong> partition. + + + + Clearing flags on new partition. + Clearing flags on new partition. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + Setting flags <strong>%1</strong> on new partition. + Setting flags <strong>%1</strong> on new partition. + + + The installer failed to set flags on partition %1. The installer failed to set flags on partition %1. - + Could not open device '%1'. Could not open device '%1'. - + Could not open partition table on device '%1'. Could not open partition table on device '%1'. - + Could not find partition '%1'. Could not find partition '%1'. @@ -1857,32 +2094,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 Set password for user %1 - + Setting password for user %1. Setting password for user %1. - + Bad destination system path. Bad destination system path. - + rootMountPoint is %1 rootMountPoint is %1 - + + Cannot disable root account. + Cannot disable root account. + + + + passwd terminated with error code %1. + passwd terminated with error code %1. + + + Cannot set password for user %1. Cannot set password for user %1. - + usermod terminated with error code %1. usermod terminated with error code %1. @@ -1915,12 +2162,12 @@ The installer will quit and all changes will be lost. Link creation failed, target: %1; link name: %2 - + Cannot set timezone, Cannot set timezone, - + Cannot open /etc/timezone for writing Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. Your hostname is too short. - + Your hostname is too long. Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Your passwords do not match! @@ -2016,22 +2263,27 @@ The installer will quit and all changes will be lost. &About - + <h1>Welcome to the %1 installer.</h1> <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Welcome to the Calamares installer for %1.</h1> + + + About %1 installer About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 support @@ -2039,7 +2291,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Welcome diff --git a/lang/calamares_en_GB.ts b/lang/calamares_en_GB.ts index 0aacc64c0..5fcf677a5 100644 --- a/lang/calamares_en_GB.ts +++ b/lang/calamares_en_GB.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Choose partition to shrink: - - - - Allocate drive space by dragging the divider below: - Allocate drive space by dragging the divider below: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - 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: - - - 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. @@ -101,7 +68,28 @@ Modules - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information Debug information @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Bad working directory path - + Working directory %1 for python job %2 is not readable. Working directory %1 for python job %2 is not readable. - + Bad main script file Bad main script file - + Main script file %1 for python job %2 is not readable. Main script file %1 for python job %2 is not readable. - + Boost.Python error in job "%1". Boost.Python error in job "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Back - + &Next &Next - - + + &Cancel &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Install now - + Go &back Go &back - - &Quit - &Quit + + &Done + - + + The installation is complete. Close the installer. + + + + Error Error - + Installation Failed Installation Failed @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Unknown exception type - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 Installer - + Show debug information Show debug information @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Checking file system on partition %1. - + The file system check on partition %1 failed. The file system check on partition %1 failed. @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Cleared all mounts for %1 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. Cannot get list of temporary mounts. - + Cleared all temporary mounts. Cleared all temporary mounts. @@ -530,60 +551,70 @@ The installer will quit and all changes will be lost. Create a Partition - + + MiB + + + + Partition &Type: Partition &Type: - + &Primary &Primary - + E&xtended E&xtended - + Fi&le System: - + Flags: - + &Mount Point: &Mount Point: - + Si&ze: Si&ze: - - MB - MB + + En&crypt + - + Logical Logical - + Primary Primary - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Sudoers dir is not writable. - + Cannot create sudoers file for writing. Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Cannot chmod sudoers file. - + Cannot open groups file for reading. Cannot open groups file for reading. - + Cannot create user %1. Cannot create user %1. - + useradd terminated with error code %1. useradd terminated with error code %1. - - Cannot set full name for user %1. - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn terminated with error code %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Cannot set home directory ownership for user %1. - + chown terminated with error code %1. chown terminated with error code %1. @@ -793,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ The installer will quit and all changes will be lost. - + + 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 Set partition information - + Install %1 on <strong>new</strong> %2 system partition. Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -930,58 +1025,73 @@ The installer will quit and all changes will be lost. &Restart now - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Format <strong>%3MB</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'. The installer failed to format partition %1 on disk '%2'. - + Could not open device '%1'. Could not open device '%1'. - + Could not open partition table. Could not open partition table. - + The installer failed to create file system on partition %1. The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. The installer failed to update partition table on disk '%1'. @@ -1019,12 +1129,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. Set keyboard layout to %1/%2. @@ -1032,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Keyboard @@ -1040,15 +1150,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - The system locale is set to %1. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Region: - + Zone: Zone: - + + &Change... &Change... - + Set timezone to %1/%2.<br/> Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Loading location data... - + Location Location @@ -1219,6 +1350,32 @@ The installer will quit and all changes will be lost. Could not open device %1 to rollback copying. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - @@ -1341,7 +1497,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. New partition - + Name Name - + File System File System - + Mount Point Mount Point - + Size Size @@ -1399,32 +1560,32 @@ The installer will quit and all changes will be lost. &Revert All Changes - + New Partition &Table New Partition &Table - + &Create &Create - + &Edit &Edit - + &Delete &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Are you sure you want to create a new partition table on %1? @@ -1432,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Gathering system information... - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ The installer will quit and all changes will be lost. Default - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1629,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. Failed to write keyboard configuration for the virtual console. - - + + + Failed to write to %1 Failed to write to %1 - + Failed to write keyboard configuration for X11. Failed to write keyboard configuration for X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 Set password for user %1 - + Setting password for user %1. - + Bad destination system path. Bad destination system path. - + rootMountPoint is %1 rootMountPoint is %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Cannot set password for user %1. - + usermod terminated with error code %1. usermod terminated with error code %1. @@ -1915,12 +2162,12 @@ The installer will quit and all changes will be lost. Link creation failed, target: %1; link name: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. Your hostname is too short. - + Your hostname is too long. Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Your passwords do not match! @@ -2016,22 +2263,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_es.ts b/lang/calamares_es.ts index 0aa47c54d..0ae26c8da 100644 --- a/lang/calamares_es.ts +++ b/lang/calamares_es.ts @@ -1,53 +1,21 @@ - - AlongsidePage - - - Choose partition to shrink: - Selecciona la partición a reducir: - - - - Allocate drive space by dragging the divider below: - Asignar espacio en el disco arrastrando el separador de abajo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Con esta operación, la partición <strong>%1</strong> que contiene %4 será reducida a %2MB y una nueva partición de %3MB será creada para %5 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - No se puede encontrar en el sistema una partición EFI. Por favor vuelva a atrás y use el particionamiento manual para configurar %1. - - - - The EFI system partition at %1 will be used for starting %2. - La partición EFI en %1 será usada para iniciar %2. - - - - EFI system partition: - Partición del sistema EFI: - - 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. - + El <strong>entorno de arranque<strong> de este sistema.<br><br>Los sistemas x86 sólo soportan <strong>BIOS</strong>.<br>Los sistemas modernos habitualmente usan <strong>EFI</strong>, pero también pueden mostrarse como BIOS si se inician en modo de compatibildiad. - + 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. - + Este sistema se inició con un entorno de arranque <strong>EFI</strong>.<br><br>Para configurar el arranque desde un entorno EFI, este instalador debe desplegar una aplicación de gestor de arranque, como <strong>GRUB</strong> o <strong>systemd-boot</strong> en una <strong>Partición de Sistema EFI</strong>. Esto es automático, a menos que escoja particionamiento manual, en cuyo caso debe escogerlo o crearlo usted mismo. - + 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. - + Este sistema fue iniciado con un entorno de arranque <strong>BIOS</strong>.<br><br> +Para configurar el arranque desde un entorno BIOS, este instalador debe instalar un gestor de arranque, como <strong>GRUB</strong>, tanto al principio de una partición o en el <strong>Master Boot Record</strong> (registro maestro de arranque) cerca del principio de la tabla de partición (preferentemente). Esto es automático, a menos que escoja particionamiento manual, en cuayo caso debe establecerlo usted mismo. @@ -101,7 +69,28 @@ Módulos - + + Type: + Tipo: + + + + + none + ninguno + + + + Interface: + Interfaz: + + + + Tools + Herramientas + + + Debug information Información de depuración. @@ -200,32 +189,32 @@ Salida: Calamares::PythonJob - + Running %1 operation. Ejecutando %1 operación. - + Bad working directory path Error en la ruta del directorio de trabajo - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -233,65 +222,91 @@ Salida: Calamares::ViewManager - + &Back &Atrás - + &Next &Siguiente - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + Cancelar instalación sin cambiar el sistema. + + + Cancel installation? ¿Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Realmente quiere cancelar el proceso de instalación? Saldrá del instalador y se perderán todos los cambios. - + + &Yes + &Sí + + + + &No + &No + + + + &Close + &Cerrar + + + Continue with setup? ¿Continuar con la configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back Regresar - - &Quit - &Salir + + &Done + &Hecho - + + The installation is complete. Close the installer. + La instalación se ha completado. Cierre el instalador. + + + Error Error - + Installation Failed Error en la Instalación @@ -299,22 +314,22 @@ Saldrá del instalador y se perderán todos los cambios. CalamaresPython::Helper - + Unknown exception type Excepción desconocida - + unparseable Python error error unparseable Python - + unparseable Python traceback rastreo de Python unparseable - + Unfetchable Python error. Error de Python Unfetchable. @@ -322,12 +337,12 @@ Saldrá del instalador y se perderán todos los cambios. CalamaresWindow - + %1 Installer %1 Instalador - + Show debug information Mostrar información de depuración. @@ -335,12 +350,12 @@ Saldrá del instalador y se perderán todos los cambios. CheckFileSystemJob - + Checking file system on partition %1. Verificando sistema de archivos en la partición %1. - + The file system check on partition %1 failed. La verificación del sistema de archivos en la partición %1 ha fallado. @@ -348,7 +363,7 @@ Saldrá del instalador y se perderán todos los cambios. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este ordenador no cumple los requisitos mínimos para la instalación. %1.<br/>La instalación no puede continuar. <a href="#details">Detalles...</a> @@ -358,17 +373,17 @@ Saldrá del instalador y se perderán todos los cambios. Este ordenador no cumple alguno de los requisitos recomendados para la instalación %1.<br/>La instalación puede continuar, pero algunas funcionalidades podrían ser deshabilitadas. - + This program will ask you some questions and set up %2 on your computer. El programa le preguntará algunas cuestiones y configurará %2 en su ordenador. - + For best results, please ensure that this computer: Para obtener los mejores resultados, por favor asegúrese que este ordenador: - + System requirements Requisitos del sistema @@ -381,120 +396,127 @@ Saldrá del instalador y se perderán todos los cambios. Formulario - + After: Despues: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Particionado manual </strong><br/> Usted puede crear o cambiar el tamaño de las particiones usted mismo. - + Boot loader location: Ubicación del cargador de arranque: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 se contraerá a %2 MB y se creará una nueva partición de %3 MB para %4. - + Select storage de&vice: - + Seleccionar dispositivo de almacenamiento: - - - - + + + + Current: - + Corriente - + + Reuse %1 as home partition for %2. + Volver a usar %1 como partición home para %2 + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Seleccione una partición para reducir el tamaño, a continuación, arrastre la barra inferior para cambiar el tamaño</strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>Seleccione una partición para instalar en</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + No se puede encontrar una partición de sistema EFI en ningún lugar de este sistema. Por favor, vuelva y use el particionamiento manual para establecer %1. + + + + The EFI system partition at %1 will be used for starting %2. + La partición de sistema EFI en %1 se usará para iniciar %2. + + + + EFI system partition: + Partición del sistema EFI: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Este dispositivo de almacenamiento no parece tener un sistema operativo en él. ¿Qué quiere hacer?<br/>Podrá revisar y confirmar sus elecciones antes de que se haga cualquier cambio en el dispositivo de almacenamiento. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>Borrar disco</strong><br/>Esto <font color="red">borrará</font> todos los datos presentes actualmente en el dispositivo de almacenamiento. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + %1 se encuentra instalado en este dispositivo de almacenamiento. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>Instalar junto al otro SO</strong><br/>El instalador reducirá la partición del SO existente para tener espacio para instalar %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>Reemplazar una partición</strong><br/>Reemplazar una partición con %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Este dispositivo de almacenamiento parece que ya tiene un sistema operativo instalado en él. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Este dispositivo de almacenamiento contiene múltiples sistemas operativos instalados en él. ¿Qué desea hacer?<br/>Podrá revisar y confirmar su elección antes de que cualquier cambio se haga efectivo en el dispositivo de almacenamiento. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpiar puntos de montaje para operaciones de particionamiento en %1 - + Clearing mounts for partitioning operations on %1. Limpiando puntos de montaje para operaciones de particionamiento en %1. - + Cleared all mounts for %1 Limpiados todos los puntos de montaje para %1 @@ -502,22 +524,22 @@ Saldrá del instalador y se perderán todos los cambios. ClearTempMountsJob - + Clear all temporary mounts. Limpiar todos los puntos de montaje temporales. - + Clearing all temporary mounts. Limpiando todos los puntos de montaje temporales. - + Cannot get list of temporary mounts. No se puede obtener la lista de puntos de montaje temporales. - + Cleared all temporary mounts. Limpiado todos los puntos de montaje temporales. @@ -530,60 +552,70 @@ Saldrá del instalador y se perderán todos los cambios. Crear partición - + + MiB + MiB + + + Partition &Type: &Tipo de partición: - + &Primary &Primaria - + E&xtended E&xtendida - + Fi&le System: - + Sistema de archivos: - + Flags: - + Banderas: - + &Mount Point: Punto de &montaje: - + Si&ze: &Tamaño: - - MB - MB + + En&crypt + &Cifrar - + Logical Lógica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + Punto de montaje ya en uso. Por favor, seleccione otro. + CreatePartitionJob @@ -687,67 +719,67 @@ Saldrá del instalador y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando usuario %1. - + Sudoers dir is not writable. El directorio de sudoers no dispone de permisos de escritura. - + Cannot create sudoers file for writing. No es posible crear el archivo de escritura para sudoers. - + Cannot chmod sudoers file. No es posible modificar los permisos de sudoers. - + Cannot open groups file for reading. No es posible abrir el archivo de grupos del sistema. - + Cannot create user %1. No se puede crear el usuario %1. - + useradd terminated with error code %1. useradd terminó con código de error %1. - - Cannot set full name for user %1. - No se puede asignar el nombre completo al usuario %1. + + Cannot add user %1 to groups: %2. + No se puede añadir al usuario %1 a los grupos: %2. - - chfn terminated with error code %1. - chfn terminó con código de error %1. + + usermod terminated with error code %1. + usermod finalizó con un código de error %1. - + Cannot set home directory ownership for user %1. No se puede dar la propiedad del directorio home al usuario %1 - + chown terminated with error code %1. chown terminó con código de error %1. @@ -793,34 +825,34 @@ Saldrá del instalador y se perderán todos los cambios. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + El tipo de <strong>tabla de particiones</strong> en el dispositivo de almacenamiento seleccionado.<br/><br/>La única forma de cambiar el tipo de la tabla de particiones es borrando y creando la tabla de particiones de nuevo, lo cual destruirá todos los datos almacenados en el dispositivo de almacenamiento.<br/>Este instalador mantendrá la tabla de particiones actual salvo que explícitamente se indique lo contrario.<br/>En caso de dudas, GPT es preferible en sistemas modernos. This device has a <strong>%1</strong> partition table. - + Este dispositivo tiene un <strong>% 1 </ strong> tabla de particiones. 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. - + Este es un dispositivo <strong>loop</strong>.<br/><br/>Se trata de un pseudo-dispositivo sin tabla de particiones que permite el acceso a los archivos como un dispositivo orientado a bloques. Este tipo de configuración normalmente solo contiene un único sistema de archivos. 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. - + Este instalador <strong>no puede detectar una tabla de particiones</strong> en el dispositivo de almacenamiento seleccionado.<br><br> El dispositivo no tiene una tabla de particiones o la tabla de particiones está corrupta o es de un tipo desconocido.<br> Este instalador puede crearte una nueva tabla de particiones automáticamente o mediante la página de particionamiento manual. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Este es el tipo de tabla de particiones recomendado para sistemas modernos que arrancan mediante un entorno de arranque <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Este tipo de tabla de partición sólo es aconsejable en sistemas antiguos que se inician desde un entorno de arranque <strong>BIOS</strong>. La tabla GPT está recomendada en la mayoría de los demás casos.<br><br><strong>Advertencia:</strong> La tabla de partición MBR es un estándar obsoleto de la era MS-DOS.<br>Sólo se pueden crear 4 particiones <em>primarias</em>, y de esas 4, una puede ser una partición <em>extendida</em> que, en cambio, puede contener varias particiones <em>lógicas</em>. @@ -831,6 +863,32 @@ Saldrá del instalador y se perderán todos los cambios. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Escribir la configuración de LUKS para Dracut en %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Omitir la escritura de la configuración de LUKS para Dracut: La partición "/" no está cifrada + + + + Failed to open %1 + No se pudo abrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Tarea C++ ficticia + + EditExistingPartitionDialog @@ -869,50 +927,88 @@ Saldrá del instalador y se perderán todos los cambios. &Tamaño: - + + MiB + MiB + + + Fi&le System: S&istema de archivo: - + Flags: - + Banderas: + + + + Mountpoint already in use. Please select another one. + Punto de montaje ya en uso. Por favor, seleccione otro. + + + + EncryptWidget + + + Form + Formulario + + + + En&crypt system + &Cifrar sistema + + + + Passphrase + Frase-contraseña + + + + Confirm passphrase + Confirmar frase-contraseña + + + + Please enter the same passphrase in both boxes. + Por favor, introduzca la misma frase-contraseña en ambos recuadros. FillGlobalStorageJob - + Set partition information Establecer la información de la partición - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 en <strong>nuevo</strong> %2 partición del sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurar <strong>nueva</strong> %2 partición con punto de montaje <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 en %3 partición del sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurar %3 partición <strong>%1</strong> con punto de montaje <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar gestor de arranque en <strong>%1</strong>. - + Setting up mount points. Configurando puntos de montaje. @@ -930,58 +1026,73 @@ Saldrá del instalador y se perderán todos los cambios. &Reiniciar ahora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Listo.</h1><br/>%1 ha sido instalado en su equipo.<br/>Ahora puede reiniciar hacia su nuevo sistema, o continuar utilizando %2 Live. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>La instalación falló</h1><br/>%1 no se ha instalado en su equipo.<br/>El mensaje de error fue: %2. + FinishedViewStep - + Finish Finalizar + + + Installation Complete + Instalación completada + + + + The installation of %1 is complete. + Se ha completado la instalación de %1. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatear la partición %1 (sistema de archivos: %2, tamaño: %3 MB) en %4 - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatear <strong>%3MB</strong> partición <strong>%1</strong> con sistema de ficheros <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formateando partición %1 con sistema de ficheros %2. - + The installer failed to format partition %1 on disk '%2'. El instalador falló al formatear la partición %1 del disco '%2'. - + Could not open device '%1'. No se pudo abrir el dispositivo '%1'. - + Could not open partition table. No se pudo abrir la tabla de particiones. - + The installer failed to create file system on partition %1. El instalador falló al crear el sistema de archivos en la partición %1. - + The installer failed to update partition table on disk '%1'. El instalador falló al actualizar la tabla de particiones del disco '%1'. @@ -1019,12 +1130,12 @@ Saldrá del instalador y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Establecer el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Configurar la disposición de teclado a %1/%2. @@ -1032,7 +1143,7 @@ Saldrá del instalador y se perderán todos los cambios. KeyboardViewStep - + Keyboard Teclado @@ -1040,15 +1151,25 @@ Saldrá del instalador y se perderán todos los cambios. LCLocaleDialog - + System locale setting Configuración regional del sistema. - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. La configuración regional del sistema afecta al idioma y a al conjunto de caracteres para algunos elementos de interfaz de la linea de comandos.<br/>La configuración actual es <strong>%1</strong>. + + + &Cancel + &Cancelar + + + + &OK + &Aceptar + LicensePage @@ -1131,41 +1252,52 @@ Saldrá del instalador y se perderán todos los cambios. LocalePage - - - The system locale is set to %1. - La configuración regional del sistema se establece a %1. + + The system language will be set to %1. + El idioma del sistema se establecerá a %1. - + + The numbers and dates locale will be set to %1. + La localización de números y fechas se establecerá a %1. + + + Region: Región: - + Zone: Zona: - + + &Change... &Cambiar... - + Set timezone to %1/%2.<br/> Configurar zona horaria a %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Detectando ubicación... - + Location Ubicación @@ -1219,6 +1351,32 @@ Saldrá del instalador y se perderán todos los cambios. No se puede abrir el dispositivo %1 para deshacer la copia. + + NetInstallPage + + + Name + Nombre + + + + Description + Descripción + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalación a través de la Red. (Desactivada: no se ha podido obtener una lista de paquetes, comprueba tu conexión a la red) + + + + NetInstallViewStep + + + Package selection + Selección de paquetes + + Page_Keyboard @@ -1255,7 +1413,6 @@ Saldrá del instalador y se perderán todos los cambios. ¿Qué nombre desea usar para ingresar? - @@ -1341,7 +1498,12 @@ Saldrá del instalador y se perderán todos los cambios. Nueva partición de %1 - + + New partition + Partición nueva + + + %1 %2 %1 %2 @@ -1361,22 +1523,22 @@ Saldrá del instalador y se perderán todos los cambios. Partición nueva - + Name Nombre - + File System Sistema de archivos - + Mount Point Punto de montaje - + Size Tamaño @@ -1399,32 +1561,32 @@ Saldrá del instalador y se perderán todos los cambios. &Deshacer todos los cambios - + New Partition &Table Nueva &tabla de particiones - + &Create &Crear - + &Edit &Editar - + &Delete &Borrar - + Install boot &loader on: Instalar gestor de arranque en: - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? @@ -1432,89 +1594,99 @@ Saldrá del instalador y se perderán todos los cambios. PartitionViewStep - + Gathering system information... Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto a</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una partición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto a</strong> otro sistema operativo en disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una partición en disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamiento <strong>manual</strong> en disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1<strong> (%2) - + Current: - + Corriente - + After: - + Despúes: - + No EFI system partition configured - + No hay una partición del sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Una partición EFI del sistema es necesaria para empezar %1.<br/><br/>Para configurar una partición EFI, vuelva atrás y seleccione crear un sistema de archivos FAT32 con el argumento <strong>esp</strong> activado y montada en <strong>%2</strong>.<br/><br/>Puede continuar sin configurar una partición EFI pero su sistema puede fallar al arrancar. - + EFI system partition flag not set - + Bandera EFI no establecida en la partición del sistema - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Una partición EFI del sistema es necesaria para empezar %1.<br/><br/>Una partición EFI fue configurada para ser montada en <strong>%2</strong> pero su argumento <strong>esp</strong> no fue seleccionado.<br/>Para activar el argumento, vuelva atrás y edite la partición.<br/><br/>Puede continuar sin configurar el argumento pero su sistema puede fallar al arrancar. + + + + Boot partition not encrypted + Partición de arranque no cifrada + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Se estableció una partición de arranque aparte junto con una partición raíz cifrada, pero la partición de arranque no está cifrada.<br/><br/>Hay consideraciones de seguridad con esta clase de instalación, porque los ficheros de sistema importantes se mantienen en una partición no cifrada.<br/>Puede continuar si lo desea, pero el desbloqueo del sistema de ficheros ocurrirá más tarde durante el arranque del sistema.<br/>Para cifrar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Cifrar</strong> en la ventana de creación de la partición. @@ -1531,20 +1703,25 @@ Saldrá del instalador y se perderán todos los cambios. Por defecto - + unknown desconocido - + extended extendido - + unformatted sin formato + + + swap + swap + Unpartitioned space or unknown partition table @@ -1561,67 +1738,67 @@ Saldrá del instalador y se perderán todos los cambios. Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + Seleccione dónde instalar %1<br/><font color="red">Atención: </font>esto borrará todos sus archivos en la partición seleccionada. - + The selected item does not appear to be a valid partition. El elemento seleccionado no parece ser una partición válida. - + %1 cannot be installed on empty space. Please select an existing partition. %1 no se puede instalar en el espacio vacío. Por favor, seleccione una partición existente. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 no se puede instalar en una partición extendida. Por favor, seleccione una partición primaria o lógica existente. - + %1 cannot be installed on this partition. %1 no se puede instalar en esta partición. - + Data partition (%1) Partición de datos (%1) - + Unknown system partition (%1) Partición desconocida del sistema (%1) - + %1 system partition (%2) %1 partición del sistema (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>La partición %1 es demasiado pequeña para %2. Por favor, seleccione una participación con capacidad para al menos %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>No se puede encontrar una partición de sistema EFI en ninguna parte de este sistema. Por favor, retroceda y use el particionamiento manual para establecer %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 se instalará en %2.<br/><font color="red">Advertencia: </font>Todos los datos en la partición %2 se perderán. - + The EFI system partition at %1 will be used for starting %2. - + La partición del sistema EFI en %1 se utilizará para iniciar %2. - + EFI system partition: Partición del sistema EFI: @@ -1629,55 +1806,60 @@ Saldrá del instalador y se perderán todos los cambios. RequirementsChecker - + Gathering system information... Obteniendo información del sistema... - + has at least %1 GB available drive space tiene al menos %1 GB espacio libre en el disco - + There is not enough drive space. At least %1 GB is required. No hay suficiente espació en el disco duro. Se requiere al menos %1 GB libre. - + has at least %1 GB working memory tiene al menos %1 GB de memoria. - + The system does not have enough working memory. At least %1 GB is required. El sistema no tiene suficiente memoria. Se requiere al menos %1 GB - + is plugged in to a power source esta conectado a una fuente de alimentación - + The system is not plugged in to a power source. El sistema no esta conectado a una fuente de alimentación. - + is connected to the Internet esta conectado a Internet - + The system is not connected to the Internet. El sistema no esta conectado a Internet - + The installer is not running with administrator rights. El instalador no esta ejecutándose con permisos de administrador. + + + The screen is too small to display the installer. + La pantalla es demasiado pequeña para mostrar el instalador. + ResizeFileSystemJob @@ -1772,73 +1954,129 @@ Saldrá del instalador y se perderán todos los cambios. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurar modelo de teclado a %1, distribución a %2-%3 - + Failed to write keyboard configuration for the virtual console. Hubo un fallo al escribir la configuración del teclado para la consola virtual. - - + + + Failed to write to %1 No se puede escribir en %1 - + Failed to write keyboard configuration for X11. Hubo un fallo al escribir la configuración del teclado para X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + No se pudo escribir la configuración de teclado en el directorio /etc/default existente. + SetPartFlagsJob - + Set flags on partition %1. - + Establecer indicadores en la partición %1. - + + Set flags on %1MB %2 partition. + Establecer indicadores en la partición de %1 MB %2. + + + + Set flags on new partition. + Establecer indicadores en una nueva partición. + + + Clear flags on partition <strong>%1</strong>. - + Limpiar indicadores en la partición <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Limpiar indicadores en la partición de %1 MB <strong>%2</strong>. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Limpiar indicadores en la nueva partición. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Indicar partición <strong>%1</strong> como <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Indicar partición de %1 MB <strong>%2</strong> como <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Indicar nueva partición como <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Limpiando indicadores en la partición <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Limpiando indicadores en la partición de %1 MB <strong>%2</strong>. + + + + Clearing flags on new partition. + Limpiando indicadores en la nueva partición. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Estableciendo indicadores <strong>%2</strong> en la partición <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Establecinedo indicadores <strong>%3</strong> en la partición de %1 MB <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Estableciendo indicadores <strong>%1</strong> en una nueva partición. + + + The installer failed to set flags on partition %1. - + El instalador no pudo establecer indicadores en la partición %1. - + Could not open device '%1'. - + No se pudo abrir el dispositivo '%1'. - + Could not open partition table on device '%1'. - + No se pudo abrir la tabla de particiones en el dispositivo '%1'. - + Could not find partition '%1'. - + No se pudo encontrar la partición '%1'. @@ -1857,32 +2095,42 @@ Saldrá del instalador y se perderán todos los cambios. SetPasswordJob - + Set password for user %1 Definir contraseña para el usuario %1. - + Setting password for user %1. Configurando contraseña para el usuario %1. - + Bad destination system path. Destino erróneo del sistema. - + rootMountPoint is %1 El punto de montaje de la raíz es %1 - + + Cannot disable root account. + No se puede deshabilitar la cuenta root + + + + passwd terminated with error code %1. + passwd finalizó con el código de error %1. + + + Cannot set password for user %1. No se puede definir contraseña para el usuario %1. - + usermod terminated with error code %1. usermod ha terminado con el código de error %1 @@ -1915,12 +2163,12 @@ Saldrá del instalador y se perderán todos los cambios. Fallo al crear el enlace, destino: %1; nombre del enlace: %2 - + Cannot set timezone, No se puede establecer la zona horaria, - + Cannot open /etc/timezone for writing No se puede abrir/etc/timezone para la escritura @@ -1944,33 +2192,33 @@ Saldrá del instalador y se perderán todos los cambios. UsersPage - + Your username is too long. Su nombre de usuario es demasiado largo. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Su nombre de usuario contiene caracteres inválidos. Solo se admiten letras minúsculas y números. - + Your hostname is too short. El nombre del Host es demasiado corto. - + Your hostname is too long. El nombre del Host es demasiado largo. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. El nombre del Host contiene caracteres inválidos. Solo se admiten letras, números y guiones. - - + + Your passwords do not match! ¡Sus contraseñas no coinciden! @@ -2016,22 +2264,27 @@ Saldrá del instalador y se perderán todos los cambios. &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenido al instalador %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Bienvenido al instalador de Calamares para %1.</h1> + + + About %1 installer Acerca del instalador %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>por %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Gracias a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/> El desarrollo de<br/><a href="http://calamares.io/">Calamares</a> está patrocinado por <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>para %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimientos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y el <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores de Calamares</a>.<br/><br/>El desarrollo de <a href="http://calamares.io/">Calamares</a> está patrocinado por: <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberando Software. - + %1 support %1 ayuda @@ -2039,7 +2292,7 @@ Saldrá del instalador y se perderán todos los cambios. WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_ES.ts b/lang/calamares_es_ES.ts index 64edba07f..364d9d685 100644 --- a/lang/calamares_es_ES.ts +++ b/lang/calamares_es_ES.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Elige la partición a reducir: - - - - Allocate drive space by dragging the divider below: - Asigna el espacio de disco moviendo el separado de debajo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Con esta operación la partición <strong>%1</strong> que tiene %4 se va a reducir a %2MB y se va a crear una nueva partición de %3MB para %5 - - - - 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: - - - 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. @@ -101,7 +68,28 @@ Módulos - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information Información de depuración @@ -200,32 +188,32 @@ Salida: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Ruta de trabajo errónea - + Working directory %1 for python job %2 is not readable. No se puede leer la ruta de trabajo %1 de la tarea %2 de python. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. No se puede leer el script principal %1 de la tarea %2 de python. - + Boost.Python error in job "%1". Error de Boost.Python en la tarea "%1". @@ -233,65 +221,91 @@ Salida: Calamares::ViewManager - + &Back &Atrás - + &Next &Siguiente - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + + + + Cancel installation? ¿Cancelar instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. ¿Estás seguro de que quieres cancelar la instalación en curso? El instalador se cerrará y se perderán todos los cambios. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? ¿Continuar con la configuración? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instalar ahora - + Go &back Volver atrás. - - &Quit - &Salir + + &Done + - + + The installation is complete. Close the installer. + + + + Error Error - + Installation Failed La instalación ha fallado @@ -299,22 +313,22 @@ El instalador se cerrará y se perderán todos los cambios. CalamaresPython::Helper - + Unknown exception type Tipo de excepción desconocida - + unparseable Python error Error de Python no analizable - + unparseable Python traceback Rastreo de Python no analizable - + Unfetchable Python error. Error de Python no alcanzable. @@ -322,12 +336,12 @@ El instalador se cerrará y se perderán todos los cambios. CalamaresWindow - + %1 Installer Instalador %1 - + Show debug information Mostrar la información de depuración @@ -335,12 +349,12 @@ El instalador se cerrará y se perderán todos los cambios. CheckFileSystemJob - + Checking file system on partition %1. Verificando el sistema de ficheros de la partición %1. - + The file system check on partition %1 failed. La verificación del sistema de ficheros de la partición %1 ha fallado. @@ -348,7 +362,7 @@ El instalador se cerrará y se perderán todos los cambios. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ El instalador se cerrará y se perderán todos los cambios. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ El instalador se cerrará y se perderán todos los cambios. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ El instalador se cerrará y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpiar los puntos de montaje para particionar %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Unidades desmontadas en %1 @@ -502,22 +523,22 @@ El instalador se cerrará y se perderán todos los cambios. ClearTempMountsJob - + Clear all temporary mounts. Quitar todos los puntos de montaje temporales. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. No se puede obtener la lista de puntos de montaje temporales. - + Cleared all temporary mounts. Se han quitado todos los puntos de montaje temporales. @@ -530,60 +551,70 @@ El instalador se cerrará y se perderán todos los cambios. Crear una partición - + + MiB + + + + Partition &Type: &Tipo de partición: - + &Primary &Primaria - + E&xtended E&xtendida - + Fi&le System: - + Flags: - + &Mount Point: Punto de &montaje: - + Si&ze: Tamaño - - MB - MB + + En&crypt + - + Logical Logica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ El instalador se cerrará y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear el usuario %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. No se puede escribir en el directorio Sudoers. - + Cannot create sudoers file for writing. No se puede crear el archivo sudoers como de escritura. - + Cannot chmod sudoers file. No se puede ejecutar chmod sobre el fichero de sudoers. - + Cannot open groups file for reading. No se puede abrir para leer el fichero groups. - + Cannot create user %1. No se puede crear el usuario %1. - + useradd terminated with error code %1. useradd ha terminado con el código de error %1. - - Cannot set full name for user %1. - No se puede establecer el nombre y los apellidos del usuario %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn ha terminado con el código de error %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. No se puede establecer el propietario del directorio personal del usuario %1. - + chown terminated with error code %1. chown ha terminado con el código de error %1. @@ -793,7 +824,7 @@ El instalador se cerrará y se perderán todos los cambios. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ El instalador se cerrará y se perderán todos los cambios. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ El instalador se cerrará y se perderán todos los cambios. - + + 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 Establecer la información de la partición - + 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>. Instalar el cargador de arranque en <strong>%1</strong> - + Setting up mount points. @@ -930,58 +1025,73 @@ El instalador se cerrará y se perderán todos los cambios. &Reiniciar ahora - + <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. Hecho. %1 ha sido instalado en tu ordenador. Puedes reiniciar el nuevo sistema, o continuar en el modo %2 Live. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatear partición %1 (sistema de ficheros: %2, tamaño: %3 MB) en %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatear la partición <strong>%3MB</strong> <strong>%1</strong> con el sistema de ficheros <strong>%2</strong>. - + Formatting partition %1 with file system %2. - + The installer failed to format partition %1 on disk '%2'. El instalador no ha podido formatear la partición %1 en el disco '%2' - + Could not open device '%1'. No se puede abrir el dispositivo '%1'. - + Could not open partition table. No se puede abrir la tabla de particiones. - + The installer failed to create file system on partition %1. El instalador no ha podido crear el sistema de ficheros en la partición %1. - + The installer failed to update partition table on disk '%1'. El instalador no ha podido actualizar la tabla de particiones en el disco '%1'. @@ -1019,12 +1129,12 @@ El instalador se cerrará y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Establecer el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Establecer la disposición del teclado a %1/%2. @@ -1032,7 +1142,7 @@ El instalador se cerrará y se perderán todos los cambios. KeyboardViewStep - + Keyboard Teclado @@ -1040,15 +1150,25 @@ El instalador se cerrará y se perderán todos los cambios. LCLocaleDialog - + System locale setting Ajustar configuración local - + 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 @@ -1131,41 +1251,52 @@ El instalador se cerrará y se perderán todos los cambios. LocalePage - - - The system locale is set to %1. - Configuración local establecida en %1. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Región: - + Zone: Zona: - + + &Change... &Cambiar - + Set timezone to %1/%2.<br/> Establecer la zona horaria a %1%2. <br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Cargando datos de ubicación... - + Location Ubicación @@ -1219,6 +1350,32 @@ El instalador se cerrará y se perderán todos los cambios. No se puede abrir el dispositivo %1 para deshacer la copia. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ El instalador se cerrará y se perderán todos los cambios. ¿Qué nombre quieres usar para acceder al sistema? - @@ -1341,7 +1497,12 @@ El instalador se cerrará y se perderán todos los cambios. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ El instalador se cerrará y se perderán todos los cambios. Nueva partición - + Name Nombre - + File System Sistema de ficheros - + Mount Point Punto de montaje - + Size Tamaño @@ -1399,32 +1560,32 @@ El instalador se cerrará y se perderán todos los cambios. Deshace&r todos los cambios - + New Partition &Table Nueva &tabla de particiones - + &Create &Crear - + &Edit &Editar - + &Delete Borrar - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? ¿Estás seguro de que quieres crear una nueva tabla de particiones en %1? @@ -1432,90 +1593,100 @@ El instalador se cerrará y se perderán todos los cambios. PartitionViewStep - + Gathering system information... Recogiendo información sobre el sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto con</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> el disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una parición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto con</strong> otro sistema operativo en el disco <strong>%2</strong>(%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una parición en el disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionar <strong>manualmente</strong> el disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ El instalador se cerrará y se perderán todos los cambios. Por defecto - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ El instalador se cerrará y se perderán todos los cambios. - + 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: @@ -1629,55 +1805,60 @@ El instalador se cerrará y se perderán todos los cambios. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ El instalador se cerrará y se perderán todos los cambios. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Establecer el modelo de teclado %1, a una disposición %2-%3 - + Failed to write keyboard configuration for the virtual console. No se ha podido guardar la configuración de la consola virtual. - - + + + Failed to write to %1 No se ha podido escribir en %1 - + Failed to write keyboard configuration for X11. No se ha podido guardar la configuración del teclado de X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ El instalador se cerrará y se perderán todos los cambios. SetPasswordJob - + Set password for user %1 Establecer contraseña del usuario %1 - + Setting password for user %1. - + Bad destination system path. El destino de la ruta del sistema es errónea. - + rootMountPoint is %1 El punto de montaje de root es %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. No se puede establecer la contraseña del usuario %1. - + usermod terminated with error code %1. usermod ha terminado con el código de error %1. @@ -1915,12 +2162,12 @@ El instalador se cerrará y se perderán todos los cambios. No se puede crear el enlace, objetivo: %1; nombre del enlace: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ El instalador se cerrará y se perderán todos los cambios. UsersPage - + Your username is too long. Tu nombre de usuario es demasiado largo. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Tu nombre de usuario contiene caracteres no válidos. Solo se pueden usar letras minúsculas y números. - + Your hostname is too short. El nombre de tu equipo es demasiado corto. - + Your hostname is too long. El nombre de tu equipo es demasiado largo. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Tu nombre de equipo contiene caracteres no válidos Sólo se pueden usar letras, números y guiones. - - + + Your passwords do not match! Tu contraseña no coincide @@ -2016,22 +2263,27 @@ El instalador se cerrará y se perderán todos los cambios. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ El instalador se cerrará y se perderán todos los cambios. WelcomeViewStep - + Welcome diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index 7b58720b1..5b54af656 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -1,52 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Escoja la partición a reducir - - - - Allocate drive space by dragging the divider below: - Asignar el espacio en disco moviendo el separador de debajo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Con esta operación, la partición <strong>%1</strong>, que contiene %4 será reducida a %2MB y una nueva partición de %3MB será creada para %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - No se puede encontrar en el sistema una partición EFI. Por favor vuelva atrás y use el particionamiento manual para configurar %1. - - - - The EFI system partition at %1 will be used for starting %2. - La partición EFI en %1 será usada para iniciar %2. - - - - - EFI system partition: - Partición de sistema EFI: - - 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. @@ -102,7 +68,28 @@ Módulos - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + Herramientas + + + Debug information Información de depuración @@ -201,32 +188,32 @@ Salida: Calamares::PythonJob - + Running %1 operation. Ejecutando operación %1. - + Bad working directory path Ruta a la carpeta de trabajo errónea - + Working directory %1 for python job %2 is not readable. La carpeta de trabajo %1 para la tarea de python %2 no se pudo leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -234,65 +221,91 @@ Salida: Calamares::ViewManager - + &Back &Atrás - + &Next &Siguiente - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + + + + Cancel installation? Cancelar la instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Realmente desea cancelar el proceso de instalación actual? El instalador terminará y se perderán todos los cambios. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Continuar con la instalación? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> El instalador %1 va a realizar cambios en su disco para instalar %2.<br/><strong>No podrá deshacer estos cambios.</strong> - + &Install now &Instalar ahora - + Go &back &Regresar - - &Quit - &Salir + + &Done + - + + The installation is complete. Close the installer. + + + + Error Error - + Installation Failed Instalación Fallida @@ -300,22 +313,22 @@ El instalador terminará y se perderán todos los cambios. CalamaresPython::Helper - + Unknown exception type Excepción desconocida - + unparseable Python error error no analizable Python - + unparseable Python traceback rastreo de Python no analizable - + Unfetchable Python error. Error de Python Unfetchable. @@ -323,12 +336,12 @@ El instalador terminará y se perderán todos los cambios. CalamaresWindow - + %1 Installer %1 Instalador - + Show debug information Mostrar información de depuración @@ -336,12 +349,12 @@ El instalador terminará y se perderán todos los cambios. CheckFileSystemJob - + Checking file system on partition %1. Verificando sistema de archivos en la partición %1. - + The file system check on partition %1 failed. La verificación del sistema de archivos en la partición %1. ha fallado. @@ -349,7 +362,7 @@ El instalador terminará y se perderán todos los cambios. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este equipo no cumple los requisitos mínimos para la instalación. %1.<br/>La instalación no puede continuar. <a href="#details">Detalles...</a> @@ -359,18 +372,18 @@ El instalador terminará y se perderán todos los cambios. Este equipo no cumple alguno de los requisitos recomendados para la instalación %1.<br/>La instalación puede continuar, pero algunas funcionalidades podrían ser deshabilitadas. - + This program will ask you some questions and set up %2 on your computer. El programa le hará algunas preguntas y configurará %2 en su ordenador. - + For best results, please ensure that this computer: Para mejores resultados, por favor verifique que esta computadora: - + System requirements Requisitos de sistema @@ -380,105 +393,112 @@ El instalador terminará y se perderán todos los cambios. Form - + Formulario - + After: - + Después: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Particionado manual </strong><br/> Puede crear o cambiar el tamaño de las particiones usted mismo. - + Boot loader location: - + Ubicación del cargador de arranque: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - + Seleccionar dispositivo de almacenamiento: - - - - + + + + Current: + Actual: + + + + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Seleccione una partición para reducir el tamaño, a continuación, arrastre la barra inferior para redimencinar</strong> - + <strong>Select a partition to install on</strong> - + <strong>Seleccione una partición para instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -486,17 +506,17 @@ El instalador terminará y se perderán todos los cambios. ClearMountsJob - + Clear mounts for partitioning operations on %1 <b>Instalar %1 en una partición existente</b><br/>Podrás elegir que partición borrar. - + Clearing mounts for partitioning operations on %1. Limpiar puntos de montaje para operaciones de particionamiento en %1 - + Cleared all mounts for %1 Todas las unidades desmontadas en %1 @@ -505,22 +525,22 @@ El instalador terminará y se perderán todos los cambios. ClearTempMountsJob - + Clear all temporary mounts. Quitar todos los puntos de montaje temporales. - + Clearing all temporary mounts. Limpiando todos los puntos de montaje temporales. - + Cannot get list of temporary mounts. No se puede obtener la lista de puntos de montaje temporales. - + Cleared all temporary mounts. Se han quitado todos los puntos de montaje temporales. @@ -533,60 +553,70 @@ El instalador terminará y se perderán todos los cambios. Crear partición - + + MiB + + + + Partition &Type: &Tipo de partición: - + &Primary &Primaria - + E&xtended E&xtendida - + Fi&le System: - + Flags: - + &Mount Point: Punto de &montaje: - + Si&ze: &Tamaño: - - MB - MB + + En&crypt + - + Logical Lógica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -690,67 +720,67 @@ El instalador terminará y se perderán todos los cambios. CreateUserJob - + Create user %1 Crear usuario %1 - + Create user <strong>%1</strong>. Crear usuario <strong>%1</strong>. - + Creating user %1. Creando cuenta de susuario %1. - + Sudoers dir is not writable. El directorio "Sudoers" no es editable. - + Cannot create sudoers file for writing. No se puede crear el archivo sudoers para editarlo. - + Cannot chmod sudoers file. No se puede aplicar chmod al archivo sudoers. - + Cannot open groups file for reading. No se puede abrir el archivo groups para lectura. - + Cannot create user %1. No se puede crear el usuario %1. - + useradd terminated with error code %1. useradd ha finalizado con elcódigo de error %1. - - Cannot set full name for user %1. - No se puede aplicar el nombre completo al usuario %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn terminó con un un código de error %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. No se pueden aplicar permisos de propiedad a la carpeta home para el usuario %1. - + chown terminated with error code %1. chown ha finalizado con elcódigo de error %1. @@ -796,7 +826,7 @@ El instalador terminará y se perderán todos los cambios. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -834,6 +864,32 @@ El instalador terminará y se perderán todos los cambios. %1 - %2 (%3) + + 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 @@ -872,50 +928,88 @@ El instalador terminará y se perderán todos los cambios. Tam&año: - + + MiB + + + + Fi&le System: Sis&tema de Archivos: - + 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 Fijar información de la partición. - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 en <strong>nueva</strong> partición de sistema %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurar <strong>nueva</strong> %2 partición con punto de montaje <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 en %3 partición del sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurar %3 partición <strong>%1</strong> con punto de montaje <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar el cargador de arranque en <strong>%1</strong>. - + Setting up mount points. Configurando puntos de montaje. @@ -933,58 +1027,73 @@ El instalador terminará y se perderán todos los cambios. &Reiniciar ahora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Listo.</h1><br/>%1 ha sido instalado en su computadora.<br/>Ahora puede reiniciar su nuevo sistema, o continuar usando el entorno Live %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Terminado + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatear la partición %1 (sistema de archivos: %2, tamaño: %3 MB) en %4 - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatear <strong>%3MB</strong> partición <strong>%1</strong> con sistema de archivos <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formateando partición %1 con sistema de archivos %2. - + The installer failed to format partition %1 on disk '%2'. El instalador no ha podido formatear la partición %1 en el disco '%2' - + Could not open device '%1'. No se puede abrir el dispositivo '%1'. - + Could not open partition table. No se pudo abrir la tabla de particiones. - + The installer failed to create file system on partition %1. El instalador falló al crear el sistema de archivos en la partición %1. - + The installer failed to update partition table on disk '%1'. El instalador falló al actualizar la tabla de partición en el disco '%1'. @@ -1022,12 +1131,12 @@ El instalador terminará y se perderán todos los cambios. KeyboardPage - + Set keyboard model to %1.<br/> Ajustar el modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. Ajustar teclado a %1/%2. @@ -1035,7 +1144,7 @@ El instalador terminará y se perderán todos los cambios. KeyboardViewStep - + Keyboard Teclado @@ -1043,15 +1152,25 @@ El instalador terminará y se perderán todos los cambios. LCLocaleDialog - + System locale setting Configuración de localización del sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. La configuración regional del sistema afecta al idioma y a al conjunto de caracteres para algunos elementos de interfaz de la linea de comandos.<br/>La configuración actual es <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1134,41 +1253,52 @@ El instalador terminará y se perderán todos los cambios. LocalePage - - - The system locale is set to %1. - La localización del sistema está configurada como %1. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Región: - + Zone: Zona: - + + &Change... &Cambiar... - + Set timezone to %1/%2.<br/> Definir la zona horaria como %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Cargando datos de ubicación... - + Location Ubicación @@ -1222,6 +1352,32 @@ El instalador terminará y se perderán todos los cambios. No se puede abrir el dispositivo %1 para deshacer la copia. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1258,7 +1414,6 @@ El instalador terminará y se perderán todos los cambios. ¿Qué nombre desea usar para acceder al sistema? - @@ -1344,7 +1499,12 @@ El instalador terminará y se perderán todos los cambios. - + + New partition + + + + %1 %2 @@ -1364,22 +1524,22 @@ El instalador terminará y se perderán todos los cambios. Partición nueva - + Name Nombre - + File System Sistema de archivos - + Mount Point Punto de montaje - + Size Tamaño @@ -1402,32 +1562,32 @@ El instalador terminará y se perderán todos los cambios. &Deshacer todos los cambios - + New Partition &Table Nueva &tabla de particiones - + &Create &Crear - + &Edit &Editar - + &Delete &Borrar - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? ¿Está seguro de querer crear una nueva tabla de particiones en %1? @@ -1435,90 +1595,100 @@ El instalador terminará y se perderán todos los cambios. PartitionViewStep - + Gathering system information... Obteniendo información del sistema... - + Partitions Particiones - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>junto con</strong> otro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Borrar</strong> el disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Reemplazar</strong> una parición con %1. - + <strong>Manual</strong> partitioning. Particionamiento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>junto con</strong> otro sistema operativo en el disco <strong>%2</strong>(%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Borrar</strong> el disco <strong>%2<strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Reemplazar</strong> una parición en el disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionar <strong>manualmente</strong> el disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1534,20 +1704,25 @@ El instalador terminará y se perderán todos los cambios. Por defecto - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1567,64 +1742,64 @@ El instalador terminará y se perderán todos los cambios. - + 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: @@ -1632,55 +1807,60 @@ El instalador terminará y se perderán todos los cambios. RequirementsChecker - + Gathering system information... Obteniendo información del sistema... - + has at least %1 GB available drive space tiene al menos %1 GB de espacio en disco disponible - + There is not enough drive space. At least %1 GB is required. No hay suficiente espacio disponible en disco. Se requiere al menos %1 GB. - + has at least %1 GB working memory tiene al menos %1 GB de memoria para trabajar - + The system does not have enough working memory. At least %1 GB is required. No hay suficiente espacio disponible en disco. Se requiere al menos %1 GB. - + is plugged in to a power source está conectado a una fuente de energía - + The system is not plugged in to a power source. El sistema no está conectado a una fuente de energía. - + is connected to the Internet está conectado a Internet - + The system is not connected to the Internet. El sistema no está conectado a Internet. - + The installer is not running with administrator rights. El instalador no se está ejecutando con privilegios de administrador. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1775,71 +1955,127 @@ El instalador terminará y se perderán todos los cambios. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Establecer el modelo de teclado %1, a una disposición %2-%3 - + Failed to write keyboard configuration for the virtual console. No se ha podido guardar la configuración de teclado para la consola virtual. - - + + + Failed to write to %1 No se ha podido escribir en %1 - + Failed to write keyboard configuration for X11. No se ha podido guardar la configuración del teclado de X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1860,32 +2096,42 @@ El instalador terminará y se perderán todos los cambios. SetPasswordJob - + Set password for user %1 Definir contraseña para el usuario %1. - + Setting password for user %1. Configurando contraseña para el usuario %1. - + Bad destination system path. Destino erróneo del sistema. - + rootMountPoint is %1 El punto de montaje de root es %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. No se puede definir contraseña para el usuario %1. - + usermod terminated with error code %1. usermod ha terminado con el código de error %1 @@ -1918,12 +2164,12 @@ El instalador terminará y se perderán todos los cambios. Fallo al crear el enlace, destino: %1; nombre del enlace: %2 - + Cannot set timezone, No se puede establer la zona horaria. - + Cannot open /etc/timezone for writing No se puede abrir /etc/timezone para escritura @@ -1947,33 +2193,33 @@ El instalador terminará y se perderán todos los cambios. UsersPage - + Your username is too long. Tu nombre de usuario es demasiado largo. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Tu nombre de usuario contiene caracteres no válidos. Solo se pueden usar letras minúsculas y números. - + Your hostname is too short. El nombre de tu equipo es demasiado corto. - + Your hostname is too long. El nombre de tu equipo es demasiado largo. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Tu nombre de equipo contiene caracteres no válidos Sólo se pueden usar letras, números y guiones. - - + + Your passwords do not match! Las contraseñas no coinciden! @@ -2019,22 +2265,27 @@ El instalador terminará y se perderán todos los cambios. &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenido al instalador de %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Acerca del instalador %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>Derechos reservados 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Gracias a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/>El desarrollo de <a href="http://calamares.io/">Calamares</a> es patrocinado por <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1 Soporte @@ -2042,7 +2293,7 @@ El instalador terminará y se perderán todos los cambios. WelcomeViewStep - + Welcome Bienvenido diff --git a/lang/calamares_es_PR.ts b/lang/calamares_es_PR.ts index e07847653..2c7adab8b 100644 --- a/lang/calamares_es_PR.ts +++ b/lang/calamares_es_PR.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Selecciona la partición a reducir: - - - - Allocate drive space by dragging the divider below: - Asignar el espacio en el disco arrastrando el separador a continuación: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ Módulos - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information Información de depuración @@ -200,32 +188,32 @@ Salida: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path La ruta del directorio de trabajo es incorrecta - + Working directory %1 for python job %2 is not readable. El directorio de trabajo %1 para el script de python %2 no se puede leer. - + Bad main script file Script principal erróneo - + Main script file %1 for python job %2 is not readable. El script principal %1 del proceso python %2 no es accesible. - + Boost.Python error in job "%1". Error Boost.Python en el proceso "%1". @@ -233,64 +221,90 @@ Salida: Calamares::ViewManager - + &Back &Atrás - + &Next &Próximo - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit - &Salir + + &Done + - + + The installation is complete. Close the installer. + + + + Error Error - + Installation Failed Falló la instalación @@ -298,22 +312,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -321,12 +335,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -334,12 +348,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -347,7 +361,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -357,17 +371,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -380,102 +394,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -483,17 +504,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -501,22 +522,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -529,60 +550,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -686,67 +717,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -792,7 +823,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -830,6 +861,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -868,50 +925,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -929,58 +1024,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1018,12 +1128,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1031,7 +1141,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1039,15 +1149,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1130,41 +1250,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1218,6 +1349,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1254,7 +1411,6 @@ The installer will quit and all changes will be lost. - @@ -1340,7 +1496,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1360,22 +1521,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1398,32 +1559,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1431,90 +1592,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1530,20 +1701,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1563,64 +1739,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1628,55 +1804,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1771,71 +1952,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1856,32 +2093,42 @@ The installer will quit and all changes will be lost. 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. @@ -1914,12 +2161,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1943,33 +2190,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2015,22 +2262,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2038,7 +2290,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 77e6456e5..18ac538fa 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error Viga - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. Loo sektsioon - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: Suurus: - - MB + + En&crypt - + Logical Loogiline köide - + Primary Peamine - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_eu.ts b/lang/calamares_eu.ts index 34d9a087d..845f87100 100644 --- a/lang/calamares_eu.ts +++ b/lang/calamares_eu.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Hautatu txikitu nahi duzun partizioa: - - - - Allocate drive space by dragging the divider below: - Disko-espazioa esleitu beheko barra mugituz: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - EFI sistema-partizioa: - - 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. @@ -60,7 +27,7 @@ Boot Partition - + Abio partizioa @@ -70,7 +37,7 @@ Do not install a boot loader - + Ez instalatu abio kargatzailerik @@ -101,7 +68,28 @@ Moduluak - + + Type: + Mota: + + + + + none + + + + + Interface: + + + + + Tools + Tresnak + + + Debug information @@ -127,12 +115,12 @@ Run command %1 %2 - + %1 %2 komandoa abiarazi Running command %1 %2 - + %1 %2 komandoa exekutatzen @@ -198,32 +186,32 @@ Output: Calamares::PythonJob - + Running %1 operation. %1 eragiketa burutzen. - + Bad working directory path Direktorio ibilbide ezegokia - + Working directory %1 for python job %2 is not readable. - + Bad main script file - + Script fitxategi nagusi okerra - + Main script file %1 for python job %2 is not readable. - + %1 script fitxategi nagusia ezin da irakurri python %2 lanerako - + Boost.Python error in job "%1". @@ -231,64 +219,90 @@ Output: Calamares::ViewManager - + &Back &Atzera - + &Next &Hurrengoa - - + + &Cancel &Utzi - + + + Cancel installation without changing the system. + Instalazioa bertan behera utsi da sisteman aldaketarik gabe. + + + Cancel installation? Bertan behera utzi instalazioa? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + &Bai + + + + &No + &Ez + + + + &Close + &Itxi + + + Continue with setup? Ezarpenarekin jarraitu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Instalatu orain - + Go &back &Atzera - - &Quit - &Itxi + + &Done + E&ginda - + + The installation is complete. Close the installer. + Instalazioa burutu da. Itxi instalatzailea. + + + Error Akatsa - + Installation Failed Instalazioak huts egin du @@ -296,22 +310,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -319,12 +333,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 Instalatzailea - + Show debug information @@ -332,12 +346,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. %1 partizioko fitxategi sistema aztertzen - + The file system check on partition %1 failed. %1 partizioko fitxategi sistemaren aztertketak huts egin du. @@ -345,7 +359,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -355,17 +369,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: Emaitza egokienak lortzeko, ziurtatu ordenagailu honek baduela: - + System requirements Sistemaren betebeharrak @@ -378,102 +392,109 @@ The installer will quit and all changes will be lost. - + After: - + Ondoren: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Eskuz partizioak landu</strong><br/>Zure kasa sortu edo tamainaz alda dezakezu partizioak. - + Boot loader location: - + Abio kargatzaile kokapena: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + Unekoa: - + + Reuse %1 as home partition for %2. + Berrerabili %1 home partizio bezala %2rentzat. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + <strong>aukeratu partizioa instalatzeko</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Ezin da inon aurkitu EFI sistemako partiziorik sistema honetan. Mesedez joan atzera eta erabili eskuz partizioak lantzea %1 ezartzeko. - + The EFI system partition at %1 will be used for starting %2. - + %1eko EFI partizio sistema erabiliko da abiarazteko %2. - + EFI system partition: - + EFI sistema-partizioa: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -481,17 +502,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -499,22 +520,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -527,60 +548,70 @@ The installer will quit and all changes will be lost. Sortu partizio bat - + + MiB + + + + Partition &Type: PartizioMo&ta: - + &Primary &Primarioa - + E&xtended &Hedatua - + Fi&le System: - + Flags: - + &Mount Point: &Muntatze Puntua: - + Si&ze: Ta&maina: - - MB - MB + + En&crypt + - + Logical Logikoa - + Primary Primarioa - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -684,67 +715,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Sortu %1 erabiltzailea - + Create user <strong>%1</strong>. - + Creating user %1. %1 erabiltzailea sortzen. - + Sudoers dir is not writable. Ezin da sudoers direktorioan idatzi. - + Cannot create sudoers file for writing. Ezin da sudoers fitxategia sortu bertan idazteko. - + Cannot chmod sudoers file. Ezin zaio chmod egin sudoers fitxategiari. - + Cannot open groups file for reading. Ezin da groups fitxategia ireki berau irakurtzeko. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -790,7 +821,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -828,6 +859,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 @@ -866,50 +923,88 @@ The installer will quit and all changes will be lost. &Tamaina: - + + MiB + + + + Fi&le System: Fi&txategi-Sistema: - + 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 Ezarri partizioaren informazioa - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Ezarri %2 partizio <strong>berria</strong> <strong>%1</strong> muntatze puntuarekin. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Ezarri %3 partizioa <strong>%1</strong> <strong>%2</strong> muntatze puntuarekin. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. Muntatze puntuak ezartzen. @@ -927,58 +1022,73 @@ The installer will quit and all changes will be lost. &Berrabiarazi orain - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Bukatu + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. Ezin izan da partizio taula ireki. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1016,12 +1126,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1029,7 +1139,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Teklatua @@ -1037,15 +1147,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1128,41 +1248,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Eskualdea: - + Zone: Zonaldea: - + + &Change... &Aldatu... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Kokapen datuak kargatzen... - + Location Kokapena @@ -1216,6 +1347,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1252,7 +1409,6 @@ The installer will quit and all changes will be lost. - @@ -1338,7 +1494,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1358,22 +1519,22 @@ The installer will quit and all changes will be lost. Partizio berria - + Name Izena - + File System Fitxategi Sistema - + Mount Point Muntatze Puntua - + Size Tamaina @@ -1396,32 +1557,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table Partizio &Taula berria - + &Create &Sortu - + &Edit &Editatu - + &Delete E&zabatu - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1429,90 +1590,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Sistemaren informazioa eskuratzen... - + Partitions Partizioak - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1528,20 +1699,25 @@ The installer will quit and all changes will be lost. Lehenetsia - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1561,64 +1737,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1626,55 +1802,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... Sistemaren informazioa eskuratzen... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. Sistema ez dago indar iturri batetara konektatuta. - + is connected to the Internet Internetera konektatuta dago - + The system is not connected to the Internet. Sistema ez dago Internetera konektatuta. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1769,71 +1950,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - + + + Failed to write to %1 Ezin izan da %1 partizioan idatzi - + Failed to write keyboard configuration for X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1854,32 +2091,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 Ezarri %1 erabiltzailearen pasahitza - + Setting password for user %1. - + Bad destination system path. - + rootMountPoint is %1 root Muntatze Puntua %1 da - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. - + usermod terminated with error code %1. @@ -1912,12 +2159,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1941,33 +2188,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Zure erabiltzaile-izena luzeegia da. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. Zure ostalari-izena laburregia da. - + Your hostname is too long. Zure ostalari-izena luzeegia da. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Pasahitzak ez datoz bat! @@ -2013,22 +2260,27 @@ The installer will quit and all changes will be lost. Honi &buruz - + <h1>Welcome to the %1 installer.</h1> <h1>Ongi etorri %1 instalatzailera.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer %1 instalatzaileari buruz - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 euskarria @@ -2036,7 +2288,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Ongi etorri diff --git a/lang/calamares_fa.ts b/lang/calamares_fa.ts index e452268eb..35f45b757 100644 --- a/lang/calamares_fa.ts +++ b/lang/calamares_fa.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index 798a35a70..56028b4eb 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Valitse osio jota supistetaan: - - - - Allocate drive space by dragging the divider below: - Jaa aseman tila raahaamalla alla olevaa jakajaa: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -200,32 +188,32 @@ Tuloste: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Epäkelpo työskentelyhakemiston polku - + Working directory %1 for python job %2 is not readable. Työkansio %1 pythonin työlle %2 ei ole luettavissa. - + Bad main script file Huono pää-skripti tiedosto - + Main script file %1 for python job %2 is not readable. Pääskriptitiedosto %1 pythonin työlle %2 ei ole luettavissa. - + Boost.Python error in job "%1". Boost.Python virhe työlle "%1". @@ -233,65 +221,91 @@ Tuloste: Calamares::ViewManager - + &Back &Takaisin - + &Next &Seuraava - - + + &Cancel &Peruuta - + + + Cancel installation without changing the system. + + + + Cancel installation? Peruuta asennus? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Oletko varma että haluat peruuttaa käynnissä olevan asennusprosessin? Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit - &Lopeta + + &Done + - + + The installation is complete. Close the installer. + + + + Error Virhe - + Installation Failed Asennus Epäonnistui @@ -299,22 +313,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CalamaresPython::Helper - + Unknown exception type Tuntematon poikkeustyyppi - + unparseable Python error jäsentämätön Python virhe - + unparseable Python traceback jäsentämätön Python jäljitys - + Unfetchable Python error. Python virhettä ei voitu hakea. @@ -322,12 +336,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CalamaresWindow - + %1 Installer %1 Asennusohjelma - + Show debug information @@ -335,12 +349,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CheckFileSystemJob - + Checking file system on partition %1. Tarkistetaan tiedostojärjestelmän osiota %1. - + The file system check on partition %1 failed. Tiedostojärjestelmän tarkistus osiolla %1 epäonnistui. @@ -348,7 +362,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ClearMountsJob - + Clear mounts for partitioning operations on %1 Poista osiointitoimenpiteitä varten tehdyt liitokset kohteesta %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Kaikki liitokset poistettu kohteesta %1 @@ -502,22 +523,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. ClearTempMountsJob - + Clear all temporary mounts. Poista kaikki väliaikaiset liitokset. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. Poistettu kaikki väliaikaiset liitokset. @@ -530,60 +551,70 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Luo levyosio - + + MiB + + + + Partition &Type: Osion &Tyyppi: - + &Primary &Ensisijainen - + E&xtended &Laajennettu - + Fi&le System: - + Flags: - + &Mount Point: &Liitoskohta: - + Si&ze: K&oko: - - MB - MB + + En&crypt + - + Logical Looginen - + Primary Ensisijainen - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. CreateUserJob - + Create user %1 Luo käyttäjä %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Ei voitu kirjoittaa Sudoers -hakemistoon. - + Cannot create sudoers file for writing. Ei voida luoda sudoers -tiedostoa kirjoitettavaksi. - + Cannot chmod sudoers file. Ei voida tehdä käyttöoikeuden muutosta sudoers -tiedostolle. - + Cannot open groups file for reading. Ei voida avata ryhmätiedostoa luettavaksi. - + Cannot create user %1. Käyttäjää %1 ei voi luoda. - + useradd terminated with error code %1. useradd päättyi virhekoodilla %1. - - Cannot set full name for user %1. - Ei voida asettaa koko nimeä käyttäjälle %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn päättyi virhekoodilla %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Ei voida asettaa kotihakemiston omistusoikeutta käyttäjälle %1. - + chown terminated with error code %1. chown päättyi virhekoodilla %1. @@ -793,7 +824,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + + 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 Aseta osion tiedot - + 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. @@ -930,58 +1025,73 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. &Käynnistä uudelleen - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Kaikki tehty.</h1><br/>%1 on asennettu tietokoneellesi.<br/>Voit joko uudelleenkäynnistää uuteen kokoonpanoosi, tai voit jatkaa %2 live-ympäristön käyttöä. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Alusta osio %1 (tiedostojärjestelmä: %2, koko: %3 MB) levyllä %4 - + Format <strong>%3MB</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'. Levyn '%2' osion %1 alustus epäonnistui. - + Could not open device '%1'. Ei voitu avata laitetta '%1'. - + Could not open partition table. Osiointitaulua ei voitu avata. - + The installer failed to create file system on partition %1. Asennusohjelma on epäonnistunut tiedostojärjestelmän luonnissa osiolle %1. - + The installer failed to update partition table on disk '%1'. Asennusohjelma on epäonnistunut osiointitaulun päivityksessä levylle '%1'. @@ -1019,12 +1129,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. KeyboardPage - + Set keyboard model to %1.<br/> Aseta näppäimiston malli %1.<br/> - + Set keyboard layout to %1/%2. Aseta näppäimiston asetelmaksi %1/%2. @@ -1032,7 +1142,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. KeyboardViewStep - + Keyboard Näppäimistö @@ -1040,15 +1150,25 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LCLocaleDialog - + System locale setting Järjestelmän maa-asetus - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. LocalePage - - - The system locale is set to %1. - Järjestelmän maa-asetus on %1. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Alue: - + Zone: Vyöhyke: - + + &Change... &Vaihda... - + Set timezone to %1/%2.<br/> Aseta aikavyöhyke %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Ladataan sijainnin tietoja... - + Location Sijainti @@ -1219,6 +1350,32 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Laitetta %1 ei voitu avata palautuskopiointia varten. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Mitä nimeä haluat käyttää sisäänkirjautumisessa? - @@ -1341,7 +1497,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Uusi osiointi - + Name Nimi - + File System Tiedostojärjestelmä - + Mount Point Liitoskohta - + Size Koko @@ -1399,32 +1560,32 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. &Peru kaikki muutokset - + New Partition &Table Uusi osiointi&taulukko - + &Create &Luo - + &Edit &Muokkaa - + &Delete &Poista - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Oletko varma, että haluat luoda uuden osion %1? @@ -1432,90 +1593,100 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. PartitionViewStep - + Gathering system information... Kerätään järjestelmän tietoja... - + Partitions Osiot - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Oletus - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + 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: @@ -1629,55 +1805,60 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Aseta näppäimistön malliksi %1, asetelmaksi %2-%3 - + Failed to write keyboard configuration for the virtual console. Virtuaalikonsolin näppäimistöasetuksen tallentaminen epäonnistui. - - + + + Failed to write to %1 Kirjoittaminen epäonnistui kohteeseen %1 - + Failed to write keyboard configuration for X11. X11 näppäimistöasetuksen tallentaminen epäonnistui. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. SetPasswordJob - + Set password for user %1 Aseta salasana käyttäjälle %1 - + Setting password for user %1. - + Bad destination system path. Huono kohteen järjestelmäpolku - + rootMountPoint is %1 rootMountPoint on %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Salasanaa ei voi asettaa käyttäjälle %1. - + usermod terminated with error code %1. usermod päättyi virhekoodilla %1. @@ -1915,12 +2162,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. Linkin luominen kohteeseen %1 epäonnistui; linkin nimi: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. UsersPage - + Your username is too long. Käyttäjänimesi on liian pitkä. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. Isäntänimesi on liian lyhyt. - + Your hostname is too long. Isäntänimesi on liian pitkä. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Isäntänimesi sisältää epäkelpoja merkkejä. Vain kirjaimet, numerot ja väliviivat ovat sallittuja. - - + + Your passwords do not match! Salasanasi eivät täsmää! @@ -2016,22 +2263,27 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat. WelcomeViewStep - + Welcome diff --git a/lang/calamares_fr.ts b/lang/calamares_fr.ts index a65b84e21..d44d8db40 100644 --- a/lang/calamares_fr.ts +++ b/lang/calamares_fr.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Choisir la partition à réduire : - - - - Allocate drive space by dragging the divider below: - Allouer l'espace disque en faisant glisser le séparateur ci-dessous : - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Avec cette opération, la partition <strong>%1</strong> qui contient %4 sera réduite à %2Mo et une nouvelle partition %3 sera créée pour %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Une partition système EFI est introuvable sur ce système. Merci de revenir en arrière et d'utiliser le partitionnement manuel pour configurer %1. - - - - The EFI system partition at %1 will be used for starting %2. - La partition système EFI à %1 sera utilisée pour démarrer %2. - - - - EFI system partition: - Partition système EFI: - - 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. L'<strong>environnement de démarrage</strong> de ce système.<br><br>Les anciens systèmes x86 supportent uniquement le <strong>BIOS</strong>.<br>Les systèmes récents utilisent habituellement <strong>EFI</strong>, mais peuvent également exposer BIOS si démarré en mode de compatibilité. - + 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. Ce système a été initialisé avec un environnement de démarrage <strong>EFI</strong>.<br><br>Pour configurer le démarrage depuis un environnement EFI, cet installateur doit déployer un chargeur de démarrage, comme <strong>GRUB</strong> ou <strong>systemd-boot</strong> sur une <strong>partition système EFI</strong>. Ceci est automatique, à moins que vous n'ayez sélectionné le partitionnement manuel, auquel cas vous devez en choisir une ou la créer vous même. - + 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. Ce système a été initialisé avec un environnement de démarrage <strong>BIOS</strong>.<br><br>Pour configurer le démarrage depuis un environnement BIOS, cet installateur doit déployer un chargeur de démarrage, comme <strong>GRUB</strong> ou <strong>systemd-boot</strong> au début d'une partition ou bien sur le <strong>Master Boot Record</strong> au début de la table des partitions (méthode privilégiée). Ceci est automatique, à moins que vous n'ayez sélectionné le partitionnement manuel, auquel cas vous devez le configurer vous-même. @@ -101,7 +68,28 @@ Modules - + + Type: + Type : + + + + + none + aucun + + + + Interface: + Interface: + + + + Tools + Outils + + + Debug information Informations de dépannage @@ -200,32 +188,32 @@ Sortie : Calamares::PythonJob - + Running %1 operation. Exécution de l'opération %1. - + Bad working directory path Chemin du répertoire de travail invalide - + Working directory %1 for python job %2 is not readable. Le répertoire de travail %1 pour le job python %2 n'est pas accessible en lecture. - + Bad main script file Fichier de script principal invalide - + Main script file %1 for python job %2 is not readable. Le fichier de script principal %1 pour la tâche python %2 n'est pas accessible en lecture. - + Boost.Python error in job "%1". Erreur Boost.Python pour le job "%1". @@ -233,65 +221,91 @@ Sortie : Calamares::ViewManager - + &Back &Précédent - + &Next &Suivant - - + + &Cancel &Annuler - + + + Cancel installation without changing the system. + Annuler l'installation sans modifier votre système. + + + Cancel installation? Abandonner l'installation ? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Voulez-vous réellement abandonner le processus d'installation ? L'installateur se fermera et les changements seront perdus. - + + &Yes + &Oui + + + + &No + &Non + + + + &Close + &Fermer + + + Continue with setup? Poursuivre la configuration ? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> L'installateur %1 est sur le point de procéder aux changements sur le disque afin d'installer %2.<br/> <strong>Vous ne pourrez pas annulez ces changements.<strong> - + &Install now &Installer maintenant - + Go &back &Retour - - &Quit - &Quitter + + &Done + &Terminé - + + The installation is complete. Close the installer. + L'installation est terminée. Fermer l'installateur. + + + Error Erreur - + Installation Failed L'installation a échoué @@ -299,22 +313,22 @@ L'installateur se fermera et les changements seront perdus. CalamaresPython::Helper - + Unknown exception type Type d'exception inconnue - + unparseable Python error Erreur Python non analysable - + unparseable Python traceback Traçage Python non exploitable - + Unfetchable Python error. Erreur Python non rapportable. @@ -322,12 +336,12 @@ L'installateur se fermera et les changements seront perdus. CalamaresWindow - + %1 Installer Installateur %1 - + Show debug information Afficher les informations de dépannage @@ -335,12 +349,12 @@ L'installateur se fermera et les changements seront perdus. CheckFileSystemJob - + Checking file system on partition %1. Vérification du système de fichiers sur la partition %1. - + The file system check on partition %1 failed. La vérification du système de fichiers sur la partition %1 a échoué. @@ -348,7 +362,7 @@ L'installateur se fermera et les changements seront perdus. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Cet ordinateur ne satisfait pas les minimum prérequis pour installer %1.<br/>L'installation ne peut pas continuer. <a href="#details">Détails...</a> @@ -358,17 +372,17 @@ L'installateur se fermera et les changements seront perdus. Cet ordinateur ne satisfait pas certains des prérequis recommandés pour installer %1.<br/>L'installation peut continuer, mais certaines fonctionnalités pourraient être désactivées. - + This program will ask you some questions and set up %2 on your computer. Ce programme va vous poser quelques questions et installer %2 sur votre ordinateur. - + For best results, please ensure that this computer: Pour de meilleur résultats, merci de s'assurer que cet ordinateur : - + System requirements Prérequis système @@ -381,102 +395,109 @@ L'installateur se fermera et les changements seront perdus. Formulaire - + After: Après: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Partitionnement manuel</strong><br/>Vous pouvez créer ou redimensionner vous-même des partitions. - + Boot loader location: Emplacement du chargeur de démarrage: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 va être réduit à %2Mo et une nouvelle partition de %3Mo va être créée pour %4. - + Select storage de&vice: Sélectionnez le support de sto&ckage : - - - - + + + + Current: Actuel : - + + Reuse %1 as home partition for %2. + Réutiliser %1 comme partition home pour %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Sélectionnez une partition à réduire, puis faites glisser la barre du bas pour redimensionner</strong> - + <strong>Select a partition to install on</strong> <strong>Sélectionner une partition pour l'installation</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Une partition système EFI n'a pas pu être trouvée sur ce système. Veuillez retourner à l'étape précédente et sélectionner le partitionnement manuel pour configurer %1. - + The EFI system partition at %1 will be used for starting %2. La partition système EFI sur %1 va être utilisée pour démarrer %2. - + EFI system partition: Partition système EFI : - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage ne semble pas contenir de système d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Effacer le disque</strong><br/>Ceci va <font color="red">effacer</font> toutes les données actuellement présentes sur le périphérique de stockage sélectionné. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage contient %1. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installer à côté</strong><br/>L'installateur va réduire une partition pour faire de la place pour %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Remplacer une partition</strong><br>Remplace une partition par %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce périphérique de stockage contient déjà un système d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ce péiphérique de stockage contient déjà plusieurs systèmes d'exploitation. Que souhaitez-vous faire ?<br/>Vous pourrez relire et confirmer vos choix avant que les modifications soient effectuées sur le périphérique de stockage. @@ -484,17 +505,17 @@ L'installateur se fermera et les changements seront perdus. ClearMountsJob - + Clear mounts for partitioning operations on %1 Retirer les montages pour les opérations de partitionnement sur %1 - + Clearing mounts for partitioning operations on %1. Libération des montages pour les opérations de partitionnement sur %1. - + Cleared all mounts for %1 Tous les montages ont été retirés pour %1 @@ -502,22 +523,22 @@ L'installateur se fermera et les changements seront perdus. ClearTempMountsJob - + Clear all temporary mounts. Supprimer les montages temporaires. - + Clearing all temporary mounts. Libération des montages temporaires. - + Cannot get list of temporary mounts. Impossible de récupérer la liste des montages temporaires. - + Cleared all temporary mounts. Supprimer les montages temporaires. @@ -530,60 +551,70 @@ L'installateur se fermera et les changements seront perdus. Créer une partition - + + MiB + Mio + + + Partition &Type: Type de partition : - + &Primary &Primaire - + E&xtended É&tendue - + Fi&le System: Sy&stème de fichiers: - + Flags: Drapeaux: - + &Mount Point: Point de &Montage : - + Si&ze: Ta&ille : - - MB - Mo + + En&crypt + Chi&ffrer - + Logical Logique - + Primary Primaire - + GPT GPT + + + Mountpoint already in use. Please select another one. + Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. + CreatePartitionJob @@ -687,67 +718,67 @@ L'installateur se fermera et les changements seront perdus. CreateUserJob - + Create user %1 Créer l'utilisateur %1 - + Create user <strong>%1</strong>. Créer l'utilisateur <strong>%1</strong>. - + Creating user %1. Création de l'utilisateur %1. - + Sudoers dir is not writable. Le répertoire Superutilisateur n'est pas inscriptible. - + Cannot create sudoers file for writing. Impossible de créer le fichier sudoers en écriture. - + Cannot chmod sudoers file. Impossible d'exécuter chmod sur le fichier sudoers. - + Cannot open groups file for reading. Impossible d'ouvrir le fichier groups en lecture. - + Cannot create user %1. Impossible de créer l'utilisateur %1. - + useradd terminated with error code %1. useradd s'est terminé avec le code erreur %1. - - Cannot set full name for user %1. - Impossible de renseigner le nom complet pour l'utilisateur %1. + + Cannot add user %1 to groups: %2. + Impossible d'ajouter l'utilisateur %1 au groupe %2. - - chfn terminated with error code %1. - chfn s'est terminé avec le code erreur %1. + + usermod terminated with error code %1. + usermod s'est terminé avec le code erreur %1. - + Cannot set home directory ownership for user %1. Impossible de définir le propriétaire du répertoire home pour l'utilisateur %1. - + chown terminated with error code %1. chown s'est terminé avec le code erreur %1. @@ -793,7 +824,7 @@ L'installateur se fermera et les changements seront perdus. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Le type de <strong>table de partitions</strong> sur le périphérique de stockage sélectionné.<br><br>Le seul moyen de changer le type de table de partitions est d'effacer et de recréer entièrement la table de partitions, ce qui détruit toutes les données sur le périphérique de stockage.<br>Cette installateur va conserver la table de partitions actuelle à moins de faire explicitement un autre choix.<br>Si vous n'êtes pas sûr, sur les systèmes modernes GPT est à privilégier. @@ -831,6 +862,32 @@ L'installateur se fermera et les changements seront perdus. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Inscrire la configuration LUKS pour Dracut sur %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Ne pas enreigstrer la configuration LUKS pour Dracut : la partition "/" n'est pas chiffrée + + + + Failed to open %1 + Impossible d'ouvrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Tâche C++ fictive + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ L'installateur se fermera et les changements seront perdus. Ta&ille: - + + MiB + Mio + + + Fi&le System: Sys&tème de fichiers: - + Flags: Drapeaux: + + + Mountpoint already in use. Please select another one. + Le point de montage est déjà utilisé. Merci d'en sélectionner un autre. + + + + EncryptWidget + + + Form + Formulaire + + + + En&crypt system + Chi&ffrer le système + + + + Passphrase + Phrase de passe + + + + Confirm passphrase + Confirmez la phrase de passe + + + + Please enter the same passphrase in both boxes. + Merci d'entrer la même phrase de passe dans les deux champs. + FillGlobalStorageJob - + Set partition information Configurer les informations de la partition - + Install %1 on <strong>new</strong> %2 system partition. Installer %1 sur le <strong>nouveau</strong> système de partition %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Configurer la <strong>nouvelle</strong> partition %2 avec le point de montage <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installer %2 sur la partition système %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Configurer la partition %3 <strong>%1</strong> avec le point de montage <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installer le chargeur de démarrage sur <strong>%1</strong>. - + Setting up mount points. Configuration des points de montage. @@ -930,58 +1025,73 @@ L'installateur se fermera et les changements seront perdus. &Redémarrer maintenant - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Installation terminée.</h1><br/>%1 a été installé sur votre ordinateur.<br/>Vous pouvez redémarrer sur le nouveau système, ou continuer d'utiliser l'environnement actuel %2 . + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Installation échouée</h1><br/>%1 n'a pas été installée sur cet ordinateur.<br/>Le message d'erreur était : %2. + FinishedViewStep - + Finish Terminer + + + Installation Complete + Installation terminée + + + + The installation of %1 is complete. + L'installation de %1 est terminée. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formater la partition %1 (système de fichier : %2, taille : %3 Mo) sur %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formater la partition <strong>%1</strong> de <strong>%3MB</strong> avec le système de fichiers <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatage de la partition %1 avec le système de fichiers %2. - + The installer failed to format partition %1 on disk '%2'. Le programme d'installation n'a pas pu formater la partition %1 sur le disque '%2'. - + Could not open device '%1'. Impossible d'ouvrir le périphérique '%1'. - + Could not open partition table. Impossible d'ouvrir la table de partitionnement. - + The installer failed to create file system on partition %1. Le programme d'installation n'a pas pu créer le système de fichiers sur la partition %1. - + The installer failed to update partition table on disk '%1'. Le programme d'installation n'a pas pu mettre à jour la table de partitionnement sur le disque '%1'. @@ -1019,12 +1129,12 @@ L'installateur se fermera et les changements seront perdus. KeyboardPage - + Set keyboard model to %1.<br/> Configurer le modèle de clavier à %1.<br/> - + Set keyboard layout to %1/%2. Configurer la disposition clavier à %1/%2. @@ -1032,7 +1142,7 @@ L'installateur se fermera et les changements seront perdus. KeyboardViewStep - + Keyboard Clavier @@ -1040,15 +1150,25 @@ L'installateur se fermera et les changements seront perdus. LCLocaleDialog - + System locale setting Paramètre régional - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Les paramètres régionaux systèmes affectent la langue et le jeu de caractère pour la ligne de commande et différents éléments d'interface.<br/>Le paramètre actuel est <strong>%1</strong>. + + + &Cancel + &Annuler + + + + &OK + &OK + LicensePage @@ -1131,41 +1251,52 @@ L'installateur se fermera et les changements seront perdus. LocalePage - - - The system locale is set to %1. - Les paramètres régionaux du système sont %1. + + The system language will be set to %1. + La langue du système sera réglée sur %1. - + + The numbers and dates locale will be set to %1. + Les nombres et les dates seront réglés sur %1. + + + Region: Région : - + Zone: Zone : - + + &Change... &Modifier... - + Set timezone to %1/%2.<br/> Configurer le fuseau horaire à %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Chargement des données de localisation... - + Location Localisation @@ -1219,6 +1350,32 @@ L'installateur se fermera et les changements seront perdus. Impossible d'ouvrir le périphérique %1 pour annuler la copie. + + NetInstallPage + + + Name + Nom + + + + Description + Description + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Installation par le réseau (Désactivée : impossible de récupérer leslistes de paquets, vérifiez la connexion réseau) + + + + NetInstallViewStep + + + Package selection + Sélection des paquets + + Page_Keyboard @@ -1247,7 +1404,7 @@ L'installateur se fermera et les changements seront perdus. What is your name? - Quel est vote nom ? + Quel est votre nom ? @@ -1255,7 +1412,6 @@ L'installateur se fermera et les changements seront perdus. Quel nom souhaitez-vous utiliser pour la connexion ? - @@ -1341,7 +1497,12 @@ L'installateur se fermera et les changements seront perdus. Nouvelle partition pour %1 - + + New partition + Nouvelle partition + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ L'installateur se fermera et les changements seront perdus. Nouvelle partition - + Name Nom - + File System Système de fichiers - + Mount Point Point de montage - + Size Taille @@ -1399,32 +1560,32 @@ L'installateur se fermera et les changements seront perdus. &Annuler tous les changements - + New Partition &Table Nouvelle &table de partitionnement - + &Create &Créer - + &Edit &Modifier - + &Delete &Supprimer - + Install boot &loader on: Installer le chargeur de démarrage sur: - + Are you sure you want to create a new partition table on %1? Êtes-vous sûr de vouloir créer une nouvelle table de partitionnement sur %1 ? @@ -1432,90 +1593,100 @@ L'installateur se fermera et les changements seront perdus. PartitionViewStep - + Gathering system information... Récupération des informations système… - + Partitions Partitions - + Install %1 <strong>alongside</strong> another operating system. Installer %1 <strong>à côté</strong>d'un autre système d'exploitation. - + <strong>Erase</strong> disk and install %1. <strong>Effacer</strong> le disque et installer %1. - + <strong>Replace</strong> a partition with %1. <strong>Remplacer</strong> une partition avec %1. - + <strong>Manual</strong> partitioning. Partitionnement <strong>manuel</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installer %1 <strong>à côté</strong> d'un autre système d'exploitation sur le disque <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Effacer</strong> le disque <strong>%2</strong> (%3) et installer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Remplacer</strong> une partition sur le disque <strong>%2</strong> (%3) avec %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partitionnement <strong>manuel</strong> sur le disque <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disque <strong>%1</strong> (%2) - + Current: Actuel : - + After: Après : - + No EFI system partition configured Aucune partition système EFI configurée - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Pour configurer une partition système EFI, revenez en arrière et sélectionnez ou créez une partition FAT32 avec le drapeau <strong>esp</strong> activé et le point de montage <strong>%2</strong>.<br/><br/>Vous pouvez continuer sans configurer de partition système EFI mais votre système pourrait refuser de démarrer. - + EFI system partition flag not set Drapeau de partition système EFI non configuré - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Une partition système EFI est nécessaire pour démarrer %1.<br/><br/>Une partition a été configurée avec le point de montage <strong>%2</strong> mais son drapeau <strong>esp</strong> n'est pas activé.<br/>Pour activer le drapeau, revenez en arrière et éditez la partition.<br/><br/>Vous pouvez continuer sans activer le drapeau mais votre système pourrait refuser de démarrer. + + + Boot partition not encrypted + Partition d'amorçage non chiffrée. + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Une partition d'amorçage distincte a été configurée avec une partition racine chiffrée, mais la partition d'amorçage n'est pas chiffrée. <br/> <br/> Il y a des problèmes de sécurité avec ce type d'installation, car des fichiers système importants sont conservés sur une partition non chiffrée <br/> Vous pouvez continuer si vous le souhaitez, mais le déverrouillage du système de fichiers se produira plus tard au démarrage du système. <br/> Pour chiffrer la partition d'amorçage, revenez en arrière et recréez-la, en sélectionnant <strong> Chiffrer </ strong> dans la partition Fenêtre de création. + QObject @@ -1531,20 +1702,25 @@ L'installateur se fermera et les changements seront perdus. Défaut - + unknown inconnu - + extended étendu - + unformatted non formaté + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ L'installateur se fermera et les changements seront perdus. Sélectionnez ou installer %1.<br><font color="red">Attention: </font>ceci va effacer tous les fichiers sur la partition sélectionnée. - + The selected item does not appear to be a valid partition. L'objet sélectionné ne semble pas être une partition valide. - + %1 cannot be installed on empty space. Please select an existing partition. %1 ne peut pas être installé sur un espace vide. Merci de sélectionner une partition existante. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 ne peut pas être installé sur une partition étendue. Merci de sélectionner une partition primaire ou logique existante. - + %1 cannot be installed on this partition. %1 ne peut pas être installé sur cette partition. - + Data partition (%1) Partition de données (%1) - + Unknown system partition (%1) Partition système inconnue (%1) - + %1 system partition (%2) Partition système %1 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>La partition %1 est trop petite pour %2. Merci de sélectionner une partition avec au moins %3 Gio de capacité. - + <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/>Une partition système EFI n'a pas pu être localisée sur ce système. Veuillez revenir en arrière et utiliser le partitionnement manuel pour configurer %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 va être installé sur %2.<br/><font color="red">Attention:</font> toutes les données sur la partition %2 seront perdues. - + The EFI system partition at %1 will be used for starting %2. La partition système EFI sur %1 sera utilisée pour démarrer %2. - + EFI system partition: Partition système EFI: @@ -1629,55 +1805,60 @@ L'installateur se fermera et les changements seront perdus. RequirementsChecker - + Gathering system information... Récupération des informations système... - + has at least %1 GB available drive space a au moins %1 Go d'espace disque disponible - + There is not enough drive space. At least %1 GB is required. Il n'y a pas assez d'espace disque. Au moins %1 Go sont requis. - + has at least %1 GB working memory a au moins %1 Go de mémoire vive - + The system does not have enough working memory. At least %1 GB is required. Le système n'a pas assez de mémoire vive. Au moins %1 Go sont requis. - + is plugged in to a power source est relié à une source de courant - + The system is not plugged in to a power source. Le système n'est pas relié à une source de courant. - + is connected to the Internet est connecté à Internet - + The system is not connected to the Internet. Le système n'est pas connecté à Internet. - + The installer is not running with administrator rights. L'installateur ne dispose pas des droits administrateur. + + + The screen is too small to display the installer. + L'écran est trop petit pour afficher l'installateur. + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ L'installateur se fermera et les changements seront perdus. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurer le modèle de clavier à %1, la disposition des touches à %2-%3 - + Failed to write keyboard configuration for the virtual console. Échec de l'écriture de la configuration clavier pour la console virtuelle. - - + + + Failed to write to %1 Échec de l'écriture sur %1 - + Failed to write keyboard configuration for X11. Échec de l'écriture de la configuration clavier pour X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Impossible d'écrire la configuration du clavier dans le dossier /etc/default existant. + SetPartFlagsJob - + Set flags on partition %1. Configurer les drapeaux sur la partition %1. - + + Set flags on %1MB %2 partition. + Configurer les drapeaux sur la partition %2 de %1Mo. + + + + Set flags on new partition. + Configurer les drapeaux sur la nouvelle partition. + + + Clear flags on partition <strong>%1</strong>. Réinitialisez les drapeaux sur la partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Réinitialisez les drapeaux sur la partition <strong>%2</strong> de %1Mo. + + + + Clear flags on new partition. + Réinitialisez les drapeaux sur la nouvelle partition. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Marquer la partition <strong>%1</strong> comme <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Marquer la partition <strong>%2</strong> de %1Mo comme <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Marquer la nouvelle partition comme <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Réinitialisation des drapeaux pour la partition <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Réinitialisez les drapeaux sur la partition <strong>%2</strong> de %1Mo. + + + + Clearing flags on new partition. + Réinitialisez les drapeaux sur la nouvelle partition. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Configuration des drapeaux <strong>%2</strong> pour la partition <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Configuration des drapeaux <strong>%3</strong> pour la partition <strong>%2</strong> de %1Mo. + + + + Setting flags <strong>%1</strong> on new partition. + Configuration des drapeaux <strong>%1</strong> pour la nouvelle partition. + + + The installer failed to set flags on partition %1. L'installateur n'a pas pu activer les drapeaux sur la partition %1. - + Could not open device '%1'. Impossible d'ouvrir le périphérique '%1'. - + Could not open partition table on device '%1'. Impossible de lire la table de partitions sur le périphérique '%1'. - + Could not find partition '%1'. Impossible de trouver la partition '%1'. @@ -1857,32 +2094,42 @@ L'installateur se fermera et les changements seront perdus. SetPasswordJob - + Set password for user %1 Définir le mot de passe pour l'utilisateur %1 - + Setting password for user %1. Configuration du mot de passe pour l'utilisateur %1. - + Bad destination system path. Mauvaise destination pour le chemin système. - + rootMountPoint is %1 Le point de montage racine est %1 - + + Cannot disable root account. + Impossible de désactiver le compte root. + + + + passwd terminated with error code %1. + passwd c'est arrêté avec le code d'erreur %1. + + + Cannot set password for user %1. Impossible de créer le mot de passe pour l'utilisateur %1. - + usermod terminated with error code %1. usermod s'est terminé avec le code erreur %1. @@ -1915,12 +2162,12 @@ L'installateur se fermera et les changements seront perdus. Création du lien échouée, destination : %1; nom du lien : %2 - + Cannot set timezone, Impossible de définir le fuseau horaire. - + Cannot open /etc/timezone for writing Impossible d'ourvir /etc/timezone pour écriture @@ -1944,33 +2191,33 @@ L'installateur se fermera et les changements seront perdus. UsersPage - + Your username is too long. Votre nom d'utilisateur est trop long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Votre nom d'utilisateur contient des caractères invalides. Seuls les lettres minuscules et les chiffres sont autorisés. - + Your hostname is too short. Le nom d'hôte est trop petit. - + Your hostname is too long. Le nom d'hôte est trop long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Le nom d'hôte contient des caractères invalides. Seules les lettres, nombres et tirets sont autorisés. - - + + Your passwords do not match! Vos mots de passe ne correspondent pas ! @@ -2016,22 +2263,27 @@ L'installateur se fermera et les changements seront perdus. &À propos - + <h1>Welcome to the %1 installer.</h1> <h1>Bienvenue dans l'installateur de %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + Bien dans l'installateur Calamares pour %1. + + + About %1 installer À propos de l'installateur %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>pour %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini et Rohan Garg.<br/><br/>Le développement de <a href="http://calamares.io/">Calamares</a> est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Libérons le logiciel + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>pour %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Merci à : Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg et <a href="https://www.transifex.com/calamares/calamares/">l'équipe de traducteurs de Calamares</a>.<br/><br/>Le développement de <a href="http://calamares.io/">Calamares</a>est sponsorisé par <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Support de %1 @@ -2039,7 +2291,7 @@ L'installateur se fermera et les changements seront perdus. WelcomeViewStep - + Welcome Bienvenue diff --git a/lang/calamares_fr_CH.ts b/lang/calamares_fr_CH.ts index 660d71ada..c13bcf67f 100644 --- a/lang/calamares_fr_CH.ts +++ b/lang/calamares_fr_CH.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_gl.ts b/lang/calamares_gl.ts index 20e1d9971..8e0de1ee5 100644 --- a/lang/calamares_gl.ts +++ b/lang/calamares_gl.ts @@ -1,53 +1,21 @@ - - AlongsidePage - - - Choose partition to shrink: - Escolla a partición a acurtar - - - - Allocate drive space by dragging the divider below: - Reparta o espazo do disco arrastrando o divisor de abaixo - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Mediante esta operación, a partición <strong>%1<\strong> que contén %4 será acurtada a %2MB e unha nova partición de %3MB será creada para %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Non foi posible atopar unha partición de sistema de tipo EFI. Por favor, volva atrás e empregue a opción de particionado manual para crear unha en %1. - - - - The EFI system partition at %1 will be used for starting %2. - A partición EFI do sistema en %1 será usada para iniciar %2. - - - - EFI system partition: - Partición EFI do sistema: - - 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. - + O <strong> entorno de arranque </strong> do sistema. +<br><br> Os sistemas x86 antigos só soportan <strong> BIOS </strong>.<br> Os sistemas modernos empregan normalmente <strong> EFI </strong>, pero tamén poden arrincar como BIOS se funcionan no modo de compatibilidade. - + 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. - + Este sistema arrincou con <strong> EFI </strong> como entorno de arranque.<br><br> Para configurar o arranque dende un entorno EFI, este instalador debe configurar un cargador de arranque, como <strong>GRUB</strong> ou <strong>systemd-boot</strong> nunha <strong> Partición de Sistema EFI</strong>. Este proceso é automático, salvo que escolla particionamento manual. Nese caso deberá escoller unha existente ou crear unha pola súa conta. - + 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. - + Este sistema arrincou con <strong> BIOS </strong> como entorno de arranque.<br><br> Para configurar o arranque dende un entorno BIOS, este instalador debe configurar un cargador de arranque, como <strong>GRUB</strong>, ben ó comezo dunha partición ou no <strong>Master Boot Record</strong> preto do inicio da táboa de particións (recomendado). Este proceso é automático, salvo que escolla particionamento manual, nese caso deberá configuralo pola súa conta. @@ -101,7 +69,28 @@ Módulos - + + Type: + Tipo: + + + + + none + Non + + + + Interface: + Interface + + + + Tools + Ferramentas + + + Debug information Informe de depuración de erros. @@ -200,32 +189,32 @@ Saída: Calamares::PythonJob - + Running %1 operation. Excutando a operación %1. - + Bad working directory path A ruta ó directorio de traballo é errónea - + Working directory %1 for python job %2 is not readable. O directorio de traballo %1 para o traballo de python %2 non é lexible - + Bad main script file Ficheiro de script principal erróneo - + Main script file %1 for python job %2 is not readable. O ficheiro principal de script %1 para a execución de python %2 non é lexible. - + Boost.Python error in job "%1". Boost.Python tivo un erro na tarefa "%1". @@ -233,65 +222,91 @@ Saída: Calamares::ViewManager - + &Back &Atrás - + &Next &Seguinte - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + Cancela-la instalación sen cambia-lo sistema + + + Cancel installation? Cancelar a instalación? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Desexa realmente cancelar o proceso actual de instalación? O instalador pecharase e perderanse todos os cambios. - + + &Yes + &Si + + + + &No + &Non + + + + &Close + &Pechar + + + Continue with setup? Continuar coa posta en marcha? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está a piques de realizar cambios no seu disco para instalar %2.<br/><strong>Estes cambios non poderán desfacerse.</strong> - + &Install now &Instalar agora - + Go &back Ir &atrás - - &Quit - &Saír + + &Done + &Feito - + + The installation is complete. Close the installer. + Completouse a instalacion. Peche o instalador + + + Error Erro - + Installation Failed Erro na instalación @@ -299,22 +314,22 @@ O instalador pecharase e perderanse todos os cambios. CalamaresPython::Helper - + Unknown exception type Excepción descoñecida - + unparseable Python error Erro de Python descoñecido - + unparseable Python traceback O rastreo de Python non é analizable. - + Unfetchable Python error. Erro de Python non recuperable @@ -322,12 +337,12 @@ O instalador pecharase e perderanse todos os cambios. CalamaresWindow - + %1 Installer Instalador de %1 - + Show debug information Mostrar informes de depuración @@ -335,12 +350,12 @@ O instalador pecharase e perderanse todos os cambios. CheckFileSystemJob - + Checking file system on partition %1. Probando o sistema de ficheiros na partición %1 - + The file system check on partition %1 failed. O sistema de ficheiros na partición %1 tivo un erro. @@ -348,7 +363,7 @@ O instalador pecharase e perderanse todos os cambios. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este ordenador non satisfai os requerimentos mínimos ara a instalación de %1.<br/>A instalación non pode continuar. <a href="#details">Máis información...</a> @@ -358,17 +373,17 @@ O instalador pecharase e perderanse todos os cambios. Este ordenador non satisfai algúns dos requisitos recomendados para instalar %1.<br/> A instalación pode continuar, pero pode que algunhas características sexan desactivadas. - + This program will ask you some questions and set up %2 on your computer. Este programa faralle algunhas preguntas mentres prepara %2 no seu ordenador. - + For best results, please ensure that this computer: Para os mellores resultados, por favor, asegúrese que este ordenador: - + System requirements Requisitos do sistema @@ -381,120 +396,127 @@ O instalador pecharase e perderanse todos os cambios. Formulario - + After: Despois: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Particionado manual</strong><br/> Pode crear o redimensionar particións pola súa conta. - + Boot loader location: - + Localización do cargador de arranque: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 será acurtada a %2MB e unha nova partición de %3MB será creada para %4 - + Select storage de&vice: - + Seleccione o dispositivo de almacenamento: - - - - + + + + Current: - + Actual: - + + Reuse %1 as home partition for %2. + Reutilizar %1 como partición home para %2 + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Seleccione unha partición para acurtar, logo empregue a barra para redimensionala</strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>Seleccione unha partición para instalar</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + Non foi posible atopar unha partición de sistema de tipo EFI. Por favor, volva atrás e empregue a opción de particionado manual para crear unha en %1. + + + + The EFI system partition at %1 will be used for starting %2. + A partición EFI do sistema en %1 será usada para iniciar %2. + + + + EFI system partition: + Partición EFI do sistema: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Esta unidade de almacenamento non semella ter un sistema operativo instalado nela. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>Borrar disco</strong><br/>Esto <font color="red">eliminará</font> todos os datos gardados na unidade de almacenamento seleccionada. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + A unidade de almacenamento ten %1 nela. Que desexa facer?<br/>Poderá revisar e confirmar a súa elección antes de que se aplique algún cambio á unidade. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>Instalar a carón</strong><br/>O instalador encollerá a partición para facerlle sitio a %1 + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>Substituír a partición</strong><br/>Substitúe a partición con %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Esta unidade de almacenamento xa ten un sistema operativo instalado nel. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Esta unidade de almacenamento ten múltiples sistemas operativos instalados nela. Que desexa facer?<br/>Poderá revisar e confirmar as súas eleccións antes de que calquera cambio sexa feito na unidade de almacenamento. ClearMountsJob - + Clear mounts for partitioning operations on %1 Desmontar os volumes para levar a cabo as operacións de particionado en %1 - + Clearing mounts for partitioning operations on %1. Desmontando os volumes para levar a cabo as operacións de particionado en %1. - + Cleared all mounts for %1 Os volumes para %1 foron desmontados @@ -502,22 +524,22 @@ O instalador pecharase e perderanse todos os cambios. ClearTempMountsJob - + Clear all temporary mounts. Limpar todas as montaxes temporais. - + Clearing all temporary mounts. Limpando todas as montaxes temporais. - + Cannot get list of temporary mounts. Non se pode obter unha lista dos montaxes temporais. - + Cleared all temporary mounts. Desmontados todos os volumes temporais. @@ -530,60 +552,70 @@ O instalador pecharase e perderanse todos os cambios. Crear partición - + + MiB + MiB + + + Partition &Type: &Tipo de partición: - + &Primary &Primaria - + E&xtended E&xtendida - + Fi&le System: - + Sistema de ficheiros: - + Flags: - + Bandeiras: - + &Mount Point: Punto de &montaxe: - + Si&ze: &Tamaño: - - MB - MB + + En&crypt + Encriptar - + Logical Lóxica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + Punto de montaxe xa en uso. Faga o favor de escoller outro + CreatePartitionJob @@ -666,90 +698,90 @@ O instalador pecharase e perderanse todos os cambios. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Crear unha nova táboa de particións %1 en <strong>%2</strong>(%3) Creating new %1 partition table on %2. - + Creando nova táboa de partición %1 en %2. The installer failed to create a partition table on %1. - + O instalador fallou ó crear a táboa de partición en %1. Could not open device %1. - + Non foi posíbel abrir o dispositivo %1. CreateUserJob - + Create user %1 Crear o usuario %1 - + Create user <strong>%1</strong>. - + Crear usario <strong>%1</strong> - + Creating user %1. Creación do usuario %1. - + Sudoers dir is not writable. - + O directorio sudoers non ten permisos de escritura. - + Cannot create sudoers file for writing. - + Non foi posible crear o arquivo de sudoers. - + Cannot chmod sudoers file. - + Non se puideron cambiar os permisos do arquivo sudoers. - + Cannot open groups file for reading. - + Non foi posible ler o arquivo grupos. - + Cannot create user %1. - + Non foi posible crear o usuario %1. - + useradd terminated with error code %1. - + useradd terminou co código de erro %1. - - Cannot set full name for user %1. - + + Cannot add user %1 to groups: %2. + Non foi posible engadir o usuario %1 ós grupos: %2. - - chfn terminated with error code %1. - + + usermod terminated with error code %1. + usermod terminou co código de erro %1. - + Cannot set home directory ownership for user %1. - + Non foi posible asignar o directorio home como propio para o usuario %1. - + chown terminated with error code %1. - + chown terminou co código de erro %1. @@ -757,32 +789,32 @@ O instalador pecharase e perderanse todos os cambios. Delete partition %1. - + Eliminar partición %1. Delete partition <strong>%1</strong>. - + Eliminar partición <strong>%1</strong>. Deleting partition %1. - + Eliminando partición %1 The installer failed to delete partition %1. - + O instalador fallou ó eliminar a partición %1 Partition (%1) and device (%2) do not match. - + A partición (%1) e o dispositivo (%2) non coinciden Could not open device %1. - + Non foi posíbel abrir o dispositivo %1. @@ -793,34 +825,34 @@ O instalador pecharase e perderanse todos os cambios. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + O tipo de <strong>táboa de partición</strong>no dispositivo de almacenamento escollido.<br><br>O único xeito de cambia-lo tipo de partición é borrar e volver a crear a táboa de partición dende o comenzo, isto destrúe todolos datos no dispositivo de almacenamento. <br> Este instalador manterá a táboa de partición actúal agás que escolla outra cousa explicitamente. <br> Se non está seguro, en sistemas modernos é preferibel GPT. This device has a <strong>%1</strong> partition table. - + O dispositivo ten <strong>%1</strong> una táboa de partición. 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. - + Este é un dispositivo de tipo <strong>loop</strong>. <br><br> É un pseudo-dispositivo que non ten táboa de partición que permita acceder aos ficheiros como un dispositivo de bloques. Este,modo de configuración normalmente so contén un sistema de ficheiros individual. 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. - + Este instalador <strong>non pode detectar unha táboa de partición </strong>no sistema de almacenamento seleccionado. <br><br>O dispositivo non ten táboa de particion ou a táboa de partición está corrompida ou é dun tipo descoñecido.<br>Este instalador poder crear una táboa de partición nova por vóstede, ben automaticamente ou a través de páxina de particionamento a man. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Este é o tipo de táboa de partición recomendada para sistema modernos que empezan dende un sistema de arranque <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Esta táboa de partición so é recomendabel en sistemas vellos que empezan dende un sistema de arranque <strong>BIOS</strong>. GPT é recomendabel na meirande parte dos outros casos.<br><br><strong>Atención:</strong>A táboa de partición MBR é un estándar obsoleto da época do MS-DOS.<br>So pódense crear 4 particións <em>primarias</em>, e desas 4, una pode ser unha partición<em>extensa</em>, que pode conter muitas particións <em>lóxicas</em>. @@ -831,32 +863,58 @@ O instalador pecharase e perderanse todos os cambios. + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Escribila configuración LUKS para Dracut en %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Saltando escribila configuración LUKS para Dracut: A partición "/" non está encriptada + + + + Failed to open %1 + Fallou ao abrir %1 + + + + DummyCppJob + + + Dummy C++ Job + + + EditExistingPartitionDialog Edit Existing Partition - + Editar unha partición existente Content: - + Contido: &Keep - + &Gardar Format - + Formato Warning: Formatting the partition will erase all existing data. - + Atención: Dar formato á partición borrará tódolos datos existentes. @@ -869,52 +927,90 @@ O instalador pecharase e perderanse todos os cambios. &Tamaño: - - Fi&le System: - + + MiB + MiB - + + Fi&le System: + Sistema de Ficheiros: + + + Flags: - + Bandeiras: + + + + Mountpoint already in use. Please select another one. + Punto de montaxe xa en uso. Faga o favor de escoller outro. + + + + EncryptWidget + + + Form + Formulario + + + + En&crypt system + En&criptar sistema + + + + Passphrase + Frase de contrasinal + + + + Confirm passphrase + Confirme a frase de contrasinal + + + + Please enter the same passphrase in both boxes. + Faga o favor de introducila a misma frase de contrasinal námbalas dúas caixas. FillGlobalStorageJob - + Set partition information - + Poñela información da partición - + Install %1 on <strong>new</strong> %2 system partition. - + Instalar %1 nunha <strong>nova</strong> partición do sistema %2 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Configure unha <strong>nova</strong> partición %2 con punto de montaxe <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Instalar %2 na partición do sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Configurala partición %3 <strong>%1</strong> con punto de montaxe <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Instalar o cargador de arranque en <strong>%1</strong>. - + Setting up mount points. - + Configuralos puntos de montaxe. @@ -927,61 +1023,76 @@ O instalador pecharase e perderanse todos os cambios. &Restart now - + &Reiniciar agora. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Todo feito.</h1><br/>%1 foi instalado na súa computadora.<br/>Agora pode reiniciar no seu novo sistema ou continuar a usalo entorno Live %2. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Fallou a instalación</h1><br/>%1 non se pudo instalar na sua computadora. <br/>A mensaxe de erro foi: %2. FinishedViewStep - + Finish - + Fin + + + + Installation Complete + Instalacion completa + + + + The installation of %1 is complete. + Completouse a instalación de %1 FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Formato da partición %1 (sistema de ficheiros: %2, tamaño: %3 MB) en %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formato <strong>%3MB</strong> partición <strong>%1</strong> con sistema de ficheiros <strong>%2</strong>. - + Formatting partition %1 with file system %2. - + Dando formato a %1 con sistema de ficheiros %2. - + The installer failed to format partition %1 on disk '%2'. - + O instalador fallou cando formateaba a partición %1 no disco '%2'. - + Could not open device '%1'. Non se pode abrir o dispositivo '%1'. - + Could not open partition table. Non se pode abrir a táboa de particións. - + The installer failed to create file system on partition %1. O instalador errou ó crear o sistema de arquivos na partición %1. - + The installer failed to update partition table on disk '%1'. O instalador fallou ó actualizar a táboa de particións no disco '%1'. @@ -993,19 +1104,19 @@ O instalador pecharase e perderanse todos os cambios. Konsole not installed - + Konsole non está instalado Please install the kde konsole and try again! - + Faga o favor de instalar konsole (de kde) e probe de novo! Executing script: &nbsp;<code>%1</code> - + Executando o script: &nbsp; <code>%1</code> @@ -1019,35 +1130,45 @@ O instalador pecharase e perderanse todos os cambios. KeyboardPage - + Set keyboard model to %1.<br/> - + Seleccionado modelo de teclado a %1.<br/> - + Set keyboard layout to %1/%2. - + Seleccionada a disposición do teclado a %1/%2. KeyboardViewStep - + Keyboard - + Teclado LCLocaleDialog - + System locale setting - + Configuración da localización - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + A configuración de localización afecta a linguaxe e o conxunto de caracteres dalgúns elementos da interface de usuario de liña de comandos. <br/>A configuración actúal é <strong>%1</strong>. + + + + &Cancel + &Cancelar + + + + &OK + &Ok @@ -1060,33 +1181,33 @@ O instalador pecharase e perderanse todos os cambios. I accept the terms and conditions above. - + Acepto os termos e condicións anteriores. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>Acordo de licencia</h1>Este proceso de configuración instalará programas privativos suxeito a termos de licencia. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se pode seguir co proceso de configuración. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>Acordo de licencia</h1>Este proceso de configuración pode instalar programas privativos suxeito a termos de licencia para fornecer características adicionaís e mellorala experiencia do usuario. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Faga o favor de revisalos Acordos de Licencia de Usuario Final (ALUF) seguintes. <br/>De non estar dacordo cos termos non se instalará o programa privativo e no seu lugar usaranse alternativas de código aberto. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>dispositivo %1</strong><br/>por %2 @@ -1131,41 +1252,52 @@ O instalador pecharase e perderanse todos os cambios. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1219,6 +1351,32 @@ O instalador pecharase e perderanse todos os cambios. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1413,6 @@ O instalador pecharase e perderanse todos os cambios. - @@ -1341,7 +1498,12 @@ O instalador pecharase e perderanse todos os cambios. - + + New partition + + + + %1 %2 @@ -1361,22 +1523,22 @@ O instalador pecharase e perderanse todos os cambios. - + Name - + File System - + Mount Point - + Size @@ -1399,32 +1561,32 @@ O instalador pecharase e perderanse todos os cambios. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1432,90 +1594,100 @@ O instalador pecharase e perderanse todos os cambios. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1703,25 @@ O instalador pecharase e perderanse todos os cambios. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1741,64 @@ O instalador pecharase e perderanse todos os cambios. - + 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: @@ -1629,55 +1806,60 @@ O instalador pecharase e perderanse todos os cambios. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1954,127 @@ O instalador pecharase e perderanse todos os cambios. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Configurar modelo de teclado a %1, distribución a %2-%3 - + Failed to write keyboard configuration for the virtual console. Houbo un fallo ao escribir a configuración do teclado para a consola virtual. - - + + + Failed to write to %1 Non pode escribir en %1 - + Failed to write keyboard configuration for X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2095,42 @@ O instalador pecharase e perderanse todos os cambios. 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. @@ -1915,12 +2163,12 @@ O instalador pecharase e perderanse todos os cambios. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2192,33 @@ O instalador pecharase e perderanse todos os cambios. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2016,22 +2264,27 @@ O instalador pecharase e perderanse todos os cambios. &Acerca de - + <h1>Welcome to the %1 installer.</h1> <h1>Benvido o instalador %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Acerca do instalador %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 axuda @@ -2039,7 +2292,7 @@ O instalador pecharase e perderanse todos os cambios. WelcomeViewStep - + Welcome Benvido diff --git a/lang/calamares_gu.ts b/lang/calamares_gu.ts index a17c80d76..bcd5e8198 100644 --- a/lang/calamares_gu.ts +++ b/lang/calamares_gu.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts new file mode 100644 index 000000000..331444e27 --- /dev/null +++ b/lang/calamares_he.ts @@ -0,0 +1,2299 @@ + + + BootInfoWidget + + + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. + <strong>תצורת האתחול</strong> של מערכת זו. <br><br> מערכות x86 ישנות יותר תומכות אך ורק ב <strong>BIOS</strong>.<br> מערכות חדשות משתמשות בדרך כלל ב <strong>EFI</strong>, אך יכולות להיות מוצגות כ BIOS במידה והן מופעלות במצב תאימות לאחור. + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + מערכת זו הופעלה בתצורת אתחול <strong>EFI</strong>.<br><br> בכדי להגדיר הפעלה מתצורת אתחול EFI, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong> או <strong>systemd-boot</strong> על <strong>מחיצת מערכת EFI</strong>. פעולה זו היא אוטומטית, אלא אם כן תבחר להגדיר מחיצות באופן ידני, במקרה זה עליך לבחור זאת או להגדיר בעצמך. + + + + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. + מערכת זו הופעלה בתצורת אתחול <strong>BIOS</strong>.<br><br> בכדי להגדיר הפעלה מתצורת אתחול BIOS, על אשף ההתקנה להתקין מנהל אתחול מערכת, לדוגמה <strong>GRUB</strong>, בתחלית מחיצה או על ה <strong>Master Boot Record</strong> בצמוד להתחלה של טבלת המחיצות (מועדף). פעולה זו היא אוטומטית, אלא אם כן תבחר להגדיר מחיצות באופן ידני, במקרה זה עליך להגדיר זאת בעצמך. + + + + BootLoaderModel + + + Master Boot Record of %1 + Master Boot Record של %1 + + + + Boot Partition + מחיצת טעינת המערכת Boot + + + + System Partition + מחיצת מערכת + + + + Do not install a boot loader + אל תתקין מנהל אתחול מערכת, boot loader + + + + %1 (%2) + %1 (%2) + + + + Calamares::DebugWindow + + + Form + Form + + + + GlobalStorage + אחסון גלובלי + + + + JobQueue + JobQueue + + + + Modules + מודולים + + + + Type: + סוג: + + + + + none + ללא + + + + Interface: + ממשק: + + + + Tools + כלים + + + + Debug information + מידע על ניפוי שגיאות + + + + Calamares::ExecutionViewStep + + + Install + התקן + + + + Calamares::JobThread + + + Done + בוצע + + + + Calamares::ProcessJob + + + Run command %1 %2 + הרץ פקודה %1 %2 + + + + Running command %1 %2 + מריץ פקודה %1 %2 + + + + External command crashed + פקודה חיצונית קרסה + + + + Command %1 crashed. +Output: +%2 + פקודה %1 קרסה. +פלט: +%2 + + + + External command failed to start + הרצת פקודה חיצונית כשלה + + + + Command %1 failed to start. + הרצת פקודה %1 כשלה. + + + + Internal error when starting command + שגיאה פנימית בעת התחלת הרצת הפקודה + + + + Bad parameters for process job call. + פרמטרים לא תקינים עבור קריאת עיבוד פעולה. + + + + External command failed to finish + הרצת פקודה חיצונית לא הצליחה להסתיים + + + + Command %1 failed to finish in %2s. +Output: +%3 + פקודה %1 לא הצליחה להסתיים ב %2 שניות. +פלט: +%3 + + + + External command finished with errors + פקודה חיצונית הסתיימה עם שגיאות + + + + Command %1 finished with exit code %2. +Output: +%3 + פקודה %1 הסתיימה עם קוד יציאה %2. +פלט: +%3 + + + + Calamares::PythonJob + + + Running %1 operation. + מריץ פעולה %1. + + + + Bad working directory path + נתיב תיקיית עבודה לא תקין + + + + Working directory %1 for python job %2 is not readable. + תיקיית עבודה %1 עבור משימת python %2 לא קריאה. + + + + Bad main script file + קובץ תסריט הרצה ראשי לא תקין + + + + Main script file %1 for python job %2 is not readable. + קובץ תסריט הרצה ראשי %1 עבור משימת python %2 לא קריא. + + + + Boost.Python error in job "%1". + שגיאת Boost.Python במשימה "%1". + + + + Calamares::ViewManager + + + &Back + &קודם + + + + &Next + &הבא + + + + + &Cancel + &בטל + + + + + Cancel installation without changing the system. + בטל התקנה ללא ביצוע שינוי במערכת. + + + + Cancel installation? + בטל את ההתקנה? + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + האם אתה בטוח שברצונך לבטל את תהליך ההתקנה? +אשף ההתקנה ייסגר וכל השינויים יאבדו. + + + + &Yes + &כן + + + + &No + &לא + + + + &Close + &סגור + + + + Continue with setup? + המשך עם הליך ההתקנה? + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + אשף ההתקנה של %1 הולך לבצע שינויים בכונן שלך לטובת התקנת %2.<br/><strong>לא תוכל לבטל את השינויים הללו.</strong> + + + + &Install now + &התקן כעת + + + + Go &back + &אחורה + + + + &Done + &בוצע + + + + The installation is complete. Close the installer. + תהליך ההתקנה הושלם. אנא סגור את אשף ההתקנה. + + + + Error + שגיאה + + + + Installation Failed + ההתקנה נכשלה + + + + CalamaresPython::Helper + + + Unknown exception type + טיפוס חריגה אינו מוכר + + + + unparseable Python error + שגיאת Python לא ניתנת לניתוח + + + + unparseable Python traceback + עקבה לאחור של Python לא ניתנת לניתוח + + + + Unfetchable Python error. + שגיאת Python לא ניתנת לאחזור. + + + + CalamaresWindow + + + %1 Installer + אשף התקנה של %1 + + + + Show debug information + הצג מידע על ניפוי שגיאות + + + + CheckFileSystemJob + + + Checking file system on partition %1. + בודק את מערכת הקבצים על מחיצה %1. + + + + The file system check on partition %1 failed. + בדיקת מערכת הקבצים על מחיצה %1 נכשלה. + + + + CheckerWidget + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + המחשב לא עומד ברף דרישות המינימום להתקנת %1. <br/>ההתקנה לא יכולה להמשיך. <a href="#details"> פרטים...</a> + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + המחשב לא עומד בחלק מרף דרישות המינימום להתקנת %1.<br/> ההתקנה יכולה להמשיך, אך חלק מהתכונות יכולות להיות מבוטלות. + + + + This program will ask you some questions and set up %2 on your computer. + אשף התקנה זה נכתב בלשון זכר אך מיועד לשני המינים. תוכנה זו תשאל אותך מספר שאלות ותגדיר את %2 על המחשב שלך. + + + + For best results, please ensure that this computer: + לקבלת התוצאות הטובות ביותר, אנא וודא כי מחשב זה: + + + + System requirements + דרישות מערכת + + + + ChoicePage + + + Form + Form + + + + After: + לאחר: + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + <strong>הגדרת מחיצות באופן ידני</strong><br/>תוכל ליצור או לשנות את גודל המחיצות בעצמך. + + + + Boot loader location: + מיקום מנהל אתחול המערכת: + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + %1 תוקטן ל %2 MB ומחיצה חדשה בגודל %3 MB תיווצר עבור %4. + + + + Select storage de&vice: + בחר ה&תקן אחסון: + + + + + + + Current: + נוכחי: + + + + Reuse %1 as home partition for %2. + השתמש ב %1 כמחיצת הבית, home, עבור %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + <strong>בחר מחיצה לכיווץ, לאחר מכן גרור את הסרגל התחתון בכדי לשנות את גודלה</strong> + + + + <strong>Select a partition to install on</strong> + <strong>בחר מחיצה בכדי לבצע את ההתקנה עליה</strong> + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + מחיצת מערכת EFI לא נמצאה במערכת. אנא חזור והשתמש ביצירת מחיצות באופן ידני בכדי להגדיר את %1. + + + + The EFI system partition at %1 will be used for starting %2. + מחיצת מערכת EFI ב %1 תשמש עבור טעינת %2. + + + + EFI system partition: + מחיצת מערכת EFI: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + לא נמצאה מערכת הפעלה על התקן אחסון זה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>מחק כונן</strong><br/> פעולה זו <font color="red">תמחק</font> את כל המידע השמור על התקן האחסון הנבחר. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + נמצא %1 על התקן אחסון זה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>התקן לצד</strong><br/> אשף ההתקנה יכווץ מחיצה בכדי לפנות מקום עבור %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>החלף מחיצה</strong><br/> מבצע החלפה של המחיצה עם %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + מערכת הפעלה קיימת על התקן האחסון הזה. מה ברצונך לעשות?<br/> תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + מערכות הפעלה מרובות קיימות על התקן אחסון זה. מה ברצונך לעשות? <br/>תוכל לסקור ולאשר את בחירתך לפני ששינויים יתבצעו על התקן האחסון. + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + מחק נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. + + + + Clearing mounts for partitioning operations on %1. + מבצע מחיקה של נקודות עיגון עבור ביצוע פעולות של הגדרות מחיצה על %1. + + + + Cleared all mounts for %1 + בוצעה מחיקה עבור כל נקודות העיגון על %1. + + + + ClearTempMountsJob + + + Clear all temporary mounts. + מחק את כל נקודות העיגון הזמניות. + + + + Clearing all temporary mounts. + מבצע מחיקה של כל נקודות העיגון הזמניות. + + + + Cannot get list of temporary mounts. + לא ניתן לשלוף רשימה של כל נקודות העיגון הזמניות. + + + + Cleared all temporary mounts. + בוצעה מחיקה של כל נקודות העיגון הזמניות. + + + + CreatePartitionDialog + + + Create a Partition + צור מחיצה + + + + MiB + MiB + + + + Partition &Type: + &סוג מחיצה: + + + + &Primary + &ראשי + + + + E&xtended + מ&ורחב + + + + Fi&le System: + מ&ערכת קבצים + + + + Flags: + סימונים: + + + + &Mount Point: + נקודת &עיגון: + + + + Si&ze: + גו&דל: + + + + En&crypt + ה&צפן + + + + Logical + לוגי + + + + Primary + ראשי + + + + GPT + GPT + + + + Mountpoint already in use. Please select another one. + נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + צור מחיצה חדשה בגודל %2 MB על %4 (%3) עם מערכת קבצים %1. + + + + Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + צור מחיצה חדשה בגודל <strong>%2 MB</strong> על <strong>%4</strong> (%3) עם מערכת קבצים <strong>%1</strong>. + + + + Creating new %1 partition on %2. + מגדיר מחיצה %1 חדשה על %2. + + + + The installer failed to create partition on disk '%1'. + אשף ההתקנה נכשל ביצירת מחיצה על כונן '%1'. + + + + Could not open device '%1'. + לא ניתן לפתוח את התקן '%1'. + + + + Could not open partition table. + לא ניתן לפתוח את טבלת המחיצות. + + + + The installer failed to create file system on partition %1. + אשף ההתקנה נכשל בעת יצירת מערכת הקבצים על מחיצה %1. + + + + The installer failed to update partition table on disk '%1'. + אשף ההתקנה נכשל בעת עדכון טבלת המחיצות על כונן '%1'. + + + + CreatePartitionTableDialog + + + Create Partition Table + צור טבלת מחיצות + + + + Creating a new partition table will delete all existing data on the disk. + יצירת טבלת מחיצות חדשה תמחק את כל המידע הקיים על הכונן. + + + + What kind of partition table do you want to create? + איזה סוג של טבלת מחיצות ברצונך ליצור? + + + + Master Boot Record (MBR) + Master Boot Record (MBR) + + + + GUID Partition Table (GPT) + GUID Partition Table (GPT) + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + צור טבלת מחיצות %1 חדשה על %2. + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + צור טבלת מחיצות <strong>%1</strong> חדשה על <strong>%2</strong> (%3). + + + + Creating new %1 partition table on %2. + יוצר טבלת מחיצות %1 חדשה על %2. + + + + The installer failed to create a partition table on %1. + אשף ההתקנה נכשל בעת יצירת טבלת המחיצות על %1. + + + + Could not open device %1. + לא ניתן לפתוח את התקן %1. + + + + CreateUserJob + + + Create user %1 + צור משתמש %1 + + + + Create user <strong>%1</strong>. + צור משתמש <strong>%1</strong>. + + + + Creating user %1. + יוצר משתמש %1. + + + + Sudoers dir is not writable. + תיקיית מנהלי המערכת לא ניתנת לכתיבה. + + + + Cannot create sudoers file for writing. + לא ניתן ליצור את קובץ מנהלי המערכת לכתיבה. + + + + Cannot chmod sudoers file. + לא ניתן לשנות את מאפייני קובץ מנהלי המערכת. + + + + Cannot open groups file for reading. + לא ניתן לפתוח את קובץ הקבוצות לקריאה. + + + + Cannot create user %1. + לא ניתן ליצור משתמש %1. + + + + useradd terminated with error code %1. + פקודת יצירת המשתמש, useradd, נכשלה עם קוד יציאה %1. + + + + Cannot add user %1 to groups: %2. + לא ניתן להוסיף את המשתמש %1 לקבוצות: %2. + + + + usermod terminated with error code %1. + פקודת שינוי מאפייני המשתמש, usermod, נכשלה עם קוד יציאה %1. + + + + Cannot set home directory ownership for user %1. + לא ניתן להגדיר בעלות על תיקיית הבית עבור משתמש %1. + + + + chown terminated with error code %1. + פקודת שינוי בעלות, chown, נכשלה עם קוד יציאה %1. + + + + DeletePartitionJob + + + Delete partition %1. + מחק את מחיצה %1. + + + + Delete partition <strong>%1</strong>. + מחק את מחיצה <strong>%1</strong>. + + + + Deleting partition %1. + מבצע מחיקה של מחיצה %1. + + + + The installer failed to delete partition %1. + אשף ההתקנה נכשל בעת מחיקת מחיצה %1. + + + + Partition (%1) and device (%2) do not match. + מחיצה (%1) והתקן (%2) לא תואמים. + + + + Could not open device %1. + לא ניתן לפתוח את התקן %1. + + + + Could not open partition table. + לא ניתן לפתוח את טבלת המחיצות. + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + סוג <strong>טבלת המחיצות</strong> על התקן האחסון הנבחר.<br><br> הדרך היחידה לשנות את סוג טבלת המחיצות היא למחוק וליצור מחדש את טבלת המחיצות, אשר דורסת את כל המידע הקיים על התקן האחסון.<br> אשף ההתקנה ישמור את טבלת המחיצות הקיימת אלא אם כן תבחר אחרת במפורש.<br> במידה ואינך בטוח, במערכות מודרניות, GPT הוא הסוג המועדף. + + + + This device has a <strong>%1</strong> partition table. + על התקן זה קיימת טבלת מחיצות <strong>%1</strong>. + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + זהו התקן מסוג <strong>loop</strong>.<br><br> זהו התקן מדמה ללא טבלת מחיצות אשר מאפשר גישה לקובץ כהתקן בלוק. תצורה מסוג זה בדרך כלל תכיל מערכת קבצים יחידה. + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + אשף ההתקנה <strong>אינו יכול לזהות את טבלת המחיצות</strong> על התקן האחסון הנבחר.<br><br> ההתקן הנבחר לא מכיל טבלת מחיצות, או שטבלת המחיצות הקיימת הושחתה או שסוג הטבלה אינו מוכר.<br> אשף התקנה זה יכול ליצור טבלת מחיצות חדשה עבורך אוטומטית או בדף הגדרת מחיצות באופן ידני. + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + <br><br> זהו סוג טבלת מחיצות מועדף במערכות מודרניות, אשר מאותחלות ממחיצת טעינת מערכת <strong>EFI</strong>. + + + + <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. + <br><br>סוג זה של טבלת מחיצות מומלץ לשימוש על מערכות ישנות אשר מאותחלות מסביבת טעינה <strong>BIOS</strong>. ברוב המקרים האחרים, GPT מומלץ לשימוש.<br><br><strong>אזהרה:</strong> תקן טבלת המחיצות של MBR מיושן מתקופת MS-DOS.<br> ניתן ליצור אך ורק 4 מחיצות <em>ראשיות</em>, מתוכן, אחת יכולה להיות מוגדרת כמחיצה <em>מורחבת</em>, אשר יכולה להכיל מחיצות <em>לוגיות</em>. + + + + DeviceModel + + + %1 - %2 (%3) + %1 - %2 (%3) + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + רשום הגדרות הצפנה LUKS עבור Dracut אל %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + דלג רישום הגדרות הצפנה LUKS עבור Dracut: מחיצת "/" לא תוצפן. + + + + Failed to open %1 + נכשלה פתיחת %1. + + + + DummyCppJob + + + Dummy C++ Job + משימת דמה של C++ + + + + EditExistingPartitionDialog + + + Edit Existing Partition + ערוך מחיצה קיימת + + + + Content: + תכולה: + + + + &Keep + &השאר + + + + Format + אתחול + + + + Warning: Formatting the partition will erase all existing data. + אזהרה: אתחול המחיצה ימחק את כל המידע הקיים. + + + + &Mount Point: + &נקודת עיגון: + + + + Si&ze: + גו&דל: + + + + MiB + MiB + + + + Fi&le System: + מ&ערכת קבצים: + + + + Flags: + סימונים: + + + + Mountpoint already in use. Please select another one. + נקודת העיגון בשימוש. אנא בחר נקודת עיגון אחרת. + + + + EncryptWidget + + + Form + Form + + + + En&crypt system + ה&צפן את המערכת + + + + Passphrase + ביטוי אבטחה + + + + Confirm passphrase + אשר ביטוי אבטחה + + + + Please enter the same passphrase in both boxes. + אנא הכנס ביטוי אבטחה זהה בשני התאים. + + + + FillGlobalStorageJob + + + Set partition information + הגדר מידע עבור המחיצה + + + + Install %1 on <strong>new</strong> %2 system partition. + התקן %1 על מחיצת מערכת %2 <strong>חדשה</strong>. + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + הגדר מחיצת מערכת %2 <strong>חדשה</strong>בעלת נקודת עיגון <strong>%1</strong>. + + + + Install %2 on %3 system partition <strong>%1</strong>. + התקן %2 על מחיצת מערכת %3 <strong>%1</strong>. + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + התקן מחיצה %3 <strong>%1</strong> עם נקודת עיגון <strong>%2</strong>. + + + + Install boot loader on <strong>%1</strong>. + התקן מנהל אתחול מערכת על <strong>%1</strong>. + + + + Setting up mount points. + מגדיר נקודות עיגון. + + + + FinishedPage + + + Form + Form + + + + &Restart now + &אתחל כעת + + + + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + <h1>תהליך ההתקנה הסתיים.</h1><br/>%1 הותקן על המחשב שלך.<br/> כעת ניתן לאתחל את המחשב אל תוך המערכת החדשה שהותקנה, או להמשיך להשתמש בסביבה הנוכחית של %2. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>ההתקנה נכשלה</h1><br/>%1 לא הותקן על מחשבך.<br/> הודעת השגיאה: %2. + + + + FinishedViewStep + + + Finish + סיום + + + + Installation Complete + ההתקנה הושלמה + + + + The installation of %1 is complete. + ההתקנה של %1 הושלמה. + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + אתחל מחיצה %1 (מערכת קבצים: %2, גודל: %3 MB) על %4. + + + + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + אתחול מחיצה <strong>%1</strong> בגודל <strong>%3 MB</strong> עם מערכת קבצים <strong>%2</strong>. + + + + Formatting partition %1 with file system %2. + מאתחל מחיצה %1 עם מערכת קבצים %2. + + + + The installer failed to format partition %1 on disk '%2'. + אשף ההתקנה נכשל בעת אתחול המחיצה %1 על כונן '%2'. + + + + Could not open device '%1'. + לא ניתן לפתוח את התקן '%1'. + + + + Could not open partition table. + לא ניתן לפתוח את טבלת המחיצות. + + + + The installer failed to create file system on partition %1. + אשף ההתקנה נכשל בעת יצירת מערכת הקבצים על מחיצה %1. + + + + The installer failed to update partition table on disk '%1'. + אשף ההתקנה נכשל בעת עדכון טבלת המחיצות על כונן '%1'. + + + + InteractiveTerminalPage + + + + + Konsole not installed + Konsole לא מותקן. + + + + + + Please install the kde konsole and try again! + אנא התקן את kde konsole ונסה שוב! + + + + Executing script: &nbsp;<code>%1</code> + מריץ תסריט הרצה: &nbsp; <code>%1</code> + + + + InteractiveTerminalViewStep + + + Script + תסריט הרצה + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + הגדר את דגם המקלדת ל %1.<br/> + + + + Set keyboard layout to %1/%2. + הגדר את פריסת לוח המקשים ל %1/%2. + + + + KeyboardViewStep + + + Keyboard + מקלדת + + + + LCLocaleDialog + + + System locale setting + הגדרות מיקום המערכת + + + + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + הגדרת מיקום המערכת משפיעה על השפה וקידוד התווים של חלק מרכיבי ממשקי שורת פקודה למשתמש. <br/> ההגדרה הנוכחית היא <strong>%1</strong>. + + + + &Cancel + &ביטול + + + + &OK + &אישור + + + + LicensePage + + + Form + Form + + + + I accept the terms and conditions above. + אני מאשר את התנאים וההתניות מעלה. + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + <h1>הסכם רישיון</h1>אשף התקנה זה יבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון. + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + אנא סקור את הסכם משתמש הקצה (EULA) מעלה.<br/> במידה ואינך מסכים עם התנאים, תהליך ההתקנה יופסק. + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + <h1>הסכם רישיון</h1>אשף התקנה זה יכול לבצע התקנה של תוכנות קנייניות אשר כפופות לתנאי רישיון בכדי לספק תכולות נוספות ולשדרג את חווית המשתמש. + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + אנא סקור את הסכם משתמש הקצה (EULA) מעלה.<br/> במידה ואינך מסכים עם התנאים, תוכנות קנייניות לא יותקנו, ותוכנות חליפיות מבוססות קוד פתוח יותקנו במקומן. + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + <strong>התקן %1</strong><br/> מאת %2 + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + <strong>התקן תצוגה %1</strong><br/><font color="Grey"> מאת %2</font> + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + <strong>תוסף לדפדפן %1</strong><br/><font color="Grey"> מאת %2</font> + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + <strong>קידוד %1</strong><br/><font color="Grey"> מאת %2</font> + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + <strong>חבילה %1</strong><br/><font color="Grey"> מאת %2</font> + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + <strong>%1</strong><br/><font color="Grey">מאת %2</font> + + + + <a href="%1">view license agreement</a> + <a href="%1">צפה בהסכם הרשיון</a> + + + + LicenseViewStep + + + License + רשיון + + + + LocalePage + + + The system language will be set to %1. + שפת המערכת תוגדר להיות %1. + + + + The numbers and dates locale will be set to %1. + תבנית של המספרים והתאריכים של המיקום יוגדרו להיות %1. + + + + Region: + איזור: + + + + Zone: + מיקום: + + + + + &Change... + &החלף... + + + + Set timezone to %1/%2.<br/> + הגדרת אזור זמן ל %1/%2.<br/> + + + + %1 (%2) + Language (Country) + %1 (%2) + + + + LocaleViewStep + + + Loading location data... + טוען נתונים על המיקום... + + + + Location + מיקום + + + + MoveFileSystemJob + + + Move file system of partition %1. + העבר את מערכת הקבצים של מחיצה %1. + + + + Could not open file system on partition %1 for moving. + פתיחת מערכת הקבצים במחיצה %1 לטובת ההעברה נכשלה. + + + + Could not create target for moving file system on partition %1. + לא ניתן ליצור יעד עבור העברת מערכת הקבצים במחיצה %1. + + + + Moving of partition %1 failed, changes have been rolled back. + העברה של מחיצה %1 נכשלה, מבטל שינויים. + + + + Moving of partition %1 failed. Roll back of the changes have failed. + העברה של מחיצה %1 נכשלה, ביטול השינויים נכשל. + + + + Updating boot sector after the moving of partition %1 failed. + מעדכן את מקטע האתחול לאחר כשלון העברת מחיצה %1. + + + + The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. + הגדלים הלוגיים של מקטעי המקור והיעד להעתקה אינם זהים. הנ"ל לא נתמך בגרסה זו. + + + + Source and target for copying do not overlap: Rollback is not required. + המקור והיעד להעתקה לא חופפים: ביטול שינויים לא נדרש. + + + + + Could not open device %1 to rollback copying. + פתיחת התקן %1 בכדי לבצע העתקה למצב הקודם נכשלה. + + + + NetInstallPage + + + Name + שם + + + + Description + תיאור + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + התקנת רשת. (מנוטרלת: לא ניתן לאחזר רשימות של חבילות תוכנה, אנא בדוק את חיבורי הרשת) + + + + NetInstallViewStep + + + Package selection + בחירת חבילות + + + + Page_Keyboard + + + Form + Form + + + + Keyboard Model: + דגם מקלדת: + + + + Type here to test your keyboard + הקלד כאן בכדי לבדוק את המקלדת שלך + + + + Page_UserSetup + + + Form + Form + + + + What is your name? + מהו שמך? + + + + What name do you want to use to log in? + באיזה שם ברצונך להשתמש בעת כניסה למחשב? + + + + + + font-weight: normal + משקל-גופן: נורמלי + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + <small>במידה ויותר מאדם אחד ישתמש במחשב זה, תוכל להגדיר משתמשים נוספים לאחר ההתקנה.</small> + + + + Choose a password to keep your account safe. + בחר סיסמה בכדי להגן על חשבונך. + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + <small>הכנס את אותה הסיסמה פעמיים, בכדי שניתן יהיה לבדוק שגיאות הקלדה. סיסמה טובה אמורה להכיל שילוב של אותיות, מספרים וסימני פיסוק, להיות באורך שמונה תווים לפחות, ועליה להשתנות במרווחי זמן קבועים.</small> + + + + What is the name of this computer? + מהו שם מחשב זה? + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + <small>שם זה יהיה בשימוש במידה ומחשב זה יוגדר להיות נראה על ידי עמדות אחרות ברשת.</small> + + + + Log in automatically without asking for the password. + התחבר באופן אוטומטי מבלי לבקש סיסמה. + + + + Use the same password for the administrator account. + השתמש באותה הסיסמה עבור חשבון המנהל. + + + + Choose a password for the administrator account. + בחר סיסמה עבור חשבון המנהל. + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + <small>הכנס את אותה הסיסמה פעמיים, בכדי שניתן יהיה לבדוק שגיאות הקלדה.</small> + + + + PartitionLabelsView + + + Root + מערכת הפעלה Root + + + + Home + בית Home + + + + Boot + טעינה Boot + + + + EFI system + מערכת EFI + + + + Swap + דפדוף, Swap + + + + New partition for %1 + מחיצה חדשה עבור %1 + + + + New partition + מחיצה חדשה + + + + %1 %2 + %1 %2 + + + + PartitionModel + + + + Free Space + זכרון פנוי + + + + + New partition + מחיצה חדשה + + + + Name + שם + + + + File System + מערכת קבצים + + + + Mount Point + נקודת עיגון + + + + Size + גודל + + + + PartitionPage + + + Form + Form + + + + Storage de&vice: + &התקן זכרון: + + + + &Revert All Changes + &בטל את כל השינויים + + + + New Partition &Table + &טבלת מחיצות חדשה + + + + &Create + &צור + + + + &Edit + &ערוך + + + + &Delete + &מחק + + + + Install boot &loader on: + התקן &מנהל אתחול מערכת על: + + + + Are you sure you want to create a new partition table on %1? + האם אתה בטוח שברצונך ליצור טבלת מחיצות חדשה על %1? + + + + PartitionViewStep + + + Gathering system information... + מלקט מידע אודות המערכת... + + + + Partitions + מחיצות + + + + Install %1 <strong>alongside</strong> another operating system. + התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת. + + + + <strong>Erase</strong> disk and install %1. + <strong>מחק</strong> את הכונן והתקן את %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>החלף</strong> מחיצה עם %1. + + + + <strong>Manual</strong> partitioning. + מגדיר מחיצות באופן <strong>ידני</strong>. + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + התקן את %1 <strong>לצד</strong> מערכת הפעלה אחרת על כונן <strong>%2</strong> (%3). + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + <strong>מחק</strong> כונן <strong>%2</strong> (%3) והתקן %1. + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + <strong>החלף</strong> מחיצה על כונן <strong>%2</strong> (%3) עם %1. + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + מגדיר מחיצות באופן <strong>ידני</strong> על כונן <strong>%1</strong>(%2). + + + + Disk <strong>%1</strong> (%2) + כונן <strong>%1</strong> (%2) + + + + Current: + נוכחי: + + + + After: + לאחר: + + + + No EFI system partition configured + לא הוגדרה מחיצת מערכת EFI + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + מחיצת מערכת EFI נדרשת בשביל להפעיל את %1.<br/><br/> בכדי להגדיר מחיצת מערכת EFI, חזור ובחר או צור מערכת קבצים מסוג FAT32 עם סימון <strong>esp</strong> מופעל ונקודת עיגון <strong>%2</strong>.<br/><br/> ניתן להמשיך ללא הגדרת מחיצת מערכת EFI אך המערכת יכולה להיכשל בטעינה. + + + + EFI system partition flag not set + סימון מחיצת מערכת EFI לא מוגדר + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + מחיצת מערכת EFI נדרשת להפעלת %1.<br/><br/> מחיצה הוגדרה עם נקודת עיגון <strong>%2</strong> אך סימון <strong>esp</strong> לא הוגדר.<br/> בכדי לסמן את המחיצה, חזור וערוך את המחיצה.<br/><br/> תוכל להמשיך ללא ביצוע הסימון אך המערכת יכולה להיכשל בטעינה. + + + + Boot partition not encrypted + מחיצת טעינת המערכת Boot לא מוצפנת. + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + מחיצת טעינה, boot, נפרדת הוגדרה יחד עם מחיצת מערכת ההפעלה, root, מוצפנת, אך מחיצת הטעינה לא הוצפנה.<br/><br/> ישנן השלכות בטיחותיות עם התצורה שהוגדרה, מכיוון שקבצי מערכת חשובים נשמרים על מחיצה לא מוצפנת.<br/>תוכל להמשיך אם תרצה, אך שחרור מערכת הקבצים יתרחש מאוחר יותר כחלק מטעינת המערכת.<br/>בכדי להצפין את מחיצת הטעינה, חזור וצור אותה מחדש, על ידי בחירה ב <strong>הצפן</strong> בחלונית יצירת המחיצה. + + + + QObject + + + Default Keyboard Model + ברירת מחדל של דגם המקלדת + + + + + Default + ברירת מחדל + + + + unknown + לא מוכר/ת + + + + extended + מורחב/ת + + + + unformatted + לא מאותחל/ת + + + + swap + דפדוף, swap + + + + Unpartitioned space or unknown partition table + הזכרון לא מחולק למחיצות או טבלת מחיצות לא מוכרת + + + + ReplaceWidget + + + Form + Form + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + בחר מיקום התקנת %1.<br/><font color="red">אזהרה: </font> הפעולה תמחק את כל הקבצים במחיצה שנבחרה. + + + + The selected item does not appear to be a valid partition. + הפריט הנבחר איננו מחיצה תקינה. + + + + %1 cannot be installed on empty space. Please select an existing partition. + לא ניתן להתקין את %1 על זכרון ריק. אנא בחר מחיצה קיימת. + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + לא ניתן להתקין את %1 על מחיצה מורחבת. אנא בחר מחיצה ראשית או לוגית קיימת. + + + + %1 cannot be installed on this partition. + לא ניתן להתקין את %1 על מחיצה זו. + + + + Data partition (%1) + מחיצת מידע (%1) + + + + Unknown system partition (%1) + מחיצת מערכת (%1) לא מוכרת + + + + %1 system partition (%2) + %1 מחיצת מערכת (%2) + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + <strong>%4</strong><br/><br/> גודל המחיצה %1 קטן מדי עבור %2. אנא בחר מחיצה עם קיבולת בנפח %3 GiB לפחות. + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + <strong>%2</strong><br/><br/> מחיצת מערכת EFI לא נמצאה באף מקום על המערכת. חזור בבקשה והשתמש ביצירת מחיצות באופן ידני בכדי להגדיר את %1. + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + <strong>%3</strong><br/><br/>%1 יותקן על %2. <br/><font color="red">אזהרה: </font>כל המידע אשר קיים במחיצה %2 יאבד. + + + + The EFI system partition at %1 will be used for starting %2. + מחיצת מערכת EFI ב %1 תשמש עבור טעינת %2. + + + + EFI system partition: + מחיצת מערכת EFI: + + + + RequirementsChecker + + + Gathering system information... + מלקט מידע אודות המערכת... + + + + has at least %1 GB available drive space + קיים לפחות %1 GB של נפח אחסון + + + + There is not enough drive space. At least %1 GB is required. + נפח האחסון לא מספק. נדרש לפחות %1 GB. + + + + has at least %1 GB working memory + קיים לפחות %1 GB של זכרון פעולה + + + + The system does not have enough working memory. At least %1 GB is required. + כמות הזכרון הנדרשת לפעולה, לא מספיקה. נדרש לפחות %1 GB. + + + + is plugged in to a power source + מחובר לספק חשמל חיצוני + + + + The system is not plugged in to a power source. + המערכת לא מחוברת לספק חשמל חיצוני. + + + + is connected to the Internet + מחובר לאינטרנט + + + + The system is not connected to the Internet. + המערכת לא מחוברת לאינטרנט. + + + + The installer is not running with administrator rights. + אשף ההתקנה לא רץ עם הרשאות מנהל. + + + + The screen is too small to display the installer. + גודל המסך קטן מדי בכדי להציג את מנהל ההתקנה. + + + + ResizeFileSystemJob + + + Resize file system on partition %1. + שנה את גודל מערכת הקבצים במחיצה %1. + + + + Parted failed to resize filesystem. + Parted נכשלה לשנות את גודל מערכת הקבצים. + + + + Failed to resize filesystem. + שינוי גודל מערכת הקבצים נכשלה. + + + + ResizePartitionJob + + + Resize partition %1. + שנה גודל מחיצה %1. + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + משנה את מחיצה <strong>%1</strong> מגודל <strong>%2 MB</strong> ל <strong>%3 MB</strong>. + + + + Resizing %2MB partition %1 to %3MB. + משנה את מחיצה %1 מ %2 MB ל %3 MB. + + + + + The installer failed to resize partition %1 on disk '%2'. + תהליך ההתקנה נכשל בשינוי גודל המחיצה %1 על כונן '%2'. + + + + Could not open device '%1'. + נכשלה פתיחת התקן '%1'. + + + + ScanningDialog + + + Scanning storage devices... + סורק התקני זכרון... + + + + Partitioning + מגדיר מחיצות + + + + SetHostNameJob + + + Set hostname %1 + הגדר שם עמדה %1 + + + + Set hostname <strong>%1</strong>. + הגדר שם עמדה <strong>%1</strong>. + + + + Setting hostname %1. + מגדיר את שם העמדה %1. + + + + + Internal Error + שגיאה פנימית + + + + + Cannot write hostname to target system + נכשלה כתיבת שם העמדה למערכת המטרה + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + הגדר דגם מקלדת ל %1, פריסת לוח מקשים ל %2-%3 + + + + Failed to write keyboard configuration for the virtual console. + נכשלה כתיבת הגדרת מקלדת למסוף הוירטואלי. + + + + + + Failed to write to %1 + נכשלה כתיבה ל %1 + + + + Failed to write keyboard configuration for X11. + נכשלה כתיבת הגדרת מקלדת עבור X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + נכשלה כתיבת הגדרת מקלדת לתיקיה קיימת /etc/default. + + + + SetPartFlagsJob + + + Set flags on partition %1. + הגדר סימונים על מחיצה %1. + + + + Set flags on %1MB %2 partition. + הגדר סימונים על מחיצה %2 בגודל %1 MB. + + + + Set flags on new partition. + הגדר סימונים על מחיצה חדשה. + + + + Clear flags on partition <strong>%1</strong>. + מחק סימונים על מחיצה <strong>%1</strong>. + + + + Clear flags on %1MB <strong>%2</strong> partition. + מחק סימונים על מחיצה <strong>%2</strong> בגודל %1 MB. + + + + Clear flags on new partition. + מחק סימונים על המחיצה החדשה. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + סמן מחיצה <strong>%1</strong> כ <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + סמן מחיצה <strong>%2</strong> בגודל %1 MB כ <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + סמן מחיצה חדשה כ <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + מוחק סימונים על מחיצה <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + מוחק סימונים על מחיצה <strong>%2</strong> בגודל %1 MB. + + + + Clearing flags on new partition. + מוחק סימונים על מחיצה חדשה. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + מגדיר סימונים <strong>%2</strong> על מחיצה <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + מגדיר סימונים <strong>%3</strong> על מחיצה <strong>%2</strong> בגודל %1 MB. + + + + Setting flags <strong>%1</strong> on new partition. + מגדיר סימונים <strong>%1</strong> על מחיצה חדשה. + + + + The installer failed to set flags on partition %1. + תהליך ההתקנה נכשל בעת הצבת סימונים במחיצה %1. + + + + Could not open device '%1'. + פתיחת כונן '%1' נכשלה. + + + + Could not open partition table on device '%1'. + פתיחת טבלת מחיצות על כונן '%1' נכשלה. + + + + Could not find partition '%1'. + לא נמצאה מחיצה '%1'. + + + + SetPartGeometryJob + + + Update geometry of partition %1. + עדכן גאומטריית מחיצה %1. + + + + Failed to change the geometry of the partition. + נכשל שינוי גאומטריית המחיצה. + + + + SetPasswordJob + + + Set password for user %1 + הגדר סיסמה עבור משתמש %1 + + + + Setting password for user %1. + מגדיר סיסמה עבור משתמש %1. + + + + Bad destination system path. + יעד נתיב המערכת לא תקין. + + + + rootMountPoint is %1 + עיגון מחיצת מערכת ההפעלה, rootMountPoint, היא %1 + + + + Cannot disable root account. + לא ניתן לנטרל את חשבון המנהל root. + + + + passwd terminated with error code %1. + passwd הסתיימה עם שגיאת קוד %1. + + + + Cannot set password for user %1. + לא ניתן להגדיר סיסמה עבור משתמש %1. + + + + usermod terminated with error code %1. + פקודת שינוי מאפייני המשתמש, usermod, נכשלה עם קוד יציאה %1. + + + + SetTimezoneJob + + + Set timezone to %1/%2 + הגדרת אזור זמן ל %1/%2 + + + + Cannot access selected timezone path. + לא ניתן לגשת לנתיב של אזור הזמן הנבחר. + + + + Bad path: %1 + נתיב לא תקין: %1 + + + + Cannot set timezone. + לא ניתן להגדיר את אזור הזמן. + + + + Link creation failed, target: %1; link name: %2 + נכשלה יצירת קיצור דרך, מיקום: %1; שם קיצור הדרך: %2 + + + + Cannot set timezone, + לא ניתן להגדיר את אזור הזמן, + + + + Cannot open /etc/timezone for writing + לא ניתן לפתוח את /etc/timezone לכתיבה + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + להלן סקירת המאורעות שיתרחשו עם תחילת תהליך ההתקנה. + + + + SummaryViewStep + + + Summary + סיכום + + + + UsersPage + + + Your username is too long. + שם המשתמש ארוך מדי. + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + שם העמדה מכיל ערכים לא תקינים. ניתן להשתמש אך ורק באותיות קטנות ומספרים. + + + + Your hostname is too short. + שם העמדה קצר מדי. + + + + Your hostname is too long. + שם העמדה ארוך מדי. + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + שם העמדה מכיל ערכים לא תקינים. אך ורק אותיות, מספרים ומקפים מורשים. + + + + + Your passwords do not match! + הסיסמאות לא תואמות! + + + + UsersViewStep + + + Users + משתמשים + + + + WelcomePage + + + Form + Form + + + + &Language: + &שפה: + + + + &Release notes + &הערות הפצה + + + + &Known issues + &בעיות נפוצות + + + + &Support + &תמיכה + + + + &About + &אודות + + + + <h1>Welcome to the %1 installer.</h1> + <h1>ברוכים הבאים להתקנת %1.</h1> + + + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>ברוכים הבאים להתקנת Calamares עבור %1.</h1> + + + + About %1 installer + אודות התקנת %1 + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>עבור %3</strong><br/><br/>זכויות יוצרים 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>זכויות יוצרים 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>תודות ל: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ול<a href="https://www.transifex.com/calamares/calamares/">צוות התרגום של Calamares</a>.<br/><br/>פיתוח <a href="http://calamares.io/">Calamares</a> בחסות <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - משחררים תוכנה. + + + + %1 support + תמיכה ב - %1 + + + + WelcomeViewStep + + + Welcome + ברוכים הבאים + + + \ No newline at end of file diff --git a/lang/calamares_hi.ts b/lang/calamares_hi.ts index 8569c6942..4aac00ddc 100644 --- a/lang/calamares_hi.ts +++ b/lang/calamares_hi.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - संकुचन हेतु विभाजन चुनें - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index 0fcc09d64..6d40a25d4 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Odaberi particiju za smanjenje: - - - - Allocate drive space by dragging the divider below: - Dodijeli prostor za disk povlačeći pregradu koja se nalazi ispod: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Boot okruženje</strong> sustava.<br><br>Stariji x86 sustavi jedino podržavaju <strong>BIOS</strong>.<br>Noviji sustavi uglavnom koriste <strong>EFI</strong>, ali mogu podržavati i BIOS ako su pokrenuti u načinu kompatibilnosti. - + 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. - + Ovaj sustav koristi <strong>EFI</strong> okruženje.<br><br>Za konfiguriranje pokretanja iz EFI okruženja, ovaj instalacijski program mora uvesti boot učitavač, kao što je <strong>GRUB</strong> ili <strong>systemd-boot</strong> na <strong>EFI particiju</strong>. To se odvija automatski, osim ako ste odabrali ručno particioniranje. U tom slučaju to ćete morati odabrati ili stvoriti sami. - + 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. - + Ovaj sustav koristi <strong>BIOS</strong> okruženje.<br><br>Za konfiguriranje pokretanja iz BIOS okruženja, ovaj instalacijski program mora uvesti boot učitavač, kao što je <strong>GRUB</strong>, ili na početku particije ili na <strong>Master Boot Record</strong> blizu početka particijske tablice (preporučen način). To se odvija automatski, osim ako ste odabrali ručno particioniranje. U tom slučaju to ćete morati napraviti sami. @@ -55,12 +22,12 @@ Master Boot Record of %1 - + Master Boot Record od %1 Boot Partition - Particija podizanja sustava + Boot particija @@ -70,12 +37,12 @@ Do not install a boot loader - + Nemoj instalirati boot učitavač %1 (%2) - + %1 (%2) @@ -83,27 +50,48 @@ Form - + Oblik GlobalStorage - + GlobalStorage JobQueue - + JobQueue Modules - + Moduli - + + Type: + Tip: + + + + + none + nijedan + + + + Interface: + Sučelje: + + + + Tools + Alati + + + Debug information - + Debug informacija @@ -111,7 +99,7 @@ Install - + Instaliraj @@ -119,7 +107,7 @@ Done - Završeno + Gotovo @@ -127,12 +115,12 @@ Run command %1 %2 - + Izvrši naredbu %1 %2 Running command %1 %2 - + Izvršavam naredbu %1 %2 @@ -156,7 +144,7 @@ Izlaz: Command %1 failed to start. - Naredba %1 nije uspješno pokrenuta + Naredba %1 nije uspješno pokrenuta. @@ -200,32 +188,32 @@ Izlaz: Calamares::PythonJob - + Running %1 operation. - + Izvodim %1 operaciju. - + Bad working directory path Krivi put do radnog direktorija - + Working directory %1 for python job %2 is not readable. Radni direktorij %1 za python zadatak %2 nije čitljiv. - + Bad main script file Kriva glavna datoteka skripte - + Main script file %1 for python job %2 is not readable. Glavna skriptna datoteka %1 za python zadatak %2 nije čitljiva. - + Boost.Python error in job "%1". Boost.Python greška u zadatku "%1". @@ -233,143 +221,170 @@ Izlaz: Calamares::ViewManager - + &Back &Natrag - + &Next &Sljedeće - - + + &Cancel - + &Odustani - + + + Cancel installation without changing the system. + Odustanite od instalacije bez promjena na sustavu. + + + Cancel installation? - + Prekinuti instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + Stvarno želite prekinuti instalacijski proces? +Instalacijski program će izaći i sve promjene će biti izgubljene. - + + &Yes + &Da + + + + &No + &Ne + + + + &Close + &Zatvori + + + Continue with setup? - + Nastaviti s postavljanjem? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + %1 instalacijski program će napraviti promjene na disku kako bi instalirao %2.<br/><strong>Nećete moći vratiti te promjene.</strong> - + &Install now - + &Instaliraj sada - + Go &back - + Idi &natrag - - &Quit - &Izlaz + + &Done + &Gotovo - + + The installation is complete. Close the installer. + Instalacija je završena. Zatvorite instalacijski program. + + + Error Greška - + Installation Failed Instalacija nije uspjela CalamaresPython::Helper - - - Unknown exception type - Nepoznati tip odstupanja - - - - unparseable Python error - - - unparseable Python traceback - + Unknown exception type + Nepoznati tip iznimke - + + unparseable Python error + unparseable Python greška + + + + unparseable Python traceback + unparseable Python traceback + + + Unfetchable Python error. - + Nedohvatljiva Python greška. CalamaresWindow - + %1 Installer %1 Instalacijski program - + Show debug information - + Prikaži debug informaciju CheckFileSystemJob - + Checking file system on partition %1. - Provjera datotečnog sustava na particiji %1 + Provjera datotečnog sustava na particiji %1. - + The file system check on partition %1 failed. - Provjera datotečnog sustava na particiji %1 nije uspjela + Provjera datotečnog sustava na particiji %1 nije uspjela. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Ovo računalo ne zadovoljava minimalne uvijete za instalaciju %1.<br/>Instalacija se ne može nastaviti.<a href="#details">Detalji...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + Računalo ne zadovoljava neke od preporučenih uvjeta za instalaciju %1.<br/>Instalacija se može nastaviti, ali neke značajke možda neće biti dostupne. - + This program will ask you some questions and set up %2 on your computer. - + Ovaj program će vam postaviti neka pitanja i instalirati %2 na vaše računalo. - + For best results, please ensure that this computer: - + Za najbolje rezultate, pobrinite se da ovo računalo: - + System requirements - + Zahtjevi sustava @@ -377,148 +392,155 @@ The installer will quit and all changes will be lost. Form - + Oblik - + After: - + Poslije: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Ručno particioniranje</strong><br/>Možete sami stvoriti ili promijeniti veličine particija. - + Boot loader location: - + Lokacija boot učitavača: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 će se smanjiti na %2MB i stvorit će se nova %3MB particija za %4. - + Select storage de&vice: - + Odaberi uređaj za spremanje: - - - - + + + + Current: - + Trenutni: - + + Reuse %1 as home partition for %2. + Koristi %1 kao home particiju za %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Odaberite particiju za smanjivanje, te povlačenjem donjeg pokazivača odaberite promjenu veličine</strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>Odaberite particiju za instalaciju</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + EFI particija ne postoji na ovom sustavu. Vratite se natrag i koristite ručno particioniranje da bi ste postavili %1. + + + + The EFI system partition at %1 will be used for starting %2. + EFI particija na %1 će se koristiti za pokretanje %2. + + + + EFI system partition: + EFI particija: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Izgleda da na ovom disku nema operacijskog sustava. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>Obriši disk</strong><br/>To će <font color="red">obrisati</font> sve podatke na odabranom disku. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Ovaj disk ima %1. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>Instaliraj uz postojeće</strong><br/>Instalacijski program će smanjiti particiju da bi napravio mjesto za %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>Zamijeni particiju</strong><br/>Zamijenjuje particiju sa %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Ovaj disk već ima operacijski sustav. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Ovaj disk ima više operacijskih sustava. Što želite učiniti?<br/>Moći ćete provjeriti i potvrditi vaš odabir prije bilo kakvih promjena na disku. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Ukloni montiranja za operacije s particijama na %1 - + Clearing mounts for partitioning operations on %1. - + Uklanjam montiranja za operacija s particijama na %1. - + Cleared all mounts for %1 - + Uklonjena sva montiranja za %1 ClearTempMountsJob - + Clear all temporary mounts. - + Ukloni sva privremena montiranja. - + Clearing all temporary mounts. - + Uklanjam sva privremena montiranja. - + Cannot get list of temporary mounts. - + Ne mogu dohvatiti popis privremenih montiranja. - + Cleared all temporary mounts. - + Uklonjena sva privremena montiranja. @@ -529,77 +551,87 @@ The installer will quit and all changes will be lost. Stvori particiju - - Partition &Type: - Particija i tip: + + MiB + MiB - + + Partition &Type: + Tip &particije: + + + &Primary &Primarno - + E&xtended P&roduženo - + Fi&le System: - + Da&totečni sustav: - + Flags: - + Oznake: - + &Mount Point: - + &Točke montiranja: - + Si&ze: Ve&ličina: - - MB - MB + + En&crypt + Ši&friraj - + Logical Logično - + Primary Primarno - + GPT GPT + + + Mountpoint already in use. Please select another one. + Točka montiranja se već koristi. Odaberite drugu. + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - + Stvori novu %2MB particiju na %4 (%3) s datotečnim sustavom %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Stvori novu <strong>%2MB</strong> particiju na <strong>%4</strong> (%3) s datotečnim sustavom <strong>%1</strong>. Creating new %1 partition on %2. - + Stvaram novu %1 particiju na %2. @@ -642,7 +674,7 @@ The installer will quit and all changes will be lost. What kind of partition table do you want to create? - Kakvu vrstu particijske tablice želite stvoriti? + Koju vrstu particijske tablice želite stvoriti? @@ -660,17 +692,17 @@ The installer will quit and all changes will be lost. Create new %1 partition table on %2. - + Stvori novu %1 particijsku tablicu na %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Stvori novu <strong>%1</strong> particijsku tablicu na <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + Stvaram novu %1 particijsku tablicu na %2. @@ -686,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Stvori korisnika %1 - + Create user <strong>%1</strong>. - + Stvori korisnika <strong>%1</strong>. - + Creating user %1. - + Stvaram korisnika %1. - + Sudoers dir is not writable. Po sudoers direktoriju nije moguće spremati. - + Cannot create sudoers file for writing. Ne mogu stvoriti sudoers datoteku za pisanje. - + Cannot chmod sudoers file. Ne mogu chmod sudoers datoteku. - + Cannot open groups file for reading. Ne mogu otvoriti groups datoteku za čitanje. - + Cannot create user %1. Ne mogu stvoriti korisnika %1. - + useradd terminated with error code %1. useradd je prestao s radom sa greškom koda %1. - - Cannot set full name for user %1. - Ne mogu postaviti puno ime za korisnika %1. + + Cannot add user %1 to groups: %2. + Ne mogu dodati korisnika %1 u grupe: %2. - - chfn terminated with error code %1. - chfn je prestao s radom sa greškom koda %1. + + usermod terminated with error code %1. + korisnički mod je prekinut s greškom %1. - + Cannot set home directory ownership for user %1. Ne mogu postaviti vlasništvo radnog direktorija za korisnika %1. - + chown terminated with error code %1. chown je prestao s radom sa greškom koda %1. @@ -756,17 +788,17 @@ The installer will quit and all changes will be lost. Delete partition %1. - + Obriši particiju %1. Delete partition <strong>%1</strong>. - + Obriši particiju <strong>%1</strong>. Deleting partition %1. - + Brišem particiju %1. @@ -792,34 +824,34 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Tip <strong>particijske tablice</strong> na odabranom disku.<br><br>Jedini način da bi ste promijenili tip particijske tablice je da obrišete i iznova stvorite particijsku tablicu. To će uništiiti sve podatke na disku.<br>Instalacijski program će zadržati postojeću particijsku tablicu osim ako ne odaberete drugačije.<br>Ako niste sigurni, na novijim sustavima GPT je preporučena particijska tablica. This device has a <strong>%1</strong> partition table. - + Ovaj uređaj ima <strong>%1</strong> particijsku tablicu. 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. - + Ovo je <strong>loop</strong> uređaj.<br><br>To je pseudo uređaj koji nema particijsku tablicu koja omogučava pristup datotekama kao na block uređajima. Taj način postave obično sadrži samo jedan datotečni sustav. 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. - + Instalacijski program <strong>ne može detektirati particijsku tablicu</strong> na odabranom disku.<br><br>Uređaj ili nema particijsku tablicu ili je particijska tablica oštečena ili nepoznatog tipa.<br>Instalacijski program može stvoriti novu particijsku tablicu, ili automatski, ili kroz ručno particioniranje. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>To je preporučeni tip particijske tablice za moderne sustave koji se koristi za <strong> EFI </strong> boot okruženje. <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>Ovaj oblik particijske tablice je preporučen samo za starije sustave počevši od <strong>BIOS</strong> boot okruženja. GPT je preporučen u većini ostalih slučaja. <br><br><strong>Upozorenje:</strong> MBR particijska tablica je zastarjela iz doba MS-DOS standarda.<br>Samo 4 <em>primarne</em> particije se mogu kreirati i od tih 4, jedna može biti <em>proširena</em> particija, koja može sadržavati mnogo <em>logičkih</em> particija. @@ -830,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Zapisujem LUKS konfiguraciju za Dracut na %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Preskačem pisanje LUKS konfiguracije za Dracut: "/" particija nije kriptirana + + + + Failed to open %1 + Neuspješno otvaranje %1 + + + + DummyCppJob + + + Dummy C++ Job + Lažni C++ posao + + EditExistingPartitionDialog @@ -845,7 +903,7 @@ The installer will quit and all changes will be lost. &Keep - + &Zadrži @@ -860,60 +918,98 @@ The installer will quit and all changes will be lost. &Mount Point: - + &Točka montiranja: Si&ze: - + Ve&ličina: - + + MiB + MiB + + + Fi&le System: - + Da&totečni sustav: - + Flags: - + Oznake: + + + + Mountpoint already in use. Please select another one. + Točka montiranja se već koristi. Odaberite drugu. + + + + EncryptWidget + + + Form + Oblik + + + + En&crypt system + Ši&friraj sustav + + + + Passphrase + Lozinka + + + + Confirm passphrase + Potvrdi lozinku + + + + Please enter the same passphrase in both boxes. + Molimo unesite istu lozinku u oba polja. FillGlobalStorageJob - + Set partition information Postavi informacije o particiji - + Install %1 on <strong>new</strong> %2 system partition. - + Instaliraj %1 na <strong>novu</strong> %2 sistemsku particiju. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Postavi <strong>novu</strong> %2 particiju s točkom montiranja <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Instaliraj %2 na %3 sistemsku particiju <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Postavi %3 particiju <strong>%1</strong> s točkom montiranja <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Instaliraj boot učitavač na <strong>%1</strong>. - + Setting up mount points. - + Postavljam točke montiranja. @@ -921,68 +1017,83 @@ The installer will quit and all changes will be lost. Form - + Oblik &Restart now - + &Ponovno pokreni sada - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Gotovo.</h1><br/>%1 je instaliran na vaše računalo.<br/>Sada možete ponovno pokrenuti računalo ili nastaviti sa korištenjem %2 live okruženja. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Instalacija nije uspijela</h1><br/>%1 nije instaliran na vaše računalo.<br/>Greška: %2. FinishedViewStep - + Finish - + Završi + + + + Installation Complete + Instalacija je završena + + + + The installation of %1 is complete. + Instalacija %1 je završena. FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Formatiraj particiju %1 (datotečni sustav: %2, veličina: %3 MB) na %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formatiraj <strong>%3MB</strong>particiju <strong>%1</strong> na datotečni sustav <strong>%2</strong>. - + Formatting partition %1 with file system %2. - + Formatiraj particiju %1 na datotečni sustav %2. - + The installer failed to format partition %1 on disk '%2'. - + Instalacijski program nije uspio formatirati particiju %1 na disku '%2'. - + Could not open device '%1'. Ne mogu otvoriti uređaj '%1'. - + Could not open partition table. Ne mogu otvoriti particijsku tablicu. - + The installer failed to create file system on partition %1. Instalacijski program nije uspio stvoriti datotečni sustav na particiji %1. - + The installer failed to update partition table on disk '%1'. - Instalacijski program nije uspio nadograditi particijsku tablicu na disku %1. + Instalacijski program nije uspio nadograditi particijsku tablicu na disku '%1'. @@ -992,19 +1103,19 @@ The installer will quit and all changes will be lost. Konsole not installed - + Terminal nije instaliran Please install the kde konsole and try again! - + Molimo vas da instalirate kde terminal i pokušajte ponovno! Executing script: &nbsp;<code>%1</code> - + Izvršavam skriptu: &nbsp;<code>%1</code> @@ -1012,18 +1123,18 @@ The installer will quit and all changes will be lost. Script - + Skripta KeyboardPage - + Set keyboard model to %1.<br/> Postavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Postavi raspored tipkovnice na %1%2. @@ -1031,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Tipkovnica @@ -1039,14 +1150,24 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + Postavke jezične sheme sustava - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + Jezična shema sustava ima efekt na jezični i znakovni skup za neke komandno linijske elemente sučelja.<br/>Trenutačna postavka je <strong>%1</strong>. + + + + &Cancel + &Odustani + + + + &OK + &OK @@ -1054,69 +1175,69 @@ The installer will quit and all changes will be lost. Form - + Oblik I accept the terms and conditions above. - + Prihvaćam gore navedene uvjete i odredbe. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>Licencni ugovor</h1>Instalacijska procedura će instalirati vlasnički program koji podliježe uvjetima licenciranja. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, instalacijska procedura se ne može nastaviti. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>Licencni ugovor</h1>Instalacijska procedura može instalirati vlasnički program, koji podliježe uvjetima licenciranja, kako bi pružio dodatne mogućnosti i poboljšao korisničko iskustvo. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Molimo vas da pogledate gore navedene End User License Agreements (EULAs).<br/>Ako se ne slažete s navedenim uvjetima, vlasnički program se ne će instalirati te će se umjesto toga koristiti program otvorenog koda. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 upravljački program</strong><br/>by %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 grafički upravljački program</strong><br/><font color="Grey">od %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 dodatak preglednika</strong><br/><font color="Grey">od %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>%1 kodek</strong><br/><font color="Grey">od %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>%1 paket</strong><br/><font color="Grey">od %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">od %2</font> <a href="%1">view license agreement</a> - + <a href="%1">pogledaj licencni ugovor</a> @@ -1124,47 +1245,58 @@ The installer will quit and all changes will be lost. License - + Licence LocalePage - - - The system locale is set to %1. - + + The system language will be set to %1. + Jezik sustava će se postaviti na %1. - + + The numbers and dates locale will be set to %1. + Jezična shema brojeva i datuma će se postaviti na %1. + + + Region: Regija: - + Zone: Zona: - + + &Change... - + &Promijeni... - + Set timezone to %1/%2.<br/> - Postavi vremesku zonu na %1%2<br/> + Postavi vremesku zonu na %1%2.<br/> + + + + %1 (%2) + Language (Country) + %1 (%2) LocaleViewStep - + Loading location data... Učitavanje podataka o lokaciji... - + Location Lokacija @@ -1199,23 +1331,49 @@ The installer will quit and all changes will be lost. Updating boot sector after the moving of partition %1 failed. - + Nije uspjelo ažuriranje boot sektora nakon pomicanja particije %1. The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. - + Velićina logičkog sektora na izvoru i cilju za kopiranje nije ista. Ovo trenutno nije podržano. Source and target for copying do not overlap: Rollback is not required. - + Izvor i cilj za kopiranje se ne preklapaju. Vraćanje nije potrebno. Could not open device %1 to rollback copying. - + Ne mogu otvoriti uređaj %1 za vraćanje kopiranja. + + + + NetInstallPage + + + Name + Ime + + + + Description + Opis + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Mrežna instalacija. (Onemogućeno: Ne mogu dohvatiti listu paketa, provjerite da li ste spojeni na mrežu) + + + + NetInstallViewStep + + + Package selection + Odabir paketa @@ -1223,7 +1381,7 @@ The installer will quit and all changes will be lost. Form - + Oblik @@ -1233,7 +1391,7 @@ The installer will quit and all changes will be lost. Type here to test your keyboard - Piši ovdje kako bi testirao tipkovnicu + Ovdje testiraj tipkovnicu @@ -1251,15 +1409,14 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - Koje ime želiš koristiti za prijavu? + Koje ime želite koristiti za prijavu? - font-weight: normal - + debljina fonta: normalan @@ -1269,12 +1426,12 @@ The installer will quit and all changes will be lost. Choose a password to keep your account safe. - Odaberi lozinku za očuvanje računa sigurnim. + Odaberite lozinku da bi račun bio siguran. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>Unesite istu lozinku dvaput, tako da bi se provjerile eventualne pogreške prilikom upisa. Dobra lozinka sadrži kombinaciju slova, brojki i interpunkcija, trebala bi biti dugačka najmanje osam znakova i trebala bi se mijenjati u redovitim intervalima.</small> @@ -1284,27 +1441,27 @@ The installer will quit and all changes will be lost. <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>Ovo ime će se koristiti ako odaberete da je računalo vidljivo ostalim korisnicima na mreži.</small> Log in automatically without asking for the password. - + Automatska prijava bez traženja lozinke. Use the same password for the administrator account. - + Koristi istu lozinku za administratorski račun. Choose a password for the administrator account. - Odaberi lozinku za administratorski račun + Odaberi lozinku za administratorski račun. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>Unesite istu lozinku dvaput, tako da bi se provjerile eventualne pogreške prilikom upisa.</small> @@ -1312,37 +1469,42 @@ The installer will quit and all changes will be lost. Root - + Root Home - + Home Boot - + Boot EFI system - + EFI sustav Swap - + Swap New partition for %1 - + Nova particija za %1 - + + New partition + Nova particija + + + %1 %2 - + %1 %2 @@ -1360,22 +1522,22 @@ The installer will quit and all changes will be lost. Nova particija - + Name Ime - + File System Datotečni sustav - + Mount Point - + Točka montiranja - + Size Veličina @@ -1390,40 +1552,40 @@ The installer will quit and all changes will be lost. Storage de&vice: - + Uređaj za sp&remanje: &Revert All Changes - + &Poništi sve promjene - + New Partition &Table - Nova particija i tablica + Nova particijska &tablica - + &Create - &Izradi + &Stvori - + &Edit &Uredi - + &Delete &Izbriši - + Install boot &loader on: - + Instaliraj boot &učitavač na: - + Are you sure you want to create a new partition table on %1? Jeste li sigurni da želite stvoriti novu particijsku tablicu na %1? @@ -1431,89 +1593,99 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Skupljanje informacija o sustavu... - + Partitions Particije - - - Install %1 <strong>alongside</strong> another operating system. - - - - - <strong>Erase</strong> disk and install %1. - - - - - <strong>Replace</strong> a partition with %1. - - - <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system. + Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav. + + + + <strong>Erase</strong> disk and install %1. + <strong>Obriši</strong> disk i instaliraj %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>Zamijeni</strong> particiju s %1. + <strong>Manual</strong> partitioning. + <strong>Ručno</strong> particioniranje. + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + Instaliraj %1 <strong>uz postojeći</strong> operacijski sustav na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Obriši</strong> disk <strong>%2</strong> (%3) i instaliraj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Zamijeni</strong> particiju na disku <strong>%2</strong> (%3) s %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + <strong>Ručno</strong> particioniram disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Disk <strong>%1</strong> (%2) - + Current: - + Trenutni: - + After: - + Poslije: - + No EFI system partition configured - + EFI particija nije konfigurirana - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI particija je potrebna za pokretanje %1.<br/><br/>Da bi ste konfigurirali EFI particiju, idite natrag i odaberite ili stvorite FAT32 datotečni sustav s omogućenom <strong>esp</strong> oznakom i točkom montiranja <strong>%2</strong>.<br/><br/>Možete nastaviti bez postavljanja EFI particije, ali vaš sustav se možda neće moći pokrenuti. - + EFI system partition flag not set - + Oznaka EFI particije nije postavljena - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI particija je potrebna za pokretanje %1.<br><br/>Particija je konfigurirana s točkom montiranja <strong>%2</strong> ali njezina <strong>esp</strong> oznaka nije postavljena.<br/>Za postavljanje oznake, vratite se i uredite postavke particije.<br/><br/>Možete nastaviti bez postavljanja oznake, ali vaš sustav se možda neće moći pokrenuti. + + + + Boot partition not encrypted + Boot particija nije kriptirana + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Odvojena boot particija je postavljena zajedno s kriptiranom root particijom, ali boot particija nije kriptirana.<br/><br/>Zabrinuti smo za vašu sigurnost jer su važne datoteke sustava na nekriptiranoj particiji.<br/>Možete nastaviti ako želite, ali datotečni sustav će se otključati kasnije tijekom pokretanja sustava.<br/>Da bi ste kriptirali boot particiju, vratite se natrag i napravite ju, odabirom opcije <strong>Kriptiraj</strong> u prozoru za stvaranje prarticije. @@ -1530,24 +1702,29 @@ The installer will quit and all changes will be lost. Zadano - + unknown - + nepoznato - + extended - + prošireno - + unformatted - + nije formatirano + + + + swap + swap Unpartitioned space or unknown partition table - + Ne particionirani prostor ili nepoznata particijska tablica @@ -1555,127 +1732,132 @@ The installer will quit and all changes will be lost. Form - + Oblik Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + Odaberite gdje želite instalirati %1.<br/><font color="red">Upozorenje: </font>to će obrisati sve datoteke na odabranoj particiji. - + The selected item does not appear to be a valid partition. - + Odabrana stavka se ne ćini kao ispravna particija. - + %1 cannot be installed on empty space. Please select an existing partition. - + %1 ne može biti instaliran na prazni prostor. Odaberite postojeću particiju. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 se ne može instalirati na proširenu particiju. Odaberite postojeću primarnu ili logičku particiju. - + %1 cannot be installed on this partition. - + %1 se ne može instalirati na ovu particiju. - + Data partition (%1) - + Podatkovna particija (%1) - + Unknown system partition (%1) - + Nepoznata particija sustava (%1) - + %1 system partition (%2) - + %1 particija sustava (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>Particija %1 je premala za %2. Odaberite particiju kapaciteta od najmanje %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>EFI particijane postoji na ovom sustavu. Vratite se natrag i koristite ručno particioniranje za postavljane %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>%1 će biti instaliran na %2.<br/><font color="red">Upozorenje: </font>svi podaci na particiji %2 će biti izgubljeni. - + The EFI system partition at %1 will be used for starting %2. - + EFI particija na %1 će se koristiti za pokretanje %2. - + EFI system partition: - + EFI particija: RequirementsChecker - + Gathering system information... - - - - - has at least %1 GB available drive space - - - - - There is not enough drive space. At least %1 GB is required. - + Skupljanje informacija o sustavu... - has at least %1 GB working memory - + has at least %1 GB available drive space + ima barem %1 GB dostupne slobodne memorije na disku - The system does not have enough working memory. At least %1 GB is required. - + There is not enough drive space. At least %1 GB is required. + Nema dovoljno prostora na disku. Potrebno je najmanje %1 GB. + has at least %1 GB working memory + ima barem %1 GB radne memorije + + + + The system does not have enough working memory. At least %1 GB is required. + Ovaj sustav nema dovoljno radne memorije. Potrebno je najmanje %1 GB. + + + is plugged in to a power source - + je spojeno na izvor struje - + The system is not plugged in to a power source. - + Ovaj sustav nije spojen na izvor struje. - + is connected to the Internet - + je spojeno na Internet - + The system is not connected to the Internet. - + Ovaj sustav nije spojen na internet. - + The installer is not running with administrator rights. - + Instalacijski program nije pokrenut sa administratorskim dozvolama. + + + + The screen is too small to display the installer. + Zaslon je premalen za prikaz instalacijskog programa. @@ -1683,17 +1865,17 @@ The installer will quit and all changes will be lost. Resize file system on partition %1. - + Promjena veličine datotečnog sustava na particiji %1. Parted failed to resize filesystem. - + Parted nije uspio promijeniti veličinu datotečnog sustava. Failed to resize filesystem. - + Nije uspjela promjena veličine datotečnog sustava. @@ -1701,23 +1883,23 @@ The installer will quit and all changes will be lost. Resize partition %1. - + Promijeni veličinu particije %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - + Promijeni veličinu od <strong>%2MB</strong> particije <strong>%1</strong> na <strong>%3MB</strong>. Resizing %2MB partition %1 to %3MB. - + Mijenjam veličinu od %2MB particije %1 na %3MB. The installer failed to resize partition %1 on disk '%2'. - + Instalacijski program nije uspio promijeniti veličinu particije %1 na disku '%2'. @@ -1730,12 +1912,12 @@ The installer will quit and all changes will be lost. Scanning storage devices... - + Tražim dostupne uređaje za spremanje... Partitioning - + Particioniram @@ -1743,17 +1925,17 @@ The installer will quit and all changes will be lost. Set hostname %1 - + Postavi ime računala %1 Set hostname <strong>%1</strong>. - + Postavi ime računala <strong>%1</strong>. Setting hostname %1. - + Postavljam ime računala %1. @@ -1765,79 +1947,135 @@ The installer will quit and all changes will be lost. Cannot write hostname to target system - + Ne mogu zapisati ime računala na traženi sustav. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Postavi model tpkovnice na %1, raspored na %2-%3 - + Failed to write keyboard configuration for the virtual console. - + Neuspješno pisanje konfiguracije tipkovnice za virtualnu konzolu. - - + + + Failed to write to %1 - + Neuspješno pisanje na %1 - + Failed to write keyboard configuration for X11. - + Neuspješno pisanje konfiguracije tipkovnice za X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + Neuspješno pisanje konfiguracije tipkovnice u postojeći /etc/default direktorij. SetPartFlagsJob - + Set flags on partition %1. - + Postavi oznake na particiji %1. - + + Set flags on %1MB %2 partition. + Postavi oznake na %1MB %2 particiji. + + + + Set flags on new partition. + Postavi oznake na novoj particiji. + + + Clear flags on partition <strong>%1</strong>. - + Obriši oznake na particiji <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Obriši oznake na %1MB <strong>%2</strong> particiji. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Obriši oznake na novoj particiji. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Označi particiju <strong>%1</strong> kao <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Označi %1MB <strong>%2</strong> particiju kao <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Označi novu particiju kao <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Brišem oznake na particiji <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Brišem oznake na %1MB <strong>%2</strong> particiji. + + + + Clearing flags on new partition. + Brišem oznake na novoj particiji. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Postavljam oznake <strong>%2</strong> na particiji <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Postavljam oznake <strong>%3</strong> na %1MB <strong>%2</strong> particiji. + + + + Setting flags <strong>%1</strong> on new partition. + Postavljam oznake <strong>%1</strong> na novoj particiji. + + + The installer failed to set flags on partition %1. - + Instalacijski program nije uspio postaviti oznake na particiji %1. - + Could not open device '%1'. - + Ne mogu otvoriti uređaj '%1'. - + Could not open partition table on device '%1'. - + Ne mogu otvoriti particijsku tablicu na uređaju '%1'. - + Could not find partition '%1'. - + Ne mogu pronaći particiju '%1'. @@ -1845,45 +2083,55 @@ The installer will quit and all changes will be lost. Update geometry of partition %1. - + Ažuriram geometriju particije %1. Failed to change the geometry of the partition. - + Neuspješna promjena geometrije particije. SetPasswordJob - + Set password for user %1 Postavi lozinku za korisnika %1 - + Setting password for user %1. - + Postavljam lozinku za korisnika %1. - + Bad destination system path. - + Loš odredišni put sustava. - + rootMountPoint is %1 - + rootTočkaMontiranja je %1 - + + Cannot disable root account. + Ne mogu onemogućiti root račun. + + + + passwd terminated with error code %1. + passwd je prekinut s greškom %1. + + + Cannot set password for user %1. Ne mogu postaviti lozinku za korisnika %1. - + usermod terminated with error code %1. - + usermod je prekinut s greškom %1. @@ -1911,17 +2159,17 @@ The installer will quit and all changes will be lost. Link creation failed, target: %1; link name: %2 - - - - - Cannot set timezone, - + Kreiranje linka nije uspjelo, cilj: %1; ime linka: %2 + Cannot set timezone, + Ne mogu postaviti vremensku zonu, + + + Cannot open /etc/timezone for writing - + Ne mogu otvoriti /etc/timezone za pisanje @@ -1929,7 +2177,7 @@ The installer will quit and all changes will be lost. This is an overview of what will happen once you start the install procedure. - + Ovo je prikaz događaja koji će uslijediti jednom kad počne instalacijska procedura. @@ -1943,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Vaše korisničko ime je predugačko. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Korisničko ime sadržava nedozvoljene znakove. Dozvoljena su samo mala slova i brojevi. - + Your hostname is too short. - + Ime računala je kratko. - + Your hostname is too long. - + Ime računala je predugačko. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + Ime računala sadrži nedozvoljene znakove. Samo slova, brojevi i crtice su dozvoljene. - - + + Your passwords do not match! Lozinke se ne podudaraju! @@ -1987,60 +2235,65 @@ The installer will quit and all changes will be lost. Form - + Oblik &Language: - + &Jezik: &Release notes - + &Napomene o izdanju &Known issues - + &Poznati problemi &Support - + &Podrška &About - + &O programu - + <h1>Welcome to the %1 installer.</h1> - + <h1>Dobrodošli u %1 instalacijski program.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + Dobrodošli u Calamares instalacijski program za %1. + + + About %1 installer - + O %1 instalacijskom programu - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>za %3</strong><br/><br/>Autorska prava 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorska prava 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">Calamares timu za prevođenje</a>.<br/><br/><a href="http://calamares.io/">Calamares</a>sponzorira <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support - + %1 podrška WelcomeViewStep - + Welcome - + Dobrodošli \ No newline at end of file diff --git a/lang/calamares_hu.ts b/lang/calamares_hu.ts index 8e6f6fae7..32af46f3c 100644 --- a/lang/calamares_hu.ts +++ b/lang/calamares_hu.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Válaszd ki melyik partíció legyen átméretezve, zsugorítva: - - - - Allocate drive space by dragging the divider below: - Az alábbi osztósáv húzásával meghatározhatod a lefoglalandó meghajtó területet: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Ezzel a művelettel, a <strong>%1</strong> partíció, ami %4-et tartalmaz, %2MB-ra lesz zsugorítva és egy új %3MB partíció lesz létrehozva %5 számára. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Az EFI rendszerpartíció nem található a rendszerben. Kérlek, lépj vissza és állítsd be manuális partícionálással %1- et. - - - - The EFI system partition at %1 will be used for starting %2. - A %2 indításához az EFI rendszer partíciót használja a következőn: %1 - - - - EFI system partition: - EFI rendszer partíció: - - 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. A rendszer <strong>indító környezete.<strong> <br><br>Régebbi x86 alapú rendszerek csak <strong>BIOS</strong><br>-t támogatják. A modern rendszerek gyakran <strong>EFI</strong>-t használnak, de lehet, hogy BIOS-ként látható ha kompatibilitási módban fut az indító környezet. - + 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. A rendszer <strong>EFI</strong> indító környezettel lett indítva.<br><br>Annak érdekében, hogy az EFI környezetből indíthassunk a telepítőnek telepítenie kell a rendszerbetöltő alkalmazást pl. <strong>GRUB</strong> vagy <strong>systemd-boot</strong> az <strong>EFI Rendszer Partíción.</strong> Ez automatikus kivéve ha kézi partícionálást választottál ahol neked kell kiválasztani vagy létrehozni. - + 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. A rendszer <strong>BIOS</strong> környezetből lett indítva. <br><br>Azért, hogy el lehessen indítani a rendszert egy BIOS környezetből a telepítőnek telepítenie kell egy indító környezetet mint pl. <strong>GRUB</strong>. Ez telepíthető a partíció elejére vagy a <strong>Master Boot Record</strong>-ba. javasolt a partíciós tábla elejére (javasolt). Ez automatikus kivéve ha te kézi partícionálást választottál ahol neked kell telepíteni. @@ -101,7 +68,28 @@ Modulok - + + Type: + Típus: + + + + + none + semelyik + + + + Interface: + Interfész: + + + + Tools + Eszközök + + + Debug information Hibakeresési információk @@ -200,32 +188,32 @@ Kimenet: Calamares::PythonJob - + Running %1 operation. Futó %1 műveletek. - + Bad working directory path Rossz munkakönyvtár útvonal - + Working directory %1 for python job %2 is not readable. Munkakönyvtár %1 a python folyamathoz %2 nem olvasható. - + Bad main script file Rossz alap script fájl - + Main script file %1 for python job %2 is not readable. Alap script fájl %1 a python folyamathoz %2 nem olvasható. - + Boost.Python error in job "%1". Boost. Python hiba ebben a folyamatban "%1". @@ -233,65 +221,91 @@ Kimenet: Calamares::ViewManager - + &Back &Vissza - + &Next &Következő - - + + &Cancel &Mégse - + + + Cancel installation without changing the system. + Kilépés a telepítőből a rendszer megváltoztatása nélkül. + + + Cancel installation? Abbahagyod a telepítést? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Biztos abba szeretnéd hagyni a telepítést? Minden változtatás elveszik, ha kilépsz a telepítőből. - + + &Yes + &Igen + + + + &No + @Nem + + + + &Close + &Bezár + + + Continue with setup? Folytatod a telepítéssel? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> A %1 telepítő változtatásokat fog elvégezni, hogy telepítse a következőt: %2.<br/><strong>A változtatások visszavonhatatlanok lesznek.</strong> - + &Install now &Telepítés most - + Go &back Menj &vissza - - &Quit - &Kilépés + + &Done + &Befejez - + + The installation is complete. Close the installer. + A telepítés befejeződött, kattints a bezárásra. + + + Error Hiba - + Installation Failed Telepítés nem sikerült @@ -299,22 +313,22 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CalamaresPython::Helper - + Unknown exception type Ismeretlen kivétel típus - + unparseable Python error nem egyeztethető Python hiba - + unparseable Python traceback nem egyeztethető Python visszakövetés - + Unfetchable Python error. Összehasonlíthatatlan Python hiba. @@ -322,12 +336,12 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CalamaresWindow - + %1 Installer %1 Telepítő - + Show debug information Hibakeresési információk mutatása @@ -335,12 +349,12 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CheckFileSystemJob - + Checking file system on partition %1. Fájlrendszer ellenőrzése a partíción %1. - + The file system check on partition %1 failed. A fájlrendszer ellenőrzés a(z) %1 partíción sikertelen. @@ -348,7 +362,7 @@ Minden változtatás elveszik, ha kilépsz a telepítőből. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ez a számítógép nem felel meg a minimum követelményeknek a %1 telepítéséhez.<br/> Telepítés nem folytatható. <a href="#details">Részletek...</a> @@ -359,17 +373,17 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Ez a számítógép nem felel meg a minimum követelményeknek a %1 telepítéséhez.<br/>Telepítés folytatható de néhány tulajdonság valószínűleg nem lesz elérhető. - + This program will ask you some questions and set up %2 on your computer. Ez a program fel fog tenni néhány kérdést és %2 -t telepíti a számítógépre. - + For best results, please ensure that this computer: A legjobb eredményért győződjünk meg, hogy ez a számítógép: - + System requirements Rendszer követelmények @@ -382,102 +396,109 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Adatlap - + After: Utána: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Manuális partícionálás</strong><br/>Létrehozhat vagy átméretezhet partíciókat. - + Boot loader location: Rendszerbetöltő helye: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 lesz zsugorítva %2MB méretűre és egy új %3MB méretű partíció lesz létrehozva itt %4 - + Select storage de&vice: Válassz tároló eszközt: - - - - + + + + Current: Aktuális: - + + Reuse %1 as home partition for %2. + %1 partíció használata mint home partíció a %2 -n + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Válaszd ki a partíciót amit zsugorítani akarsz és egérrel méretezd át.</strong> - + <strong>Select a partition to install on</strong> <strong>Válaszd ki a telepítésre szánt partíciót </strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nem található EFI partíció a rendszeren. Menj vissza a manuális partícionáláshoz és állíts be %1. - + The EFI system partition at %1 will be used for starting %2. A %1 EFI rendszer partíció lesz használva %2 indításához. - + EFI system partition: EFI rendszerpartíció: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Úgy tűnik ezen a tárolóeszközön nincs operációs rendszer. Mit szeretnél csinálni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Lemez törlése</strong><br/>Ez <font color="red">törölni</font> fogja a lemezen levő összes adatot. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ezen a tárolóeszközön %1 található. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Meglévő mellé telepíteni</strong><br/>A telepítő zsugorítani fogja a partíciót, hogy elférjen a %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>A partíció lecserélése</strong> a következővel: %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Ez a tárolóeszköz már tartalmaz egy operációs rendszert. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. A tárolóeszközön több operációs rendszer található. Mit szeretnél tenni?<br/>Lehetőséged lesz átnézni és megerősíteni a választásod mielőtt bármilyen változtatás történik a tárolóeszközön. @@ -485,17 +506,17 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 csatolás törlése partícionáláshoz - + Clearing mounts for partitioning operations on %1. %1 csatolás törlése partícionáláshoz - + Cleared all mounts for %1 %1 minden csatolása törölve @@ -503,22 +524,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l ClearTempMountsJob - + Clear all temporary mounts. Minden ideiglenes csatolás törlése - + Clearing all temporary mounts. Minden ideiglenes csatolás törlése - + Cannot get list of temporary mounts. Nem lehet lekérni az ideiglenes csatolási listát - + Cleared all temporary mounts. Minden ideiglenes csatolás törölve @@ -531,60 +552,70 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Partíció Létrehozása - + + MiB + MiB + + + Partition &Type: Partíció &típus: - + &Primary &Elsődleges - + E&xtended K&iterjesztett - + Fi&le System: - + Fájlrendszer: - + Flags: - + Zászlók: - + &Mount Point: &Csatolási pont: - + Si&ze: Mé&ret: - - MB - MB + + En&crypt + Titkosítás - + Logical Logikai - + Primary Elsődleges - + GPT GPT + + + Mountpoint already in use. Please select another one. + A csatolási pont már használatban van. Kérem, válassz másikat. + CreatePartitionJob @@ -688,67 +719,67 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l CreateUserJob - + Create user %1 %1 nevű felhasználó létrehozása - + Create user <strong>%1</strong>. <strong>%1</strong> nevű felhasználó létrehozása. - + Creating user %1. %1 nevű felhasználó létrehozása - + Sudoers dir is not writable. Sudoers mappa nem írható. - + Cannot create sudoers file for writing. Nem lehet sudoers fájlt létrehozni írásra. - + Cannot chmod sudoers file. Nem lehet a sudoers fájlt "chmod" -olni. - + Cannot open groups file for reading. Nem lehet a groups fájlt megnyitni olvasásra. - + Cannot create user %1. Nem lehet a %1 felhasználót létrehozni. - + useradd terminated with error code %1. useradd megszakítva %1 hibakóddal. - - Cannot set full name for user %1. - Nem lehet a teljes nevet beállítani a %1 felhasználónak. + + Cannot add user %1 to groups: %2. + Nem lehet a %1 felhasználót létrehozni a %2 csoportban. - - chfn terminated with error code %1. - chfn megszakítva %1 hibakóddal. + + usermod terminated with error code %1. + usermod megszakítva %1 hibakóddal. - + Cannot set home directory ownership for user %1. Nem lehet a home könyvtár tulajdonos jogosultságát beállítani %1 felhasználónak. - + chown terminated with error code %1. chown megszakítva %1 hibakóddal. @@ -794,7 +825,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. A <strong>partíciós tábla</strong> típusa a kiválasztott tárolóeszközön.<br><br>Az egyetlen lehetőség a partíciós tábla változtatására ha töröljük és újra létrehozzuk a partíciós táblát, ami megsemmisít minden adatot a tárolóeszközön.<br>A telepítő megtartja az aktuális partíciós táblát ha csak másképp nem döntesz.<br>Ha nem vagy benne biztos a legtöbb modern rendszernél GPT az elterjedt. @@ -832,6 +863,32 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Dracut LUKS konfiguráció mentése ide %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Dracut LUKS konfiguráció mentésének kihagyása: "/" partíció nincs titkosítva. + + + + Failed to open %1 + Hiba történt %1 megnyitásakor + + + + DummyCppJob + + + Dummy C++ Job + Teszt C++ job + + EditExistingPartitionDialog @@ -870,50 +927,88 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l &méret: - + + MiB + MiB + + + Fi&le System: &fájlrendszer - + Flags: - + Zászlók: + + + + Mountpoint already in use. Please select another one. + A csatolási pont már használatban van. Kérem, válassz másikat. + + + + EncryptWidget + + + Form + Adatlap + + + + En&crypt system + Rendszer titkosítása + + + + Passphrase + Jelszó + + + + Confirm passphrase + Jelszó megerősítés + + + + Please enter the same passphrase in both boxes. + Írd be ugyanazt a jelmondatot mindkét dobozban. FillGlobalStorageJob - + Set partition information Partíció információk beállítása - + Install %1 on <strong>new</strong> %2 system partition. %1 telepítése az <strong>új</strong> %2 partícióra. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. <strong>Új</strong> %2 partíció beállítása <strong>%1</strong> csatolási ponttal. - + Install %2 on %3 system partition <strong>%1</strong>. %2 telepítése %3 <strong>%1</strong> rendszer partícióra. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 partíció beállítása <strong>%1</strong> <strong>%2</strong> csatolási ponttal. - + Install boot loader on <strong>%1</strong>. Rendszerbetöltő telepítése ide <strong>%1</strong>. - + Setting up mount points. Csatlakozási pontok létrehozása @@ -931,58 +1026,73 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l $Újraindítás most - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Sikeres művelet.</h1><br/>%1 telepítve lett a számítógépére.<br/>Újraindítás után folytathatod az %2 éles környezetben. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>A telepítés hibába ütközött.</h1><br/>%1 nem lett telepítve a számítógépre.<br/>A hibaüzenet: %2. + FinishedViewStep - + Finish Befejezés + + + Installation Complete + A telepítés befejeződött. + + + + The installation of %1 is complete. + A %1 telepítése elkészült. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Partíció formázása %1 (fájlrendszer: %2, méret: %3 MB) a %4 -on. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. <strong>%3MB</strong> partíció formázása <strong>%1</strong> a következő fájlrendszerrel <strong>%2</strong>. - + Formatting partition %1 with file system %2. %1 partíció formázása %2 fájlrendszerrel. - + The installer failed to format partition %1 on disk '%2'. A telepítő nem tudta formázni a %1 partíciót a %2 lemezen. - + Could not open device '%1'. Nem sikerült megnyitni a %1 eszközt. - + Could not open partition table. Nem sikerült a partíciós tábla megnyitása. - + The installer failed to create file system on partition %1. A telepítő nem tudta létrehozni a fájlrendszert a %1 partíción. - + The installer failed to update partition table on disk '%1'. A telepítő nem tudta frissíteni a partíciós táblát a %1 lemezen. @@ -1020,12 +1130,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l KeyboardPage - + Set keyboard model to %1.<br/> Billentyűzet típus beállítása %1.<br/> - + Set keyboard layout to %1/%2. Billentyűzet kiosztás beállítása %1/%2. @@ -1033,7 +1143,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l KeyboardViewStep - + Keyboard Billentyűzet @@ -1041,15 +1151,25 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l LCLocaleDialog - + System locale setting Területi beállítások - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. A nyelvi beállítás kihat a nyelvi és karakter beállításokra a parancssori elemeknél.<br/>A jelenlegi beállítás <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1132,41 +1252,52 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. A rendszer területi beállítása %1. - + + The numbers and dates locale will be set to %1. + A számok és dátumok területi beállítása %1. + + + Region: Régió: - + Zone: Zóna: - + + &Change... &Változtat... - + Set timezone to %1/%2.<br/> Időzóna beállítása %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Hely adatok betöltése... - + Location Hely @@ -1220,6 +1351,32 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Nem sikerült megnyitni a %1 eszközt a másolás visszavonásához. + + NetInstallPage + + + Name + Név + + + + Description + Leírás + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Hálózati telepítés. (Kikapcsolva: A csomagokat nem lehet letölteni, ellenőrizd a hálózati kapcsolatot) + + + + NetInstallViewStep + + + Package selection + Csomag választása + + Page_Keyboard @@ -1256,7 +1413,6 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Milyen felhasználónévvel szeretnél bejelentkezni? - @@ -1342,7 +1498,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Új partíció %1 -ra/ -re - + + New partition + Új partíció + + + %1 %2 %1 %2 @@ -1362,22 +1523,22 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Új partíció - + Name Név - + File System Fájlrendszer - + Mount Point Csatolási pont - + Size Méret @@ -1400,32 +1561,32 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l &Módosítások visszavonása - + New Partition &Table Új partíciós &tábla - + &Create &Létrehoz - + &Edit &Szerkeszt - + &Delete &Töröl - + Install boot &loader on: &Rendszerbetöltő telepítése ide: - + Are you sure you want to create a new partition table on %1? Biztos vagy benne, hogy létrehozol egy új partíciós táblát itt %1 ? @@ -1433,89 +1594,99 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l PartitionViewStep - + Gathering system information... Rendszerinformációk gyűjtése... - + Partitions Partíciók - + Install %1 <strong>alongside</strong> another operating system. %1 telepítése más operációs rendszer <strong>mellé</strong> . - + <strong>Erase</strong> disk and install %1. <strong>Lemez törlés</strong>és %1 telepítés. - + <strong>Replace</strong> a partition with %1. <strong>A partíció lecserélése</strong> a következővel: %1. - + <strong>Manual</strong> partitioning. <strong>Kézi</strong> partícionálás. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). %1 telepítése más operációs rendszer <strong>mellé</strong> a <strong>%2</strong> (%3) lemezen. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2 lemez törlése</strong> (%3) és %1 telepítés. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>A partíció lecserélése</strong> a <strong>%2</strong> lemezen(%3) a következővel: %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Kézi</strong> telepítés a <strong>%1</strong> (%2) lemezen. - + Disk <strong>%1</strong> (%2) Lemez <strong>%1</strong> (%2) - + Current: Aktuális: - + After: Utána: - + No EFI system partition configured - + Nincs EFI rendszer partíció beállítva - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> Az EFI rendszer beállításához lépj vissza és hozz létre FAT32 fájlrendszert <strong>esp</strong> zászlóval és <strong>%2</strong> csatolási ponttal beállítva.<br/><br/> Folytathatod a telepítést EFI rendszerpartíció létrehozása nélkül is, de lehet, hogy a rendszer nem indul majd. - + EFI system partition flag not set - + EFI partíciós zászló nincs beállítva - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + EFI rendszerpartíciónak léteznie kell %1 indításához.<br/><br/> A csatolási pont <strong>%2</strong> beállítása sikerült a partíción de a zászló nincs beállítva. A beálíltásához lépj vissza szerkeszteni a partíciót..<br/><br/> Folytathatod a telepítést zászló beállítása nélkül is, de lehet, hogy a rendszer nem indul el majd. + + + + Boot partition not encrypted + Indító partíció nincs titkosítva + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Egy külön indító partíció lett beállítva egy titkosított root partícióval, de az indító partíció nincs titkosítva.br/><br/>Biztonsági aggályok merülnek fel ilyen beállítás mellet, mert fontos fájlok nem titkosított partíción vannak tárolva. <br/>Ha szeretnéd, folytathatod így, de a fájlrendszer zárolása meg fog történni az indítás után. <br/> Az indító partíció titkosításához lépj vissza és az újra létrehozáskor válaszd a <strong>Titkosít</strong> opciót. @@ -1532,20 +1703,25 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Alapértelmezett - + unknown ismeretlen - + extended kiterjesztett - + unformatted formázatlan + + + swap + Swap + Unpartitioned space or unknown partition table @@ -1565,64 +1741,64 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Válaszd ki az telepítés helyét %1.<br/><font color="red">Figyelmeztetés: </font>minden fájl törölve lesz a kiválasztott partíción. - + The selected item does not appear to be a valid partition. A kiválasztott elem nem tűnik érvényes partíciónak. - + %1 cannot be installed on empty space. Please select an existing partition. %1 nem telepíthető, kérlek válassz egy létező partíciót. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 nem telepíthető a kiterjesztett partícióra. Kérlek, válassz egy létező elsődleges vagy logikai partíciót. - + %1 cannot be installed on this partition. Nem lehet telepíteni a következőt %1 erre a partícióra. - + Data partition (%1) Adat partíció (%1) - + Unknown system partition (%1) Ismeretlen rendszer partíció (%1) - + %1 system partition (%2) %1 rendszer partíció (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>A partíció %1 túl kicsi a következőhöz %2. Kérlek, válassz egy legalább %3 GB- os partíciót. - + <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/>Az EFI rendszerpartíció nem található a rendszerben. Kérlek, lépj vissza és állítsd be manuális partícionálással %1- et. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 installálva lesz a következőre: %2.<br/><font color="red">Figyelmeztetés: </font>a partíción %2 minden törölve lesz. - + The EFI system partition at %1 will be used for starting %2. A %2 indításához az EFI rendszer partíciót használja a következőn: %1 - + EFI system partition: EFI rendszer partíció: @@ -1630,55 +1806,60 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l RequirementsChecker - + Gathering system information... Rendszerinformációk gyűjtése... - + has at least %1 GB available drive space Legalább %1 GB lemezterület elérhető - + There is not enough drive space. At least %1 GB is required. Nincs elég lemezterület. Legalább %1GB szükséges. - + has at least %1 GB working memory Legalább %1 GB elérhető memória - + The system does not have enough working memory. At least %1 GB is required. A rendszernek nincs elég memóriája. Legalább %1 GB szükséges. - + is plugged in to a power source csatlakoztatva van külső áramforráshoz - + The system is not plugged in to a power source. A rendszer nincs csatlakoztatva külső áramforráshoz - + is connected to the Internet csatlakozik az internethez - + The system is not connected to the Internet. A rendszer nem csatlakozik az internethez. - + The installer is not running with administrator rights. A telepítő nem adminisztrátori jogokkal fut. + + + The screen is too small to display the installer. + A képernyő túl kicsi a telepítőnek. + ResizeFileSystemJob @@ -1773,73 +1954,129 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Billentyűzet beállítása %1, elrendezés %2-%3 - + Failed to write keyboard configuration for the virtual console. Hiba történt a billentyűzet virtuális konzolba való beállításakor - - + + + Failed to write to %1 Hiba történt %1 -re történő íráskor - + Failed to write keyboard configuration for X11. Hiba történt a billentyűzet X11- hez való beállításakor + + + Failed to write keyboard configuration to existing /etc/default directory. + Hiba történt a billentyűzet konfiguráció alapértelmezett /etc/default mappába valló elmentésekor. + SetPartFlagsJob - + Set flags on partition %1. - + Zászlók beállítása a partíción %1. - + + Set flags on %1MB %2 partition. + Jelzők beállítása a %1MB %2 partíción. + + + + Set flags on new partition. + Jelzők beállítása az új partíción. + + + Clear flags on partition <strong>%1</strong>. - + Zászlók törlése a partíción: <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Jelzők törlése a %1MB <strong>%2</strong> partíción. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Jelzők törlése az új partíción. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Zászlók beállítása <strong>%1</strong> ,mint <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Jelzők beállítása %1MB <strong>%2</strong> a partíción mint <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Jelző beállítása mint <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Zászlók törlése a partíción: <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Jelzők törlése a %1MB <strong>%2</strong> partíción. + + + + Clearing flags on new partition. + jelzők törlése az új partíción. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Zászlók beállítása <strong>%2</strong> a <strong>%1</strong> partíción. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Jelzők beállítása <strong>%3</strong> a %1MB <strong>%2</strong> partíción. + + + + Setting flags <strong>%1</strong> on new partition. + Jelzők beállítása az új <strong>%1</strong> partíción. + + + The installer failed to set flags on partition %1. - + A telepítőnek nem sikerült a zászlók beállítása a partíción %1. - + Could not open device '%1'. - + Nem sikerült az eszköz megnyitása '%1'. - + Could not open partition table on device '%1'. - + Nem sikerült a partíció megnyitása a következő eszközön '%1'. - + Could not find partition '%1'. - + A '%1' partcíió nem található. @@ -1858,32 +2095,42 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l SetPasswordJob - + Set password for user %1 %1 felhasználó jelszó beállítása - + Setting password for user %1. %1 felhasználói jelszó beállítása - + Bad destination system path. Rossz célrendszer elérési út - + rootMountPoint is %1 rootMountPoint is %1 - + + Cannot disable root account. + A root account- ot nem lehet inaktiválni. + + + + passwd terminated with error code %1. + passwd megszakítva %1 hibakóddal. + + + Cannot set password for user %1. Nem lehet a %1 felhasználó jelszavát beállítani. - + usermod terminated with error code %1. usermod megszakítva %1 hibakóddal. @@ -1916,12 +2163,12 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l Link létrehozása nem sikerült: %1, link év: %2 - + Cannot set timezone, Nem lehet beállítani az időzónát . - + Cannot open /etc/timezone for writing Nem lehet megnyitni írásra: /etc/timezone @@ -1945,33 +2192,33 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l UsersPage - + Your username is too long. A felhasználónév túl hosszú. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. A felhasználónév érvénytelen karaktereket tartalmaz. Csak kis kezdőbetűk és számok érvényesek. - + Your hostname is too short. A hálózati név túl rövid. - + Your hostname is too long. A hálózati név túl hosszú. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. A hálózati név érvénytelen karaktereket tartalmaz. Csak betűk, számok és kötőjel érvényes. - - + + Your passwords do not match! A két jelszó nem egyezik! @@ -2017,22 +2264,28 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l &Névjegy - + <h1>Welcome to the %1 installer.</h1> <h1>Üdvözlet a %1 telepítőben.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Üdvözlet a Calamares %1 telepítőjében.</h1> + + + About %1 installer A %1 telepítőről - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>Minden jog fenntartva 2014-2015 Teo Mrnjavac <teo@kde.org><br/>;Köszönet: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> fejlesztés támogatói:<br/><a href="http://www.blue-systems.com/">Blue Systems</a> - szoftver, ami felszabadít. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>Minden jog fenntartva 2014-2017 Teo Mrnjavac <teo@kde.org>;<br/>Minden jog fenntartva 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Köszönet: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg és a <a href="https://www.transifex.com/calamares/calamares/" Calamares Fordító Csapat/a>. +<br/><a href="http://calamares.io/">Calamares</a> fejlesztés támogatói:<br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 támogatás @@ -2040,7 +2293,7 @@ Telepítés nem folytatható. <a href="#details">Részletek...&l WelcomeViewStep - + Welcome Üdvözlet diff --git a/lang/calamares_id.ts b/lang/calamares_id.ts index 95b24a965..53831e57b 100644 --- a/lang/calamares_id.ts +++ b/lang/calamares_id.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Pilih partisi untuk diciutkan: - - - - Allocate drive space by dragging the divider below: - Alokasikan ruang penyimpanan dengan menyeret pembatas di bawah: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Dengan operasi ini, partisi <b>%1</b> yang berisi %4 akan diciutkan menjadi %2MB dan sebuah partisi %3MB baru akan dibuat untuk %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Partisi sistem EFI tidak ditemukan di sistem ini. Silakan kembali dan gunakan pemartisian manual untuk menyetel %1. - - - - The EFI system partition at %1 will be used for starting %2. - Sistem partisi EFI pada %1 akan digunakan untuk memulai %2. - - - - EFI system partition: - Partisi sistem EFI - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Lingkungan boot</strong> pada sistem ini.<br><br>Sistem x86 kuno hanya mendukung <strong>BIOS</strong>.<br>Sistem moderen biasanya menggunakan <strong>EFI</strong>, tapi mungkin juga tampak sebagai BIOS jika dimulai dalam mode kompatibilitas. - + 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. - + Sistem ini telah dimulai dengan lingkungan boot <strong>EFI</strong>.<br><br>Untuk mengkonfigurasi startup dari lingkungan EFI, pemasang ini seharusnya memaparkan sebuah aplikasi boot loader, seperti <strong>GRUB</strong> atau <strong>systemd-boot</strong> pada sebuah <strong>EFI System Partition</strong>. Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus memilihnya atau menciptakannya pada milikmu. - + 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. - + Sistem ini dimulai dengan sebuah lingkungan boot <strong>BIOS</strong>.<br><br>Untuk mengkonfigurasi startup dari sebuah lingkungan BIOS, pemasang ini seharusnya memasang sebuah boot loader, seperti <strong>GRUB</strong>, baik di awal partisi atau pada <strong>Master Boot Record</strong> di dekat awalan tabel partisi (yang disukai). Ini adalah otomatis, kecuali kalau kamu memilih pemartisian manual, dalam beberapa kasus kamu harus menyetelnya pada milikmu. @@ -70,7 +37,7 @@ Do not install a boot loader - Jangan instal boot loader + Jangan pasang boot loader @@ -101,7 +68,28 @@ Modul - + + Type: + Tipe: + + + + + none + tidak ada + + + + Interface: + Antarmuka: + + + + Tools + Alat + + + Debug information Informasi debug @@ -111,7 +99,7 @@ Install - Instal + Pasang @@ -200,32 +188,32 @@ Keluaran: Calamares::PythonJob - + Running %1 operation. Menjalankan %1 operasi. - + Bad working directory path Jalur lokasi direktori tidak berjalan baik - + Working directory %1 for python job %2 is not readable. Direktori kerja %1 untuk penugasan python %2 tidak dapat dibaca. - + Bad main script file Berkas skrip utama buruk - + Main script file %1 for python job %2 is not readable. Berkas skrip utama %1 untuk penugasan python %2 tidak dapat dibaca. - + Boost.Python error in job "%1". Boost.Python mogok dalam penugasan "%1". @@ -233,88 +221,114 @@ Keluaran: Calamares::ViewManager - + &Back &Kembali - + &Next &Berikutnya - - + + &Cancel &Batal - - Cancel installation? - Batalkan instalasi? + + + Cancel installation without changing the system. + Batal pemasangan tanpa mengubah sistem yang ada. - + + Cancel installation? + Batalkan pemasangan? + + + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Apakah Anda benar-benar ingin membatalkan proses instalasi ini? -Penginstal akan ditutup dan semua perubahan akan hilang. + Apakah Anda benar-benar ingin membatalkan proses pemasangan ini? +Pemasangan akan ditutup dan semua perubahan akan hilang. - + + &Yes + &Ya + + + + &No + &Tidak + + + + &Close + &Tutup + + + Continue with setup? Lanjutkan dengan setelan ini? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - Penginstal %1 akan membuat perubahan ke disk Anda untuk menginstal %2.<br/><strong>Anda tidak dapat membatalkan perubahan tersebut.</strong> + Pemasang %1 akan membuat perubahan ke disk Anda untuk memasang %2.<br/><strong>Anda tidak dapat membatalkan perubahan tersebut.</strong> - + &Install now - &Instal sekarang + &Pasang sekarang - + Go &back &Kembali - - &Quit - &Keluar + + &Done + &Kelar - + + The installation is complete. Close the installer. + Pemasangan sudah lengkap. Tutup pemasang. + + + Error Kesalahan - + Installation Failed - Instalasi Gagal + Pemasangan Gagal CalamaresPython::Helper - + Unknown exception type Tipe pengecualian tidak dikenal - + unparseable Python error tidak dapat mengurai pesan kesalahan Python - + unparseable Python traceback tidak dapat mengurai penelusuran balik Python - + Unfetchable Python error. Tidak dapat mengambil pesan kesalahan Python. @@ -322,12 +336,12 @@ Penginstal akan ditutup dan semua perubahan akan hilang. CalamaresWindow - + %1 Installer - Penginstal %1 + Pemasang %1 - + Show debug information Tampilkan informasi debug @@ -335,12 +349,12 @@ Penginstal akan ditutup dan semua perubahan akan hilang. CheckFileSystemJob - + Checking file system on partition %1. Memeriksa sistem berkas pada partisi %1. - + The file system check on partition %1 failed. Pemeriksaan sistem berkas pada partisi %1 gagal. @@ -348,29 +362,29 @@ Penginstal akan ditutup dan semua perubahan akan hilang. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - Komputer ini tidak memenuhi syarat minimum untuk menginstal %1. -Penginstalan tidak dapat dilanjutkan. <a href=" + Komputer ini tidak memenuhi syarat minimum untuk memasang %1. +Pemasang tidak dapat dilanjutkan. <a href=" This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Komputer ini tidak memenuhi beberapa syarat yang direkomendasikan untuk menginstal %1. -Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. + Komputer ini tidak memenuhi beberapa syarat yang dianjurkan untuk memasang %1. +Pemasangan dapat dilanjutkan, namun beberapa fitur akan dinonfungsikan. - + This program will ask you some questions and set up %2 on your computer. Program ini akan mengajukan beberapa pertanyaan dan menyetel %2 pada komputer Anda. - + For best results, please ensure that this computer: Untuk hasil terbaik, mohon pastikan bahwa komputer ini: - + System requirements Kebutuhan sistem @@ -383,102 +397,109 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Isian - + After: Setelah: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Pemartisian manual</strong><br/>Anda bisa membuat atau mengubah ukuran partisi. - + Boot loader location: Lokasi Boot loader: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 akan disusutkan menjadi %2MB dan partisi baru %3MB akan dibuat untuk %4. - + Select storage de&vice: - + Pilih perangkat penyimpanan: - - - - + + + + Current: - + Saat ini: - + + Reuse %1 as home partition for %2. + Gunakan kembali %1 sebagai partisi home untuk %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Pilih sebuah partisi untuk diiris, kemudian seret bilah di bawah untuk mengubah ukuran</strong> - + <strong>Select a partition to install on</strong> - + <strong>Pilih sebuah partisi untuk memasang</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Sebuah partisi sistem EFI tidak ditemukan pada sistem ini. Silakan kembali dan gunakan pemartisian manual untuk mengeset %1. - + The EFI system partition at %1 will be used for starting %2. - + Partisi sistem EFI di %1 akan digunakan untuk memulai %2. - + EFI system partition: - + Partisi sistem EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Tampaknya media penyimpanan ini tidak mengandung sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Hapus disk</strong><br/>Aksi ini akan <font color="red">menghapus</font> semua berkas yang ada pada media penyimpanan terpilih. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini mengandung %1. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Pasang berdampingan dengan</strong><br/>Penginstal akan menciutkan sebuah partisi untuk memberi ruang bagi %1. + <strong>Pasang berdampingan dengan</strong><br/>Pemasang akan mengiris sebuah partisi untuk memberi ruang bagi %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Ganti sebuah partisi</strong><br/> Ganti partisi dengan %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini telah mengandung sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Media penyimpanan ini telah mengandung beberapa sistem operasi. Apa yang hendak Anda lakukan?<br/>Anda dapat menelaah dan mengkonfirmasi pilihan Anda sebelum dilakukan perubahan pada media penyimpanan. @@ -486,17 +507,17 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. ClearMountsJob - + Clear mounts for partitioning operations on %1 Lepaskan semua kaitan untuk operasi pemartisian pada %1 - + Clearing mounts for partitioning operations on %1. Melepas semua kaitan untuk operasi pemartisian pada %1 - + Cleared all mounts for %1 Semua kaitan dilepas untuk %1 @@ -504,22 +525,22 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. ClearTempMountsJob - + Clear all temporary mounts. Lepaskan semua kaitan sementara. - + Clearing all temporary mounts. Melepaskan semua kaitan sementara. - + Cannot get list of temporary mounts. Tidak bisa mendapatkan daftar kaitan sementara. - + Cleared all temporary mounts. Semua kaitan sementara dilepas. @@ -532,60 +553,70 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Buat Partisi - + + MiB + MiB + + + Partition &Type: Partisi & Tipe: - + &Primary &Utama - + E&xtended E&xtended - + Fi&le System: - + Sistem Berkas: - + Flags: - + Tanda: - + &Mount Point: &Titik Kait: - + Si&ze: Uku&ran: - - MB - MB + + En&crypt + Enkripsi - + Logical Logikal - + Primary Utama - + GPT GPT + + + Mountpoint already in use. Please select another one. + Titik-kait sudah digunakan. Silakan pilih yang lainnya. + CreatePartitionJob @@ -607,7 +638,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. The installer failed to create partition on disk '%1'. - Penginstal gagal untuk membuat partisi di disk '%1'. + Pemasang gagal untuk membuat partisi di disk '%1'. @@ -622,12 +653,12 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. The installer failed to create file system on partition %1. - Penginstal gagal membuat sistem berkas pada partisi %1. + Pemasang gagal membuat sistem berkas pada partisi %1. The installer failed to update partition table on disk '%1'. - Penginstal gagal memperbarui tabel partisi pada disk %1. + Pemasang gagal memperbarui tabel partisi pada disk %1. @@ -678,7 +709,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. The installer failed to create a partition table on %1. - Penginstal gagal membuat tabel partisi pada %1. + Pemasang gagal membuat tabel partisi pada %1. @@ -689,67 +720,67 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. CreateUserJob - + Create user %1 Buat pengguna %1 - + Create user <strong>%1</strong>. Buat pengguna <strong>%1</strong>. - + Creating user %1. Membuat pengguna %1. - + Sudoers dir is not writable. Direktori sudoers tidak dapat ditulis. - + Cannot create sudoers file for writing. Tidak dapat membuat berkas sudoers untuk ditulis. - + Cannot chmod sudoers file. Tidak dapat chmod berkas sudoers. - + Cannot open groups file for reading. Tidak dapat membuka berkas groups untuk dibaca. - + Cannot create user %1. Tidak dapat membuat pengguna %1. - + useradd terminated with error code %1. useradd dihentikan dengan kode kesalahan %1. - - Cannot set full name for user %1. - Tidak dapat menyetel nama lengkap untuk pengguna %1. + + Cannot add user %1 to groups: %2. + Tak bisa menambahkan pengguna %1 ke kelompok: %2. - - chfn terminated with error code %1. - chfn dihentikan dengan kode kesalahan %1. + + usermod terminated with error code %1. + usermod terhenti dengan kode galat %1. - + Cannot set home directory ownership for user %1. Tidak dapat menyetel kepemilikan direktori home untuk pengguna %1. - + chown terminated with error code %1. chown dihentikan dengan kode kesalahan %1. @@ -774,7 +805,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. The installer failed to delete partition %1. - Penginstal gagal untuk menghapus partisi %1. + Pemasang gagal untuk menghapus partisi %1. @@ -795,24 +826,24 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Tipe dari <strong>tabel partisi</strong> pada perangkat penyimpanan terpilih.<br><br>Satu-satunya cara untuk mengubah tabel partisi adalah dengan menyetip dan menciptakan ulang tabel partisi dari awal, yang melenyapkan semua data pada perangkat penyimpanan.<br>Pemasang ini akan menjaga tabel partisi saat ini kecuali kamu secara gamblang memilih sebaliknya.<br>Jika tidak yakin, pada sistem GPT modern lebih disukai. This device has a <strong>%1</strong> partition table. - + Perangkai in memiliki sebuah tabel partisi <strong>%1</strong>. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Ini adalah sebuah perangkat <strong>loop</strong>.<br><br>Itu adalah sebuah pseudo-device dengan tiada tabel partisi yang membuat sebuah file dapat diakses sebagai perangkat blok. Ini jenis set yang biasanya hanya berisi filesystem tunggal. 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. - Pemartisi <strong>tidak bisa mendeteksi tabel partisi apapun</strong> pada media penyimpanan terpilih.<br><br>Mungkin media ini tidak memiliki tabel partisi, atau tabel partisi yang ada telah korup atau tipenya tidak dikenal.<br>Penginstal dapat membuatkan partisi baru untuk Anda, baik secara otomatis atau melalui laman pemartisian manual. + Pemasang <strong>tidak bisa mendeteksi tabel partisi apapun</strong> pada media penyimpanan terpilih.<br><br>Mungkin media ini tidak memiliki tabel partisi, atau tabel partisi yang ada telah korup atau tipenya tidak dikenal.<br>Pemasang dapat membuatkan partisi baru untuk Anda, baik secara otomatis atau melalui laman pemartisian manual. @@ -822,7 +853,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. <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>Tipe tabel partisi ini adalah hanya baik pada sistem kuno yang mulai dari sebuah lingkungan boot <strong>BIOS</strong>. GPT adalah yang dianjurkan dalam beberapa kasus lainnya.<br><br><strong>Peringatan:</strong> tabel partisi MBR adalah sebuah standar era MS-DOS usang.<br>Hanya 4 partisi <em>primary</em> yang mungkin dapat diciptakan, dan yang 4, salah satu yang bisa dijadikan sebuah partisi <em>extended</em>, yang mana terdapat berisi beberapa partisi <em>logical</em>. @@ -833,6 +864,32 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Tulis konfigurasi LUKS untuk Dracut ke %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Lewati penulisan konfigurasi LUKS untuk Dracut: partisi "/" tidak dienkripsi + + + + Failed to open %1 + Gagal membuka %1 + + + + DummyCppJob + + + Dummy C++ Job + Tugas C++ Kosong + + EditExistingPartitionDialog @@ -871,50 +928,88 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Uku&ran: - + + MiB + MiB + + + Fi&le System: Sis&tem Berkas: - + Flags: - + Bendera: + + + + Mountpoint already in use. Please select another one. + Titik-kait sudah digunakan. Silakan pilih yang lainnya. + + + + EncryptWidget + + + Form + Formulir + + + + En&crypt system + &Sistem enkripsi + + + + Passphrase + Kata Sandi + + + + Confirm passphrase + Konfirmasi kata sandi + + + + Please enter the same passphrase in both boxes. + Silakan masukkan kata sandi yang sama di kedua kotak. FillGlobalStorageJob - + Set partition information Tetapkan informasi partisi - + Install %1 on <strong>new</strong> %2 system partition. - Instal %1 pada partisi sistem %2 <strong>baru</strong> + Pasang %1 pada partisi sistem %2 <strong>baru</strong> - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setel partisi %2 <strong>baru</strong> dengan tempat kait <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - Instal %2 pada sistem partisi %3 <strong>%1</strong>. + Pasang %2 pada sistem partisi %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setel partisi %3 <strong>%1</strong> dengan tempat kait <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - Instal boot loader di <strong>%1</strong>. + Pasang boot loader di <strong>%1</strong>. - + Setting up mount points. Menyetel tempat kait. @@ -932,60 +1027,75 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Mulai ulang seka&rang - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Selesai.</h1><br>%1 sudah terinstal di komputer Anda.<br/>Anda dapat memulai ulang ke sistem baru atau lanjut menggunakan lingkungan Live %2. + <h1>Selesai.</h1><br>%1 sudah terpasang di komputer Anda.<br/>Anda dapat memulai ulang ke sistem baru atau lanjut menggunakan lingkungan Live %2. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Pemasangan Gagal</h1><br/>%1 tidak bisa dipasang pada komputermu.<br/>Pesan galatnya adalah: %2. FinishedViewStep - + Finish Selesai + + + Installation Complete + Pemasangan Lengkap + + + + The installation of %1 is complete. + Pemasangan %1 telah lengkap. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Format partisi %1 (sistem berkas: %2, ukuran: %3 MB) pada %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Format <strong>%3MB</strong> partisi <strong>%1</strong> dengan berkas sistem <strong>%2</strong>. - + Formatting partition %1 with file system %2. Memformat partisi %1 dengan sistem berkas %2. - + The installer failed to format partition %1 on disk '%2'. - Penginstal gagal memformat partisi %1 pada disk '%2'.'%2'. + Pemasang gagal memformat partisi %1 pada disk '%2'.'%2'. - + Could not open device '%1'. Tidak dapat membuka piranti '%1'. - + Could not open partition table. Tidak dapat membuka tabel partisi. - + The installer failed to create file system on partition %1. - Penginstal gagal membuat sistem berkas pada partisi %1. + Pemasang gagal membuat sistem berkas pada partisi %1. - + The installer failed to update partition table on disk '%1'. - Penginstal gagal memperbarui tabel partisi pada disk '%1'. + Pemasang gagal memperbarui tabel partisi pada disk '%1'. @@ -995,14 +1105,14 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. Konsole not installed - Konsole tidak terinstal + Konsole tidak terpasang Please install the kde konsole and try again! - Mohon instal konsole KDE dan coba lagi! + Mohon pasang konsole KDE dan coba lagi! @@ -1021,12 +1131,12 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. KeyboardPage - + Set keyboard model to %1.<br/> Setel model papan ketik ke %1.<br/> - + Set keyboard layout to %1/%2. Setel tata letak papan ketik ke %1/%2. @@ -1034,7 +1144,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. KeyboardViewStep - + Keyboard Papan Ketik @@ -1042,15 +1152,25 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. LCLocaleDialog - + System locale setting Setelan lokal sistem - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Pengaturan system locale berpengaruh pada bahasa dan karakter pada beberapa elemen antarmuka Command Line. <br/>Pengaturan saat ini adalah <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1067,7 +1187,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - <h1>Persetujuan Lisensi</h1>Prosedur ini akan menginstal perangkat lunak proprietiary yang terkait dengan lisensi. + <h1>Persetujuan Lisensi</h1>Prosedur ini akan memasang perangkat lunak berpemilik yang terkait dengan lisensi. @@ -1133,41 +1253,52 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. LocalePage - - - The system locale is set to %1. - Lokal sistem diatur ke %1. + + The system language will be set to %1. + Bahasa sistem akan disetel ke %1. - + + The numbers and dates locale will be set to %1. + Nomor dan tanggal lokal akan disetel ke %1. + + + Region: Wilayah: - + Zone: Zona: - + + &Change... &Ubah... - + Set timezone to %1/%2.<br/> Setel zona waktu ke %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Memuat data lokasi... - + Location Lokasi @@ -1221,6 +1352,32 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Tidak dapat membuka perangkat %1 untuk pembatalan penyalinan. + + NetInstallPage + + + Name + Nama + + + + Description + Deskripsi + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Pemasangan Jaringan. (Dinonfungsikan: Tak mampu menarik daftar paket, periksa sambungan jaringanmu) + + + + NetInstallViewStep + + + Package selection + Pemilihan paket + + Page_Keyboard @@ -1257,7 +1414,6 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Nama apa yang ingin Anda gunakan untuk log in? - @@ -1267,7 +1423,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Jika lebih dari satu orang akan menggunakan komputer ini, Anda dapat mengatur beberapa akun setelah penginstalan.</small> + <small>Jika lebih dari satu orang akan menggunakan komputer ini, Anda dapat mengatur beberapa akun setelah pemasangan.</small> @@ -1343,7 +1499,12 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Partisi baru untuk %1 - + + New partition + Partisi baru + + + %1 %2 %1 %2 @@ -1363,22 +1524,22 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Partisi baru - + Name Nama - + File System Berkas Sistem - + Mount Point Lokasi Mount - + Size Ukuran @@ -1401,32 +1562,32 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.&Pulihkan Semua Perubahan - + New Partition &Table Partisi Baru & Tabel - + &Create &Buat - + &Edit &Sunting - + &Delete &Hapus - + Install boot &loader on: Pasang boot %loader pada: - + Are you sure you want to create a new partition table on %1? Apakah Anda yakin ingin membuat tabel partisi baru pada %1? @@ -1434,89 +1595,99 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. PartitionViewStep - + Gathering system information... Mengumpulkan informasi sistem... - + Partitions Paritsi - + Install %1 <strong>alongside</strong> another operating system. - Instal %1 <strong>berdampingan</strong> dengan sistem operasi lain. + Pasang %1 <strong>berdampingan</strong> dengan sistem operasi lain. - + <strong>Erase</strong> disk and install %1. - <strong>Hapus</strong> diska dan instal %1. + <strong>Hapus</strong> diska dan pasang %1. - + <strong>Replace</strong> a partition with %1. <strong>Ganti</strong> partisi dengan %1. - + <strong>Manual</strong> partitioning. Partisi <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - Instal %1 <strong>berdampingan</strong> dengan sistem operasi lain di disk <strong>%2</strong> (%3). + Pasang %1 <strong>berdampingan</strong> dengan sistem operasi lain di disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Hapus</strong> diska <strong>%2</strong> (%3) dan instal %1. + <strong>Hapus</strong> diska <strong>%2</strong> (%3) dan pasang %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ganti</strong> partisi pada diska <strong>%2</strong> (%3) dengan %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Partisi Manual</strong> pada diska <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: - + Saat ini: - + After: Sesudah: - + No EFI system partition configured - + Tiada partisi sistem EFI terkonfigurasi - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Untuk mengkonfigurasi sebuah partisi sistem EFI, pergi mundur dan pilih atau ciptakan sebuah filesystem FAT32 dengan bendera <strong>esp</strong> yang difungsikan dan titik kait <strong>%2</strong>.<br/><br/>Kamu bisa melanjutkan tanpa menyetel sebuah partisi sistem EFI tapi sistemmu mungkin gagal memulai. - + EFI system partition flag not set - + Bendera partisi sistem EFI tidak disetel - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Sebuah partisi sistem EFI perlu memulai %1.<br/><br/>Sebuah partisi telah dikonfigurasi dengan titik kait <strong>%2</strong> tapi bendera <strong>esp</strong> tersebut tidak disetel.<br/>Untuk mengeset bendera, pergi mundur dan editlah partisi.<br/><br/>Kamu bisa melanjutkan tanpa menyetel bendera tapi sistemmu mungkin gagal memulai. + + + + Boot partition not encrypted + Partisi boot tidak dienkripsi + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Sebuah partisi tersendiri telah terset bersama dengan sebuah partisi root terenkripsi, tapi partisi boot tidak terenkripsi.<br/><br/>Ada kekhawatiran keamanan dengan jenis setup ini, karena file sistem penting tetap pada partisi tak terenkripsi.<br/>Kamu bisa melanjutkan jika kamu menghendaki, tapi filesystem unlocking akan terjadi nanti selama memulai sistem.<br/>Untuk mengenkripsi partisi boot, pergi mundur dan menciptakannya ulang, memilih <strong>Encrypt</strong> di jendela penciptaan partisi. @@ -1533,20 +1704,25 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Standar - + unknown tidak diketahui: - + extended extended - + unformatted tidak terformat: + + + swap + swap + Unpartitioned space or unknown partition table @@ -1563,67 +1739,67 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Pilih tempat penginstalan %1.<br/><font color="red">Peringatan: </font>hal ini akan menghapus semua berkas di partisi terpilih. + Pilih tempat pemasangan %1.<br/><font color="red">Peringatan: </font>hal ini akan menghapus semua berkas di partisi terpilih. - + The selected item does not appear to be a valid partition. Item yang dipilih tidak tampak seperti partisi yang valid. - + %1 cannot be installed on empty space. Please select an existing partition. - %1 tidak dapat diinstal di ruang kosong. Mohon pilih partisi yang tersedia. + %1 tidak dapat dipasang di ruang kosong. Mohon pilih partisi yang tersedia. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 tidak bisa diinstal pada Partisi Extended. Mohon pilih Partisi Primari atau Logical yang tersedia. + %1 tidak bisa dipasang pada Partisi Extended. Mohon pilih Partisi Primary atau Logical yang tersedia. - + %1 cannot be installed on this partition. - %1 tidak dapat diinstal di partisi ini. + %1 tidak dapat dipasang di partisi ini. - + Data partition (%1) Partisi data (%1) - + Unknown system partition (%1) Partisi sistem tidak dikenal (%1) - + %1 system partition (%2) Partisi sistem %1 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partisi %1 teralu kecil untuk %2. Mohon pilih partisi dengan kapasitas minimal %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Tidak ditemui adanya Partisi EFI pada sistem ini. Mohon kembali dan gunakan Pemartisi Manual untuk 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. - <strong>%3</strong><br/><br/>%1 akan diinstal pada %2.<br/><font color="red">Peringatan: </font>seluruh data %2 akan hilang. + <strong>%3</strong><br/><br/>%1 akan dipasang pada %2.<br/><font color="red">Peringatan: </font>seluruh data %2 akan hilang. - + The EFI system partition at %1 will be used for starting %2. Partisi EFI pada %1 akan digunakan untuk memulai %2. - + EFI system partition: Partisi sistem EFI: @@ -1631,54 +1807,59 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. RequirementsChecker - + Gathering system information... Mengumpulkan informasi sistem... - + has at least %1 GB available drive space memiliki paling sedikit %1 GB ruang drive tersedia - + There is not enough drive space. At least %1 GB is required. Ruang drive tidak cukup. Butuh minial %1 GB. - + has at least %1 GB working memory memiliki paling sedikit %1 GB memori bekerja - + The system does not have enough working memory. At least %1 GB is required. Sistem ini tidak memiliki memori yang cukup. Butuh minial %1 GB. - + is plugged in to a power source terhubung dengan sumber listrik - + The system is not plugged in to a power source. Sistem tidak terhubung dengan sumber listrik. - + is connected to the Internet terkoneksi dengan internet - + The system is not connected to the Internet. Sistem tidak terkoneksi dengan internet. - + The installer is not running with administrator rights. - Penginstal tidak dijalankan dengan kewenangan administrator. + Pemasang tidak dijalankan dengan kewenangan administrator. + + + + The screen is too small to display the installer. + Layar terlalu kecil untuk menampilkan pemasang. @@ -1720,7 +1901,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. The installer failed to resize partition %1 on disk '%2'. - Penginstal gagal untuk merubah ukuran partisi %1 pada disk '%2'. + Pemasang gagal untuk merubah ukuran partisi %1 pada disk '%2'. @@ -1774,73 +1955,129 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Model papan ketik ditetapkan ke %1, tata letak ke %2-%3 - + Failed to write keyboard configuration for the virtual console. - Gagal menulis konfigurasi papan ketik untuk virtual console. + Gagal menulis konfigurasi keyboard untuk virtual console. - - + + + Failed to write to %1 Gagal menulis ke %1. - + Failed to write keyboard configuration for X11. - Gagal menulis konfigurasi papan ketik untuk X11. + Gagal menulis konfigurasi keyboard untuk X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + Gagal menulis konfigurasi keyboard ke direktori /etc/default yang ada. SetPartFlagsJob - + Set flags on partition %1. - + Setel bendera pada partisi %1. - + + Set flags on %1MB %2 partition. + Setel bendera pada partisi %2 %1MB. + + + + Set flags on new partition. + Setel bendera pada partisi baru. + + + Clear flags on partition <strong>%1</strong>. - + Bersihkan bendera pada partisi <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Bersihkan bendera pada partisi <strong>%2</strong> %1MB. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Bersihkan bendera pada partisi baru. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Benderakan partisi <strong>%1</strong> sebagai <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag partisi <strong>%2</strong> %1MB sebagai <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Benderakan partisi baru sebagai <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Membersihkan bendera pada partisi <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Membersihkan bendera pada partisi <strong>%2</strong> %1MB. + + + + Clearing flags on new partition. + Membersihkan bendera pada partisi baru. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Menyetel bendera <strong>%2</strong> pada partisi <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Menyetel bendera <strong>%3</strong> pada partisi <strong>%2</strong> %1MB. + + + + Setting flags <strong>%1</strong> on new partition. + Menyetel bendera <strong>%1</strong> pada partisi baru. + + + The installer failed to set flags on partition %1. - + Pemasang gagal menetapkan bendera pada partisi %1. - + Could not open device '%1'. - + Tidak dapat membuka perangkat '%1'. - + Could not open partition table on device '%1'. - + Tidak dapat membuka tabel partisi pada perangkat '%1'. - + Could not find partition '%1'. - + Tidak dapat menemukan partisi '%1'. @@ -1859,32 +2096,42 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. SetPasswordJob - + Set password for user %1 Setel sandi untuk pengguna %1 - + Setting password for user %1. Mengatur sandi untuk pengguna %1. - + Bad destination system path. Jalur lokasi sistem tujuan buruk. - + rootMountPoint is %1 rootMountPoint adalah %1 - + + Cannot disable root account. + Tak bisa menonfungsikan akun root. + + + + passwd terminated with error code %1. + passwd terhenti dengan kode galat %1. + + + Cannot set password for user %1. Tidak dapat menyetel sandi untuk pengguna %1. - + usermod terminated with error code %1. usermod dihentikan dengan kode kesalahan %1. @@ -1917,12 +2164,12 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.Pembuatan tautan gagal, target: %1; nama tautan: %2 - + Cannot set timezone, Tidak bisa menetapkan zona waktu. - + Cannot open /etc/timezone for writing Tidak bisa membuka /etc/timezone untuk penulisan @@ -1932,7 +2179,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. This is an overview of what will happen once you start the install procedure. - Berikut adalah tinjauan mengenai yang akan terjadi setelah Anda memulai prosedur instalasi. + Berikut adalah tinjauan mengenai yang akan terjadi setelah Anda memulai prosedur pemasangan. @@ -1946,33 +2193,33 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. UsersPage - + Your username is too long. Nama pengguna Anda terlalu panjang. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Nama pengguna Anda berisi karakter yang tidak sah. Hanya huruf kecil dan angka yang diperbolehkan. - + Your hostname is too short. Hostname Anda terlalu pendek. - + Your hostname is too long. Hostname Anda terlalu panjang. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Hostname Anda berisi karakter yang tidak sah. Hanya huruf kecil, angka, dan strip yang diperbolehkan. - - + + Your passwords do not match! Sandi Anda tidak sama! @@ -2018,22 +2265,27 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan.&Tentang - + <h1>Welcome to the %1 installer.</h1> - <h1>Selamat datang di penginstal %1.</h1> + <h1>Selamat datang di pemasang %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Selamat datang di Calamares pemasang untuk %1.</h1> + + + About %1 installer - Tentang penginstal %1 + Tentang pemasang %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + %1<br/><strong>%2<br/>untuk %3</strong><br/><br/>Hak Cipta 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Hak Cipta 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Terimakasih kepada: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg dan <a href="https://www.transifex.com/calamares/calamares/">regu penerjemah Calamares</a>.<br/><br/>Pengembangan <a href="http://calamares.io/">Calamares</a> disponsori oleh<br/> <a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Dukungan %1 @@ -2041,7 +2293,7 @@ Penginstalan dapat dilanjutkan, namun beberapa fitur akan ditiadakan. WelcomeViewStep - + Welcome Selamat Datang diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts index 217a31dbb..bab0ad264 100644 --- a/lang/calamares_is.ts +++ b/lang/calamares_is.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Veldu disksneið sem þú vilt minnka: - - - - Allocate drive space by dragging the divider below: - Úthlutaðu diskplássi með því að draga til aðgreininn hér fyrir neðan: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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 kerfis stýring á %1 mun vera notuð til að byrja %2. - - - - EFI system partition: - EFI kerfisdisksneið: - - 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. @@ -70,7 +37,7 @@ Do not install a boot loader - Setja ekki upp ræsistjórann + Ekki setja upp ræsistjóra @@ -88,7 +55,7 @@ GlobalStorage - Alsherja geymsla + VíðværGeymsla @@ -101,7 +68,28 @@ Forritseiningar - + + Type: + Tegund: + + + + + none + ekkert + + + + Interface: + Viðmót: + + + + Tools + Verkfæri + + + Debug information Villuleitarupplýsingar @@ -137,26 +125,26 @@ External command crashed - Ytri stjórn hrundi + Ytri skipun hrundi Command %1 crashed. Output: %2 - Stjórn %1 hrundi. -Framleiðsla: + Skipun %1 hrundi. +Frálag: %2 External command failed to start - Ytri stjórn mistókst að byrja + Ytri skipun ræstist ekki Command %1 failed to start. - Skipun %1 mistókst að byrja. + Skipun %1 ræstist ekki. @@ -171,127 +159,153 @@ Framleiðsla: External command failed to finish - Ytri stjórn mistókst að ljúka + Ytri skipun lauk ekki Command %1 failed to finish in %2s. Output: %3 - Stjórn %1 mistókst að klára í %2 -Framleiðsla: + Skipun %1 lauk ekki í %2 +Frálag: %3 External command finished with errors - Ytri stjórn skipun kláruð með villum + Ytri skipun kláruð með villum Command %1 finished with exit code %2. Output: %3 - Stjórn %1 kláruð með hætti kóða %2. -Framleiðsla: + Skipun %1 lauk með lokakóða %2 +Frálag: %3 Calamares::PythonJob - + Running %1 operation. Keyri %1 aðgerð. - + Bad working directory path Röng slóð á vinnumöppu - + Working directory %1 for python job %2 is not readable. - Vinnslu mappa %1 fyrir python vinnslu %2 er ekki lesanleg. + Vinnslumappa %1 fyrir python-verkið %2 er ekki lesanleg. - + Bad main script file Röng aðal-skriftuskrá - + Main script file %1 for python job %2 is not readable. - Aðal-skriftuskrá %1 fyrir python verkið %2 er ekki lesanleg. + Aðal-skriftuskrá %1 fyrir python-verkið %2 er ekki lesanleg. - + Boost.Python error in job "%1". - Boost.Python villa í vinnslu "%1". + Boost.Python villa í verkinu "%1". Calamares::ViewManager - + &Back &Til baka - + &Next &Næst - - + + &Cancel &Hætta við - + + + Cancel installation without changing the system. + Hætta við uppsetningu ánþess að breyta kerfinu. + + + Cancel installation? Hætta við uppsetningu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Viltu virkilega að hætta við að setja upp ferli? -Uppsetning mun hætta og allar breytingar tapast. + Viltu virkilega að hætta við núverandi uppsetningarferli? +Uppsetningarforritið mun hætta og allar breytingar tapast. - + + &Yes + &Já + + + + &No + &Nei + + + + &Close + &Loka + + + Continue with setup? Halda áfram með uppsetningu? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - %1 Uppsetningin er um að gera breytingar á diskinum til að setja upp %2.<br/><strong>Þú munt ekki vera fær um að losa þessar breytingar.</strong> + %1 uppsetningarforritið er um það bil að gera breytingar á diskinum til að setja upp %2.<br/><strong>Þú munt ekki geta afturkallað þessar breytingar.</strong> - + &Install now Setja &inn núna - + Go &back Fara til &baka - - &Quit - &Hætta + + &Done + &Búið - + + The installation is complete. Close the installer. + Uppsetning er lokið. Lokaðu uppsetningarforritinu. + + + Error Villa - + Installation Failed Uppsetning mistókst @@ -299,35 +313,35 @@ Uppsetning mun hætta og allar breytingar tapast. CalamaresPython::Helper - + Unknown exception type - Óþekkt undantekning gerð + Óþekkt tegund fráviks - + unparseable Python error óþáttanleg Python villa - + unparseable Python traceback óþáttanleg Python reki - + Unfetchable Python error. - Ónáanleg Python villa. + Ósækjanleg Python villa. CalamaresWindow - + %1 Installer %1 uppsetningarforrit - + Show debug information Birta villuleitarupplýsingar @@ -335,20 +349,20 @@ Uppsetning mun hætta og allar breytingar tapast. CheckFileSystemJob - + Checking file system on partition %1. Athuga skráakerfi á %1 disksneiðinni. - + The file system check on partition %1 failed. - Skráakerfis athugun á skiptingu %1 mistókst. + Prófun skráakerfis á disksneið %1 mistókst. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Þessi tölva uppfyllir ekki lágmarkskröfur um uppsetningu %1.<br/>Uppsetningin getur ekki haldið áfram. <a href="#details">Upplýsingar...</a> @@ -358,17 +372,17 @@ Uppsetning mun hætta og allar breytingar tapast. Þessi tölva uppfyllir ekki lágmarkskröfur um uppsetningu %1.<br/>Uppsetningin getur haldið áfram, en sumir eiginleikar gætu verið óvirk. - + This program will ask you some questions and set up %2 on your computer. Þetta forrit mun spyrja þig nokkurra spurninga og setja upp %2 á tölvunni þinni. - + For best results, please ensure that this computer: Fyrir bestu niðurstöður, skaltu tryggja að þessi tölva: - + System requirements Kerfiskröfur @@ -381,102 +395,109 @@ Uppsetning mun hætta og allar breytingar tapast. Eyðublað - + After: Eftir: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Leiðarvísir skiptingu</strong><br/>Þú getur búið til eða breytt stærð skiptingu sjálf(ur). + <strong>Handvirk disksneiðing</strong><br/>Þú getur búið til eða breytt stærð disksneiða sjálf(ur). - + Boot loader location: Staðsetning ræsistjóra - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - %1 verður minnkað í %2MB og nýtt %3MB skipting verður búin til %4. + %1 verður minnkuð í %2MB og ný %3MB disksneið verður búin til fyrir %4. - + Select storage de&vice: Veldu geymslu tæ&ki: - - - - + + + + Current: Núverandi: - + + Reuse %1 as home partition for %2. + Endurnota %1 sem heimasvæðis disksneið fyrir %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>Veldu hvaða skipting að skreppa saman, svo draga að neðsta bar til að endurstækka</strong> + <strong>Veldu disksneið til að minnka, dragðu síðan botnstikuna til að breyta stærðinni</strong> - + <strong>Select a partition to install on</strong> - <strong>Veldu disksnið til að setja upp á </strong> + <strong>Veldu disksneið til að setja upp á </strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. EFI kerfisdisksneið á %1 mun verða notuð til að ræsa %2. - + EFI system partition: EFI kerfisdisksneið: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur mörg stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Eyða disk</strong><br/>Þetta mun <font color="red">eyða</font> öllum gögnum á þessu valdna geymslu tæki. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur %1 á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Setja upp með</strong><br/>Uppsetningin mun minnka disksnið til að búa til pláss fyrir %1. + <strong>Setja upp samhliða</strong><br/>Uppsetningarforritið mun minnka disksneið til að búa til pláss fyrir %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>leysa af hólmi</strong><br/>Kemur í stað skiptingu með %1. + <strong>Skipta út disksneið</strong><br/>Skiptir disksneið út með %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Þetta geymslu tæki hefur mörg stýrikerfi á sér. Hvað viltu gera?<br/>Þú verður að vera fær um að yfirfara og staðfesta val þitt áður en breytingar eru gerðar til geymslu tæki. @@ -484,40 +505,40 @@ Uppsetning mun hætta og allar breytingar tapast. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 - + Hreinsaði alla tengipunkta fyrir %1 ClearTempMountsJob - + Clear all temporary mounts. Hreinsa alla bráðabirgðatengipunkta. - + Clearing all temporary mounts. Hreinsa alla bráðabirgðatengipunkta. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. Hreinsaði alla bráðabirgðatengipunkta. @@ -530,67 +551,77 @@ Uppsetning mun hætta og allar breytingar tapast. Búa til disksneið - + + MiB + MiB + + + Partition &Type: &Tegund disksneiðar: - + &Primary &Aðal - + E&xtended Útví&kkuð - + Fi&le System: - + Skráa&kerfi: - + Flags: - + Flögg: - + &Mount Point: Tengi&punktur: - + Si&ze: St&ærð: - - MB - MB + + En&crypt + &Dulrita - + Logical Rökleg - + Primary Aðal - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - Búa til nýtt %2MB skiptingu á %4 (%3) með skrár kerfi %1. + Búa til nýja %2MB disksneið á %4 (%3) með %1 skráakerfi. @@ -605,7 +636,7 @@ Uppsetning mun hætta og allar breytingar tapast. The installer failed to create partition on disk '%1'. - Uppsetningin mistósk að búa til disksnið á disk '%1'. + Uppsetningarforritinu mistókst að búa til disksneið á diski '%1'. @@ -620,12 +651,12 @@ Uppsetning mun hætta og allar breytingar tapast. The installer failed to create file system on partition %1. - + Uppsetningarforritinu mistókst að búa til skráakerfi á disksneið %1. The installer failed to update partition table on disk '%1'. - Uppsetningin mistósk að uppfæra disksniðstöflu á disk '%1'. + Uppsetningarforritinu mistókst að uppfæra disksneið á diski '%1'. @@ -638,7 +669,7 @@ Uppsetning mun hætta og allar breytingar tapast. Creating a new partition table will delete all existing data on the disk. - Búa til nýja disksniðtöflu mun eyða öllum gögnum á harðadiskinum. + Gerð nýrrar disksneiðatöflu mun eyða öllum gögnum á diskinum. @@ -666,7 +697,7 @@ Uppsetning mun hætta og allar breytingar tapast. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Búa til nýja <strong>%1</strong> disksniðstöflu á <strong>%2</strong> (%3). + Búa til nýja <strong>%1</strong> disksneiðatöflu á <strong>%2</strong> (%3). @@ -676,7 +707,7 @@ Uppsetning mun hætta og allar breytingar tapast. The installer failed to create a partition table on %1. - Uppsetning mistóskt að búa til disksneiðstöflu á %1. + Uppsetningarforritinu mistókst að búa til disksneiðatöflu á diski '%1'. @@ -687,67 +718,67 @@ Uppsetning mun hætta og allar breytingar tapast. CreateUserJob - + Create user %1 Búa til notanda %1 - + Create user <strong>%1</strong>. Búa til notanda <strong>%1</strong>. - + Creating user %1. Bý til notanda %1. - + Sudoers dir is not writable. Sudoers dir er ekki skrifanleg. - + Cannot create sudoers file for writing. - + Get ekki búið til sudoers skrá til að lesa. - + Cannot chmod sudoers file. Get ekki chmod sudoers skrá. - + Cannot open groups file for reading. Get ekki opnað hópa skrá til að lesa. - + Cannot create user %1. Get ekki búið til notanda %1. - + useradd terminated with error code %1. - + useradd endaði með villu kóðann %1. - - Cannot set full name for user %1. - Get ekki sett fullt nafn fyrir notanda %1. + + Cannot add user %1 to groups: %2. + Get ekki bætt við notanda %1 til hóps: %2. - - chfn terminated with error code %1. - chfn endaði með villu kóðann %1. + + usermod terminated with error code %1. + usermod endaði með villu kóðann %1. - + Cannot set home directory ownership for user %1. Get ekki stillt heimasvæðis eignarhald fyrir notandann %1. - + chown terminated with error code %1. chown endaði með villu kóðann %1. @@ -772,12 +803,12 @@ Uppsetning mun hætta og allar breytingar tapast. The installer failed to delete partition %1. - Uppsetningin mistókst að eyða disksnið %1. + Uppsetningarforritinu mistókst að eyða disksneið %1. Partition (%1) and device (%2) do not match. - Skipting (%1) og tæki (%2) passa ekki saman. + Disksneið (%1) og tæki (%2) passa ekki saman. @@ -793,7 +824,7 @@ Uppsetning mun hætta og allar breytingar tapast. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Uppsetning mun hætta og allar breytingar tapast. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Skrifa LUKS stillingar fyrir Dracut til %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + Tókst ekki að opna %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ Uppsetning mun hætta og allar breytingar tapast. St&ærð: - + + MiB + MiB + + + Fi&le System: Skráaker&fi: - + Flags: - + Flögg: + + + + Mountpoint already in use. Please select another one. + Tengipunktur er þegar í notkun. Veldu einhvern annan. + + + + EncryptWidget + + + Form + Eyðublað + + + + En&crypt system + &Dulrita kerfi + + + + Passphrase + Lykilorð + + + + Confirm passphrase + Staðfesta lykilorð + + + + Please enter the same passphrase in both boxes. + Vinsamlegast sláðu inn sama lykilorðið í báða kassana. FillGlobalStorageJob - + Set partition information Setja upplýsingar um disksneið - + Install %1 on <strong>new</strong> %2 system partition. Setja upp %1 á <strong>nýja</strong> %2 disk sneiðingu. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setja upp <strong>nýtt</strong> %2 snið með tengipunkti <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Setja upp %2 á %3 disk sneiðingu <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setja upp %3 snið <strong>%1</strong> með tengipunkti <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Setja ræsistjórann upp á <strong>%1</strong>. - + Setting up mount points. Set upp tengipunkta. @@ -930,60 +1025,75 @@ Uppsetning mun hætta og allar breytingar tapast. &Endurræsa núna - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Allt klárt.</h1><br/>%1 hefur verið sett upp á tölvunni þinni.<br/>Þú getur nú endurræst í nýja kerfið, eða halda áfram að nota %2 Lifandi umhverfi. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Ljúka + + + Installation Complete + Uppsetningu lokið + + + + The installation of %1 is complete. + Uppsetningu af %1 er lokið. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Forsníða disksneið %1 (skráakerfi: %2, stærð: %3 MB) á %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Forsníða <strong>%3MB</strong> disksneið <strong>%1</strong> með <strong>%2</strong> skráakerfinu. - + Formatting partition %1 with file system %2. Forsníða disksneið %1 með %2 skráakerfinu. - + The installer failed to format partition %1 on disk '%2'. - + Uppsetningarforritinu mistókst að forsníða disksneið %1 á diski '%2'. - + Could not open device '%1'. Gat ekki opnað tæki '%1'. - + Could not open partition table. Gat ekki opnað disksneiðatöflu. - + The installer failed to create file system on partition %1. - + Uppsetningarforritinu mistókst að búa til skráakerfi á disksneið %1. - + The installer failed to update partition table on disk '%1'. - Uppsetningin mistósk að uppfæra disksniðstöflu á disk '%1'. + Uppsetningarforritinu mistókst að uppfæra disksneiðatöflu á diski '%1'. @@ -1019,12 +1129,12 @@ Uppsetning mun hætta og allar breytingar tapast. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1032,7 +1142,7 @@ Uppsetning mun hætta og allar breytingar tapast. KeyboardViewStep - + Keyboard Lyklaborð @@ -1040,15 +1150,25 @@ Uppsetning mun hætta og allar breytingar tapast. LCLocaleDialog - + System locale setting Staðfærsla kerfisins stilling - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + &Hætta við + + + + &OK + &Í lagi + LicensePage @@ -1131,41 +1251,52 @@ Uppsetning mun hætta og allar breytingar tapast. LocalePage - - - The system locale is set to %1. - Staðfærsla kerfisins er sett sem %1. + + The system language will be set to %1. + Tungumál kerfisins verður sett sem %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Hérað: - + Zone: Svæði: - + + &Change... &Breyta... - + Set timezone to %1/%2.<br/> Setja tímabelti sem %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Hleð inn staðsetningargögnum... - + Location Staðsetning @@ -1219,6 +1350,32 @@ Uppsetning mun hætta og allar breytingar tapast. + + NetInstallPage + + + Name + Heiti + + + + Description + Lýsing + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + Valdir pakkar + + Page_Keyboard @@ -1255,7 +1412,6 @@ Uppsetning mun hætta og allar breytingar tapast. Hvaða nafn vilt þú vilt nota til að skrá þig inn? - @@ -1341,7 +1497,12 @@ Uppsetning mun hætta og allar breytingar tapast. Ný disksneið fyrir %1 - + + New partition + Ný disksneið + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Uppsetning mun hætta og allar breytingar tapast. Ný disksneið - + Name Heiti - + File System Skráakerfi - + Mount Point Tengipunktur - + Size Stærð @@ -1399,32 +1560,32 @@ Uppsetning mun hætta og allar breytingar tapast. &Afturkalla allar breytingar - + New Partition &Table - Ný Skipting &Tafla + Ný disksneiðatafla - + &Create &Búa til - + &Edit &Breyta - + &Delete &Eyða - + Install boot &loader on: Setja upp ræsistjóran á: - + Are you sure you want to create a new partition table on %1? Ertu viss um að þú viljir búa til nýja disksneið á %1? @@ -1432,90 +1593,100 @@ Uppsetning mun hætta og allar breytingar tapast. PartitionViewStep - + Gathering system information... Söfnun kerfis upplýsingar... - + Partitions Disksneiðar - + Install %1 <strong>alongside</strong> another operating system. Setja upp %1 <strong>ásamt</strong> ásamt öðru stýrikerfi. - + <strong>Erase</strong> disk and install %1. <strong>Eyða</strong> disk og setja upp %1. - + <strong>Replace</strong> a partition with %1. - <strong>Skipta</strong> skiptingu með %1. - - - - <strong>Manual</strong> partitioning. - <strong>Handvirkt</strong> skipting. + <strong>Skipta út</strong> disksneið með %1. + <strong>Manual</strong> partitioning. + <strong>Handvirk</strong> disksneiðaskipting. + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Uppsetning %1 <strong>með</strong> öðru stýrikerfi á disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Eyða</strong> disk <strong>%2</strong> (%3) og setja upp %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - <strong>Skipta</strong> skiptingu á disk <strong>%2</strong> (%3) með %1. + <strong>Skipta út</strong> disksneið á diski <strong>%2</strong> (%3) með %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - <strong>Handvikt</strong> skipting á disk <strong>%1</strong> (%2). + <strong>Handvirk</strong> disksneiðaskipting á diski <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskur <strong>%1</strong> (%2) - + Current: Núverandi: - + After: Eftir: - + No EFI system partition configured - + Ekkert EFI kerfisdisksneið stillt - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Uppsetning mun hætta og allar breytingar tapast. Sjálfgefið - + unknown óþekkt - + extended útvíkkuð - + unformatted ekki forsniðin + + + swap + swap diskminni + Unpartitioned space or unknown partition table @@ -1561,67 +1737,67 @@ Uppsetning mun hætta og allar breytingar tapast. Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Veldu hvar á að setja upp %1.<br/><font color="red">Aðvörun: </font>þetta mun eyða öllum skrám á valinn skiptingu. + Veldu hvar á að setja upp %1.<br/><font color="red">Aðvörun: </font>þetta mun eyða öllum skrám á valinni disksneið. - + The selected item does not appear to be a valid partition. - + Valið atriði virðist ekki vera gild disksneið. - + %1 cannot be installed on empty space. Please select an existing partition. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + %1 cannot be installed on this partition. %1 er hægt að setja upp á þessari disksneið. - + Data partition (%1) Gagnadisksneið (%1) - + Unknown system partition (%1) Óþekkt kerfisdisksneið (%1) - + %1 system partition (%2) %1 kerfisdisksneið (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Disksneið %1 er of lítil fyrir %2. Vinsamlegast veldu disksneið með að lámark %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>EFI kerfisdisksneið er hvergi að finna á þessu kerfi. Vinsamlegast farðu til baka og notaðu handvirka skiptingu til að setja upp %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 mun vera sett upp á %2.<br/><font color="red">Aðvörun: </font>öll gögn á disksneið %2 mun verða eytt. - + The EFI system partition at %1 will be used for starting %2. EFI kerfis stýring á %1 mun vera notuð til að byrja %2. - + EFI system partition: EFI kerfisdisksneið: @@ -1629,54 +1805,59 @@ Uppsetning mun hætta og allar breytingar tapast. RequirementsChecker - + Gathering system information... Söfnun kerfis upplýsingar... - + has at least %1 GB available drive space hefur að minnsta kosti %1 GB laus á harðadisk - + There is not enough drive space. At least %1 GB is required. Það er ekki nóg diskapláss. Að minnsta kosti %1 GB eru þörf. - + has at least %1 GB working memory hefur að minnsta kosti %1 GB vinnsluminni - + The system does not have enough working memory. At least %1 GB is required. Kerfið hefur ekki nóg vinnsluminni. Að minnsta kosti %1 GB er krafist. - + is plugged in to a power source er í sambandi við aflgjafa - + The system is not plugged in to a power source. Kerfið er ekki í sambandi við aflgjafa. - + is connected to the Internet er tengd við Internetið - + The system is not connected to the Internet. Kerfið er ekki tengd við internetið. - + The installer is not running with administrator rights. - Uppsetningin er ekki keyrandi með kerfisstjórnar réttindi. + Uppsetningarforritið er ekki keyrandi með kerfisstjóraheimildum. + + + + The screen is too small to display the installer. + Skjárinn er of lítill til að birta uppsetningarforritið. @@ -1702,23 +1883,23 @@ Uppsetning mun hætta og allar breytingar tapast. Resize partition %1. - + Breyti stærð disksneiðar %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Breyta stærð <strong>%2MB</strong> skipting <strong>%1</strong> til <strong>%3MB</strong>. + Breyta stærð <strong>%2MB</strong> disksneiðar <strong>%1</strong> í <strong>%3MB</strong>. Resizing %2MB partition %1 to %3MB. - Breyti stærð %2MB skiptingu %1 til %3MB. + Breyti stærð %2MB disksneiðar %1 í %3MB. The installer failed to resize partition %1 on disk '%2'. - + Uppsetningarforritinu mistókst að breyta stærð disksneiðar %1 á diski '%2'. @@ -1736,7 +1917,7 @@ Uppsetning mun hætta og allar breytingar tapast. Partitioning - + Partasneiðing @@ -1744,17 +1925,17 @@ Uppsetning mun hætta og allar breytingar tapast. Set hostname %1 - + Setja vélarheiti %1 Set hostname <strong>%1</strong>. - + Setja vélarheiti <strong>%1</strong>. Setting hostname %1. - + Stilla vélarheiti %1. @@ -1772,73 +1953,129 @@ Uppsetning mun hætta og allar breytingar tapast. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Failed to write keyboard configuration for the virtual console. - - + + + Failed to write to %1 Tókst ekki að skrifa %1 - + Failed to write keyboard configuration for X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Uppsetningarforritinu mistókst að setja flögg á disksneið %1. - + Could not open device '%1'. - + Gat ekki opnað tæki '%1'. - + Could not open partition table on device '%1'. - + Gat ekki opnað disksneiðatöflu á tækinu '%1'. - + Could not find partition '%1'. - + Gat ekki fundið disksneiðina '%1'. @@ -1857,34 +2094,44 @@ Uppsetning mun hætta og allar breytingar tapast. SetPasswordJob - + Set password for user %1 Gerðu lykilorð fyrir notanda %1 - + Setting password for user %1. Geri lykilorð fyrir notanda %1. - + Bad destination system path. - + rootMountPoint is %1 - + + Cannot disable root account. + Ekki er hægt að aftengja kerfisstjóra reikning. + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Get ekki sett lykilorð fyrir notanda %1. - + usermod terminated with error code %1. - + usermod endaði með villu kóðann %1. @@ -1915,12 +2162,12 @@ Uppsetning mun hætta og allar breytingar tapast. - + Cannot set timezone, Get ekki sett tímasvæði, - + Cannot open /etc/timezone for writing Get ekki opnað /etc/timezone til að skrifa. @@ -1944,33 +2191,33 @@ Uppsetning mun hætta og allar breytingar tapast. UsersPage - + Your username is too long. Notandanafnið þitt er of langt. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Notandanafnið þitt inniheldur ógilda stafi. Aðeins lágstöfum og númer eru leyfð. - + Your hostname is too short. - + Notandanafnið þitt er of stutt. - + Your hostname is too long. - + Notandanafnið þitt er of langt. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Lykilorð passa ekki! @@ -2016,22 +2263,27 @@ Uppsetning mun hætta og allar breytingar tapast. &Um - + <h1>Welcome to the %1 installer.</h1> - <h1>Velkomin(n) til %1 uppsetningu.</h1> + <h1>Velkomin í %1 uppsetningarforritið.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Velkomin(n) til Calamares uppsetningar fyrir %1</h1> + + + About %1 installer Um %1 uppsetningarforrrit - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Þakkir til: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini og Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> þróunin er styrkt af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating hugbúnað. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1 stuðningur @@ -2039,7 +2291,7 @@ Uppsetning mun hætta og allar breytingar tapast. WelcomeViewStep - + Welcome Velkomin(n) diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 638f89754..18d89b0db 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Scegli la partizione da ridimensionare: - - - - Allocate drive space by dragging the divider below: - Assegna spazio su disco trascinando il separatore sottostante: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Con questa operazione, la partizione <strong>%1</strong> che contiene %4 verrà ridotta a %2MB e verrà creata una nuova partizione su %5 da %3MB. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Non è stato possibile trovare alcuna partizione EFI su questo sistema. Torna indietro e usa il partizionamento manuale per configurarla %1. - - - - The EFI system partition at %1 will be used for starting %2. - La partizione EFI a %1 verrà usata per avviare %2. - - - - EFI system partition: - Partizione EFI di sistema: - - 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. - L'<strong>ambiente di avvio - boot</strong> di questo sistema. <br><br>I vecchi sistemi x86 supportano solo <strong>BIOS</strong>. <bt>I sistemi moderni normalmente usano <strong>EFI</strong> ma possono anche usare BIOS se l'avvio viene eseguito in modalità compatibile. + L'<strong>ambiente di avvio</strong> di questo sistema. <br><br>I vecchi sistemi x86 supportano solo <strong>BIOS</strong>. <bt>I sistemi moderni normalmente usano <strong>EFI</strong> ma possono anche usare BIOS se l'avvio viene eseguito in modalità compatibile. - + 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. Il sistema è stato avviato con un ambiente di boot <strong>EFI</strong>.<br><br>Per configurare l'avvio da un ambiente EFI, il programma d'installazione deve inserire un boot loader come <strong>GRUB</strong> o <strong>systemd-boot</strong> su una <strong>EFI System Partition</strong>. Ciò avviene automaticamente, a meno che non si scelga il partizionamento manuale che permette di scegliere un proprio boot loader personale. - + 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. ll sistema è stato avviato con un ambiente di boot <strong>BIOS</strong>.<br><br>Per configurare l'avvio da un ambiente BIOS, il programma d'installazione deve installare un boot loader come <strong>GRUB</strong> all'inizio di una partizione o nel <strong>Master Boot Record</strong> vicino all'origine della tabella delle partizioni (preferito). Ciò avviene automaticamente, a meno che non si scelga il partizionamento manuale che permette di fare una configurazione personale. @@ -101,7 +68,28 @@ Moduli - + + Type: + Tipo: + + + + + none + nessuna + + + + Interface: + Interfaccia: + + + + Tools + Strumenti + + + Debug information Informazioni di debug @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. Operazione %1 in esecuzione. - + Bad working directory path Il percorso della cartella corrente non è corretto - + Working directory %1 for python job %2 is not readable. La cartella corrente %1 per l'attività di Python %2 non è accessibile. - + Bad main script file File dello script principale non valido - + Main script file %1 for python job %2 is not readable. Il file principale dello script %1 per l'attività di python %2 non è accessibile. - + Boost.Python error in job "%1". Errore da Boost.Python nell'operazione "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Indietro - + &Next &Avanti - - + + &Cancel &Annulla - + + + Cancel installation without changing the system. + + + + Cancel installation? Annullare l'installazione? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Si vuole davvero annullare l'installazione in corso? Il programma d'installazione sarà terminato e tutte le modifiche andranno perse. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Procedere con la configurazione? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Il programma d'nstallazione %1 sta per eseguire delle modifiche al tuo disco per poter installare %2.<br/><strong> Non sarà possibile annullare tali modifiche.</strong> - + &Install now &Installa adesso - + Go &back &Indietro - - &Quit - &Esci + + &Done + - + + The installation is complete. Close the installer. + + + + Error Errore - + Installation Failed Installazione non riuscita @@ -299,22 +313,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CalamaresPython::Helper - + Unknown exception type Tipo di eccezione sconosciuto - + unparseable Python error Errore Python non definibile - + unparseable Python traceback Traceback Python non definibile - + Unfetchable Python error. Errore di Python non definibile. @@ -322,12 +336,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CalamaresWindow - + %1 Installer %1 Programma di installazione - + Show debug information Mostra le informazioni di debug @@ -335,12 +349,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CheckFileSystemJob - + Checking file system on partition %1. Controllo del file system sulla partizione %1 - + The file system check on partition %1 failed. Il controllo del file system sulla partizione %1 non è riuscito. @@ -348,7 +362,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CheckerWidget - + 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> @@ -358,17 +372,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Questo computer non soddisfa alcuni requisiti consigliati per l'installazione di %1. <br/>L'installazione può proseguire ma alcune funzionalità potrebbero non essere disponibili. - + This program will ask you some questions and set up %2 on your computer. Questo programma chiederà alcune informazioni e configurerà %2 sul computer. - + For best results, please ensure that this computer: Per ottenere prestazioni ottimali, assicurarsi che questo computer: - + System requirements Requisiti di sistema @@ -381,102 +395,109 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Modulo - + After: Dopo: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Partizionamento manuale</strong><br/>Si possono creare o ridimensionare le partizioni manualmente. - + Boot loader location: Posizionamento del boot loader: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 sarà ridotta a %2MB e una nuova partizione di %3MB sarà creata per %4. - + Select storage de&vice: - Seleziona un dispositivo di me&moria: + Selezionare un dispositivo di me&moria: - - - - + + + + Current: Corrente: - - <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>Seleziona una partizione da ridurre, trascina la barra inferiore per ridimensionare</strong> + + Reuse %1 as home partition for %2. + Riutilizzare %1 come partizione home per &2. - + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + <strong>Selezionare una partizione da ridurre, trascina la barra inferiore per ridimensionare</strong> + + + <strong>Select a partition to install on</strong> <strong>Selezionare la partizione sulla quale si vuole installare</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Impossibile trovare una partizione EFI di sistema. Si prega di tornare indietro ed effettuare un partizionamento manuale per configurare %1. - + The EFI system partition at %1 will be used for starting %2. La partizione EFI di sistema su %1 sarà usata per avviare %2. - + EFI system partition: Partizione EFI di sistema: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria non sembra contenere alcun sistema operativo. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>Cancella disco</strong><br/>Questo <font color="red">cancellerà</font> tutti i dati attualmente presenti sul dispositivo di memoria. + <strong>Cancellare disco</strong><br/>Questo <font color="red">cancellerà</font> tutti i dati attualmente presenti sul dispositivo di memoria. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria ha %1. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Installa a fianco</strong><br/>Il programma di installazione ridurrà una partizione per dare spazio a %1. + <strong>Installare a fianco</strong><br/>Il programma di installazione ridurrà una partizione per dare spazio a %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>Sostituisci una partizione</strong><br/>Sostituisce una partizione con %1. + <strong>Sostituire una partizione</strong><br/>Sostituisce una partizione con %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria contenere già un sistema operativo. Come si vuole procedere?<br/>Si potranno comunque rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Questo dispositivo di memoria contenere diversi sistemi operativi. Come si vuole procedere?<br/>Comunque si potranno rivedere e confermare le scelte prima di apportare i cambiamenti al dispositivo. @@ -484,17 +505,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ClearMountsJob - + Clear mounts for partitioning operations on %1 - Rimuovi i punti di mount per operazioni di partizionamento su %1 + Rimuovere i punti di mount per operazioni di partizionamento su %1 - + Clearing mounts for partitioning operations on %1. Rimozione dei punti di mount per le operazioni di partizionamento su %1. - + Cleared all mounts for %1 Rimossi tutti i punti di mount per %1 @@ -502,22 +523,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno ClearTempMountsJob - + Clear all temporary mounts. - Rimuovi tutti i punti di mount temporanei. + Rimuovere tutti i punti di mount temporanei. - + Clearing all temporary mounts. Rimozione di tutti i punti di mount temporanei. - + Cannot get list of temporary mounts. Non è possibile ottenere la lista dei punti di mount temporanei. - + Cleared all temporary mounts. Rimossi tutti i punti di mount temporanei. @@ -527,75 +548,85 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Create a Partition - Crea una partizione + Creare una partizione - + + MiB + + + + Partition &Type: &Tipo di partizione: - + &Primary &Primaria - + E&xtended E&stesa - + Fi&le System: Fi&le System: - + Flags: Flag: - + &Mount Point: Punto di &mount: - + Si&ze: &Dimensione: - - MB - MB + + En&crypt + Cr&iptare - + Logical Logica - + Primary Primaria - + GPT GPT + + + Mountpoint already in use. Please select another one. + Il punto di mount è già in uso. Sceglierne un altro. + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - Crea una nuova partizione da %2MB su %4 (%3) con file system %1. + Creare una nuova partizione da %2MB su %4 (%3) con file system %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - Crea una nuova partizione da <strong>%2MB</strong> su <strong>%4</strong> (%3) con file system <strong>%1</strong>. + Creare una nuova partizione da <strong>%2MB</strong> su <strong>%4</strong> (%3) con file system <strong>%1</strong>. @@ -633,7 +664,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Create Partition Table - Crea tabella delle partizioni + Creare la tabella delle partizioni @@ -661,12 +692,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Create new %1 partition table on %2. - Crea una nuova tabella delle partizioni %1 su %2. + Creare una nuova tabella delle partizioni %1 su %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Crea una nuova tabella delle partizioni <strong>%1</strong> su <strong>%2</strong> (%3). + Creare una nuova tabella delle partizioni <strong>%1</strong> su <strong>%2</strong> (%3). @@ -687,67 +718,67 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno CreateUserJob - + Create user %1 - Crea l'utente %1 + Creare l'utente %1 - + Create user <strong>%1</strong>. - Crea utente <strong>%1</strong> + Creare l'utente <strong>%1</strong> - + Creating user %1. Creazione utente %1. - + Sudoers dir is not writable. La cartella sudoers non è scrivibile. - + Cannot create sudoers file for writing. Impossibile creare il file sudoers in scrittura. - + Cannot chmod sudoers file. Impossibile eseguire chmod sul file sudoers. - + Cannot open groups file for reading. Impossibile aprire il file groups in lettura. - + Cannot create user %1. Impossibile creare l'utente %1. - + useradd terminated with error code %1. useradd si è chiuso con codice di errore %1. - - Cannot set full name for user %1. - Impossibile impostare il nome completo per l'utente %1. + + Cannot add user %1 to groups: %2. + Impossibile aggiungere l'utente %1 ai gruppi: %2. - - chfn terminated with error code %1. - chfn si è chiuso con codice di errore %1. + + usermod terminated with error code %1. + usermod è terminato con codice di errore: %1. - + Cannot set home directory ownership for user %1. Impossibile impostare i diritti sulla cartella home per l'utente %1. - + chown terminated with error code %1. chown si è chiuso con codice di errore %1. @@ -757,12 +788,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Delete partition %1. - Cancella la partizione %1. + Cancellare la partizione %1. Delete partition <strong>%1</strong>. - Cancella la partizione <strong>%1</strong>. + Cancellare la partizione <strong>%1</strong>. @@ -793,7 +824,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Il tipo di <strong>tabella delle partizioni</strong> attualmente presente sul dispositivo di memoria selezionato.<br><br>L'unico modo per cambiare il tipo di tabella delle partizioni è quello di cancellarla e ricrearla da capo, distruggendo tutti i dati sul dispositivo.<br>Il programma di installazione conserverà l'attuale tabella a meno che no si scelga diversamente.<br>Se non si è sicuri, sui sistemi moderni si preferisce GPT. @@ -831,6 +862,32 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Scrittura della configurazione LUKS per Dracut su %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Salto scrittura della configurazione LUKS per Dracut: la partizione "/" non è criptata + + + + Failed to open %1 + Impossibile aprire %1 + + + + DummyCppJob + + + Dummy C++ Job + Processo Dummy C++ + + EditExistingPartitionDialog @@ -846,12 +903,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Keep - &Mantieni + &Mantenere Format - Formatta + Formattare @@ -869,50 +926,88 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Di&mensione: - + + MiB + + + + Fi&le System: Fi&le System: - + Flags: Flag: + + + Mountpoint already in use. Please select another one. + Il punto di mount è già in uso. Sceglierne un altro. + + + + EncryptWidget + + + Form + Modulo + + + + En&crypt system + Cr&iptare il sistema + + + + Passphrase + Frase di accesso + + + + Confirm passphrase + Confermare frase di accesso + + + + Please enter the same passphrase in both boxes. + Si prega di immettere la stessa frase di accesso in entrambi i riquadri. + FillGlobalStorageJob - + Set partition information - Imposta informazioni partizione + Impostare informazioni partizione - + Install %1 on <strong>new</strong> %2 system partition. - Installa %1 sulla <strong>nuova</strong> partizione di sistema %2. + Installare %1 sulla <strong>nuova</strong> partizione di sistema %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - Imposta la <strong>nuova</strong> %2 partizione con punto di mount <strong>%1</strong>. + Impostare la <strong>nuova</strong> %2 partizione con punto di mount <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - Installa %2 sulla partizione di sistema %3 <strong>%1</strong>. + Installare %2 sulla partizione di sistema %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - Imposta la partizione %3 <strong>%1</strong> con punto di montaggio <strong>%2</strong>. + Impostare la partizione %3 <strong>%1</strong> con punto di montaggio <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - Installa il boot loader su <strong>%1</strong>. + Installare il boot loader su <strong>%1</strong>. - + Setting up mount points. Impostazione dei punti di mount. @@ -927,61 +1022,76 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Restart now - &Riavvia ora + &Riavviare ora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tutto fatto.</ h1><br/>%1 è stato installato sul computer.<br/>Ora è possibile riavviare il sistema, o continuare a utilizzare l'ambiente Live di %2 . + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Termina + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - Formatta partizione %1 (file system: %2, dimensioni: %3 MB) su %4 + Formattare la partizione %1 (file system: %2, dimensioni: %3 MB) su %4 - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formatta la partizione <strong>%1</strong> da <strong>%3MB</strong> con file system <strong>%2</strong>. + Formattare la partizione <strong>%1</strong> da <strong>%3MB</strong> con file system <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formattazione della partizione %1 con file system %2. - + The installer failed to format partition %1 on disk '%2'. Il programma di installazione non è riuscito a formattare la partizione %1 sul disco '%2'. - + Could not open device '%1'. Impossibile aprire il dispositivo '%1'. - + Could not open partition table. Impossibile aprire la tabella delle partizioni. - + The installer failed to create file system on partition %1. Il programma di installazione non è riuscito a creare il file system sulla partizione %1. - + The installer failed to update partition table on disk '%1'. Il programma di installazione non è riuscito ad aggiornare la tabella delle partizioni sul disco '%1'. @@ -1019,20 +1129,20 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno KeyboardPage - + Set keyboard model to %1.<br/> - Imposta il modello di tastiera a %1.<br/> + Impostare il modello di tastiera a %1.<br/> - + Set keyboard layout to %1/%2. - Imposta il layout della tastiera a %1%2. + Impostare il layout della tastiera a %1%2. KeyboardViewStep - + Keyboard Tastiera @@ -1040,15 +1150,25 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LCLocaleDialog - + System locale setting Impostazioni di localizzazione del sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Le impostazioni di localizzazione del sistema influenzano la lingua e il set di caratteri per alcuni elementi di interfaccia da linea di comando. <br/>L'impostazione attuale è <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1070,7 +1190,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - Leggi attentamente le licenze d'uso (EULA) riportate sopra.<br/>Se non ne accetti i termini, la procedura di configurazione non può proseguire. + Leggere attentamente le licenze d'uso (EULA) riportate sopra.<br/>Se non ne accetti i termini, la procedura di configurazione non può proseguire. @@ -1080,7 +1200,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - Leggi attentamente le licenze d'uso (EULA) riportate sopra.<br/>Se non ne accetti i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. + Si prega di leggere attentamente gli accordi di licenza dell'utente finale (EULA) riportati sopra.</br>Se non se ne accettano i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. @@ -1131,41 +1251,52 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno LocalePage - - - The system locale is set to %1. - La localizzazione di sistema è impostata a %1. + + The system language will be set to %1. + La lingua di sistema sarà impostata a %1. - + + The numbers and dates locale will be set to %1. + I numeri e le date locali saranno impostati a %1. + + + Region: Area: - + Zone: Zona: - + + &Change... &Cambia... - + Set timezone to %1/%2.<br/> Imposta il fuso orario a %1%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Caricamento dei dati di posizione... - + Location Posizione @@ -1175,7 +1306,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Move file system of partition %1. - Sposta il file system della partizione %1. + Spostare il file system della partizione %1. @@ -1219,6 +1350,32 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Impossibile aprire il dispositivo %1 per annullare la copia. + + NetInstallPage + + + Name + Nome + + + + Description + Descrizione + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Installazione di rete. (Disabilitata: impossibile recuperare le liste dei pacchetti, controllare la connessione di rete) + + + + NetInstallViewStep + + + Package selection + Selezione del pacchetto + + Page_Keyboard @@ -1234,7 +1391,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Type here to test your keyboard - Digita qui per provare la tastiera + Digitare qui per provare la tastiera @@ -1247,15 +1404,14 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno What is your name? - Qual'è il tuo nome? + Qual è il tuo nome? What name do you want to use to log in? - Che nome vuoi usare per autenticarti? + Quale nome usare per l'autenticazione? - @@ -1270,12 +1426,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Choose a password to keep your account safe. - Scegli una password per rendere sicuro il tuo account. + Scegliere una password per rendere sicuro il tuo account. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>Inserisci la password due volte per controllare eventuali errori di battitura. Una buona password contiene lettere, numeri e segni di punteggiatura. Deve essere lunga almeno otto caratteri e dovrebbe essere cambiata a intervalli regolari.</small> + <small>Inserire la password due volte per controllare eventuali errori di battitura. Una buona password contiene lettere, numeri e segni di punteggiatura. Deve essere lunga almeno otto caratteri e dovrebbe essere cambiata a intervalli regolari.</small> @@ -1290,22 +1446,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Log in automatically without asking for the password. - Accedi automaticamente senza chiedere la password. + Accedere automaticamente senza chiedere la password. Use the same password for the administrator account. - Usa la stessa password per l'account amministratore. + Usare la stessa password per l'account amministratore. Choose a password for the administrator account. - Scegli una password per l'account dell'amministratore. + Scegliere una password per l'account dell'amministratore. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - <small>Inserisci la password due volte per controllare eventuali errori di battitura.</small> + <small>Inserire la password due volte per controllare eventuali errori di battitura.</small> @@ -1341,7 +1497,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Nuova partizione per %1 - + + New partition + Nuova partizione + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Nuova partizione - + Name Nome - + File System File System - + Mount Point Punto di mount - + Size Dimensione @@ -1399,123 +1560,133 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Annulla tutte le modifiche - + New Partition &Table Nuova &Tabella delle partizioni - + &Create - &Crea + &Creare - + &Edit - &Modifica + &Modificare - + &Delete - &Cancella + &Cancellare - + Install boot &loader on: - Installa il boot &loader su: + Installare il boot &loader su: - + Are you sure you want to create a new partition table on %1? - Sei sicuro di voler creare una nuova tabella delle partizioni su %1? + Si è sicuri di voler creare una nuova tabella delle partizioni su %1? PartitionViewStep - + Gathering system information... Raccolta delle informazioni di sistema... - + Partitions Partizioni - - - Install %1 <strong>alongside</strong> another operating system. - Installa %1 <strong>a fianco</strong> di un altro sistema operativo. - - - - <strong>Erase</strong> disk and install %1. - <strong>Cancella</strong> il disco e installa %1. - - - - <strong>Replace</strong> a partition with %1. - <strong>Sostituisci</strong> una partizione con %1. - + Install %1 <strong>alongside</strong> another operating system. + Installare %1 <strong>a fianco</strong> di un altro sistema operativo. + + + + <strong>Erase</strong> disk and install %1. + <strong>Cancellare</strong> il disco e installare %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>Sostituire</strong> una partizione con %1. + + + <strong>Manual</strong> partitioning. Partizionamento <strong>manuale</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - Installa %1 <strong>a fianco</strong> di un altro sistema operativo sul disco<strong>%2</strong> (%3). + Installare %1 <strong>a fianco</strong> di un altro sistema operativo sul disco<strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Cancella</strong> il disco <strong>%2</strong> (%3) e installa %1. + <strong>Cancellare</strong> il disco <strong>%2</strong> (%3) e installa %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - <strong>Sostituisci</strong> una partizione sul disco <strong>%2</strong> (%3) con %1. + <strong>Sostituire</strong> una partizione sul disco <strong>%2</strong> (%3) con %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partizionamento <strong>manuale</strong> sul disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Corrente: - + After: Dopo: - + No EFI system partition configured Nessuna partizione EFI di sistema è configurata - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Una partizione EFI di sistema è necessaria per avviare %1.<br/><br/>Per configurare una partizione EFI di sistema, tornare indietro e selezionare o creare un filesystem FAT32 con il flag <strong>esp</strong> abilitato e un punto di mount <strong>%2</strong>.<br/><br/>Si può continuare senza configurare una partizione EFI ma il sistema rischia di non avviarsi. - + EFI system partition flag not set Il flag della partizione EFI di sistema non è impostato. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. Una partizione EFI di sistema è necessaria per avviare %1.<br/><br/>Una partizione è stata configurata con punto di mount <strong>%2</strong> ma il relativo flag <strong>esp</strong> non è impostato.<br/>Per impostare il flag, tornare indietro e modificare la partizione.<br/><br/>Si può continuare senza impostare il flag ma il sistema rischia di non avviarsi. + + + Boot partition not encrypted + Partizione di avvio non criptata + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + E' stata configurata una partizione di avvio non criptata assieme ad una partizione root criptata. <br/><br/>Ci sono problemi di sicurezza con questo tipo di configurazione perchè dei file di sistema importanti sono tenuti su una partizione non criptata.<br/>Si può continuare se lo si desidera ma dopo ci sarà lo sblocco del file system, durante l'avvio del sistema.<br/>Per criptare la partizione di avvio, tornare indietro e ricrearla, selezionando <strong>Criptare</strong> nella finestra di creazione della partizione. + QObject @@ -1531,20 +1702,25 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Default - + unknown sconosciuto - + extended estesa - + unformatted non formattata + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Selezionare dove installare %1.<br/><font color="red">Attenzione: </font>questo eliminerà tutti i file dalla partizione selezionata. - + The selected item does not appear to be a valid partition. L'elemento selezionato non sembra essere una partizione valida. - + %1 cannot be installed on empty space. Please select an existing partition. %1 non può essere installato su spazio non partizionato. Si prega di selezionare una partizione esistente. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 non può essere installato su una partizione estesa. Si prega di selezionare una partizione primaria o logica esistente. - + %1 cannot be installed on this partition. %1 non può essere installato su questa partizione. - + Data partition (%1) Partizione dati (%1) - + Unknown system partition (%1) Partizione di sistema sconosciuta (%1) - + %1 system partition (%2) %1 partizione di sistema (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>La partizione %1 è troppo piccola per %2. Si prega di selezionare una partizione con capacità di almeno %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Nessuna partizione EFI di sistema rilevata. Si prega di tornare indietro e usare il partizionamento manuale per configurare %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 sarà installato su %2.<br/><font color="red">Attenzione: </font>tutti i dati sulla partizione %2 saranno persi. - + The EFI system partition at %1 will be used for starting %2. La partizione EFI di sistema a %1 sarà usata per avviare %2. - + EFI system partition: Partizione EFI di sistema: @@ -1629,62 +1805,67 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno RequirementsChecker - + Gathering system information... Raccolta delle informazioni di sistema... - + has at least %1 GB available drive space ha almeno %1 GB di spazio disponibile - + There is not enough drive space. At least %1 GB is required. Non c'è spazio sufficiente sul dispositivo. E' richiesto almeno %1 GB. - + has at least %1 GB working memory ha almeno %1 GB di memoria - + The system does not have enough working memory. At least %1 GB is required. Il sistema non dispone di sufficiente memoria. E' richiesto almeno %1 GB. - + is plugged in to a power source è collegato a una presa di alimentazione - + The system is not plugged in to a power source. Il sistema non è collegato a una presa di alimentazione. - + is connected to the Internet è connesso a Internet - + The system is not connected to the Internet. Il sistema non è connesso a internet. - + The installer is not running with administrator rights. Il programma di installazione non è stato avviato con i diritti di amministrazione. + + + The screen is too small to display the installer. + Schermo troppo piccolo per mostrare il programma d'installazione. + ResizeFileSystemJob Resize file system on partition %1. - Ridimensiona il file system sulla partizione %1. + Ridimensionare il file system sulla partizione %1. @@ -1702,12 +1883,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Resize partition %1. - Ridimensiona partizione %1. + Ridimensionare la partizione %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Ridimensiona la partizione <strong>%1</strong> da <strong>%2MB</strong> a <strong>%3MB</strong>. + Ridimensionare la partizione <strong>%1</strong> da <strong>%2MB</strong> a <strong>%3MB</strong>. @@ -1744,17 +1925,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Set hostname %1 - Imposta hostname %1 + Impostare hostname %1 Set hostname <strong>%1</strong>. - Imposta hostname <strong>%1</strong>. + Impostare hostname <strong>%1</strong>. Setting hostname %1. - Imposta hostname %1. + Impostare hostname %1. @@ -1772,71 +1953,127 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Imposta il modello di tastiera a %1, con layout %2-%3 - + Failed to write keyboard configuration for the virtual console. Impossibile scrivere la configurazione della tastiera per la console virtuale. - - + + + Failed to write to %1 Impossibile scrivere su %1 - + Failed to write keyboard configuration for X11. Impossibile scrivere la configurazione della tastiera per X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Impossibile scrivere la configurazione della tastiera nella cartella /etc/default. + SetPartFlagsJob - + Set flags on partition %1. Impostare i flag sulla partizione: %1. - + + Set flags on %1MB %2 partition. + Impostare i flag sulla partizione %1MB %2. + + + + Set flags on new partition. + Impostare i flag sulla nuova partizione. + + + Clear flags on partition <strong>%1</strong>. Rimuovere i flag sulla partizione <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Rimuovere i flag dalla partizione %1MB <strong>%2</strong>. + + + + Clear flags on new partition. + Rimuovere i flag dalla nuova partizione. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Flag di partizione <strong>%1</strong> come <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag di partizione %1MB <strong>%2</strong> come <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Flag della nuova partizione come <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Rimozione dei flag sulla partizione <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Rimozione del flag dalla partizione %1MB <strong>%2</strong>. + + + + Clearing flags on new partition. + Rimozione dei flag dalla nuova partizione. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Impostazione dei flag <strong>%2</strong> sulla partizione <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Impostazione dei flag <strong>%3</strong> sulla partizione %1MB <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Impostazione dei flag <strong>%1</strong> sulla nuova partizione. + + + The installer failed to set flags on partition %1. Impossibile impostare i flag sulla partizione %1. - + Could not open device '%1'. Impossibile accedere al dispositivo '%1'. - + Could not open partition table on device '%1'. Impossibile accedere alla tabella delle partizioni sul dispositivo '%1'. - + Could not find partition '%1'. Impossibile trovare la partizione '%1'. @@ -1846,43 +2083,53 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Update geometry of partition %1. - Aggiorna la geometria della partizione %1. + Aggiornare la struttura della partizione %1. Failed to change the geometry of the partition. - Impossibile modificare la geometria della partizione. + Impossibile cambiare la struttura della partizione. SetPasswordJob - + Set password for user %1 - Imposta la password per l'utente %1 + Impostare la password per l'utente %1 - + Setting password for user %1. - Imposta la password per l'utente %1. + Impostare la password per l'utente %1. - + Bad destination system path. Percorso di destinazione del sistema errato. - + rootMountPoint is %1 punto di mount per root è %1 - + + Cannot disable root account. + Impossibile disabilitare l'account di root. + + + + passwd terminated with error code %1. + passwd è terminato con codice di errore %1. + + + Cannot set password for user %1. Impossibile impostare la password per l'utente %1. - + usermod terminated with error code %1. usermod si è chiuso con codice di errore %1. @@ -1892,7 +2139,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Set timezone to %1/%2 - Imposta il fuso orario su %1%2 + Impostare il fuso orario su %1%2 @@ -1912,15 +2159,15 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno Link creation failed, target: %1; link name: %2 - Creazione del collegamento non riuscita, destinazione: %1; nome collegamento: %2 + Impossibile creare il link, destinazione: %1; nome del link: %2 - + Cannot set timezone, Impossibile impostare il fuso orario, - + Cannot open /etc/timezone for writing Impossibile aprire il file /etc/timezone in scrittura @@ -1930,7 +2177,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno This is an overview of what will happen once you start the install procedure. - Ecco una panoramica delle modifiche che saranno effettuate una volta avviata la procedura di installazione. + Una panoramica delle modifiche che saranno effettuate una volta avviata la procedura di installazione. @@ -1944,35 +2191,35 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno UsersPage - + Your username is too long. Il nome utente è troppo lungo. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - Il tuo nome utente contiene caratteri non validi. Sono ammessi solo lettere minuscole e numeri. + Il nome utente contiene caratteri non validi. Sono ammessi solo lettere minuscole e numeri. - + Your hostname is too short. - Il tuo hostname è troppo corto. + Hostname è troppo corto. - + Your hostname is too long. - Il tuo hostname è troppo lungo. + Hostname è troppo lungo. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - Il tuo hostname contiene caratteri non validi. Sono ammessi solo lettere, numeri e trattini. + Hostname contiene caratteri non validi. Sono ammessi solo lettere, numeri e trattini. - - + + Your passwords do not match! - Le tue password non corrispondono! + Le password non corrispondono! @@ -2016,22 +2263,27 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno &Informazioni su - + <h1>Welcome to the %1 installer.</h1> <h1>Benvenuto nel programma d'installazione di %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Benvenuti nel programma di installazione Calamares per %1.</h1> + + + About %1 installer Informazioni sul programma di installazione %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Ringraziamenti a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini e Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> sviluppo sponsorizzato da<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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support supporto %1 @@ -2039,7 +2291,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno WelcomeViewStep - + Welcome Benvenuti diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 636df17f0..320cfa3b0 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - 縮小するパーティションを選択してください: - - - - Allocate drive space by dragging the divider below: - 下の仕切りをドラッグして、ドライブの空き容量を割り当ててください: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - この操作によって、%4 を含むパーティション <strong>%1</strong>が %2MB に縮小し、%5 のための新しい %3MBのパーティションが作成されます。 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - システムにEFIシステムパーティションが存在しません。%1 のセットアップのため、元に戻り、手動パーティショニングを使用してください。 - - - - The EFI system partition at %1 will be used for starting %2. - %1 上の EFI システムパーテイションは %2 の開始時に使用します。 - - - - EFI system partition: - EFI システムパーティション: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. このシステムの <strong>ブート環境。</strong><br><br>古いx86システムは<strong>BIOS</strong>のみサポートしています。<br>最近のシステムは通常<strong>EFI</strong>を使用しますが、互換モードが起動できる場合はBIOSが現れる場合もあります。 - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. このシステムは<strong>EFI</strong> ブート環境で起動しました。<br><br>EFI環境からの起動について設定するためには、<strong>EFI システムパーティション</strong>に <strong>GRUB</strong> あるいは <strong>systemd-boot</strong> といったブートローダーアプリケーションを配置しなければなりません。手動によるパーティショニングを選択する場合、EFI システムパーティションを選択あるいは作成しなければなりません。そうでない場合は、この操作は自動的に行われます。 - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. このシステムは <strong>BIOS</strong> ブート環境で起動しました。<br><br> BIOS環境からの起動について設定するためには、パーティションの開始位置あるいはパーティションテーブルの開始位置の近く(推奨)にある<strong>マスターブートレコード</strong>に <strong>GRUB</strong> のようなブートローダーをインストールしなければなりません。手動によるパーティショニングを選択する場合はユーザー自身で設定しなければなりません。そうでない場合は、この操作は自動的に行われます。 @@ -70,7 +37,7 @@ Do not install a boot loader - ブートローダーをインストールしない + ブートローダーをインストールしません @@ -101,7 +68,28 @@ モジュール - + + Type: + Type: + + + + + none + なし + + + + Interface: + インターフェース: + + + + Tools + ツール + + + Debug information デバッグ情報 @@ -137,7 +125,7 @@ External command crashed - 外部コマンドがクラッシュしました + 外部コマンドのクラッシュ @@ -192,7 +180,7 @@ Output: Command %1 finished with exit code %2. Output: %3 - コマンド %1 がコード %2 によって終了しました + コマンド %1 がコード %2 によって終了 出力: %3 @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. %1 操作を実行中。 - + Bad working directory path - 作業ディレクトリパスが不正です + 不正なワーキングディレクトリパス - + Working directory %1 for python job %2 is not readable. python ジョブ %2 において作業ディレクトリ %1 が読み込めません。 - + Bad main script file 不正なメインスクリプトファイル - + Main script file %1 for python job %2 is not readable. python ジョブ %2 におけるメインスクリプトファイル %1 が読み込めません。 - + Boost.Python error in job "%1". ジョブ "%1" での Boost.Python エラー。 @@ -233,101 +221,127 @@ Output: Calamares::ViewManager - + &Back - 戻る (&B) + 戻る(&B) - + &Next - 次へ (&N) + 次へ(&N) - - + + &Cancel - 中止 (&C) + 中止(&C) - + + + Cancel installation without changing the system. + システムを変更しないでインストールを中止します。 + + + Cancel installation? - インストールを中止しますか? + インストールを中止しますか? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 本当に現在の作業を中止しますか? すべての変更が取り消されます。 - - Continue with setup? - セットアップを続行しますか? + + &Yes + はい(&Y) - + + &No + いいえ(&N) + + + + &Close + 閉じる(&C) + + + + Continue with setup? + セットアップを続行しますか? + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 インストーラーは %2 をインストールするためにディスクの内容を変更しようとします。<br/><strong>これらの変更は取り消しできなくなります。</strong> - + &Install now - 今すぐインストール (&I) + 今すぐインストール(&I) - + Go &back - 戻る (&B) + 戻る(&B) - - &Quit - 終了 (&Q) + + &Done + 実行(&D) - + + The installation is complete. Close the installer. + インストールが完了しました。インストーラーを閉じます。 + + + Error エラー - + Installation Failed インストールに失敗 CalamaresPython::Helper - - - Unknown exception type - 不明な例外タイプ - - - - unparseable Python error - 解析不能な Python エラー - + Unknown exception type + 不明な例外型 + + + + unparseable Python error + 解析不能なPythonエラー + + + unparseable Python traceback 解析不能な Python トレースバック - + Unfetchable Python error. - 取得不能な Python エラー。 + 取得不能なPythonエラー。 CalamaresWindow - + %1 Installer %1 インストーラー - + Show debug information デバッグ情報を表示 @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. パーティション %1 のファイルシステムをチェック中。 - + The file system check on partition %1 failed. %1 ファイルシステムのチェックに失敗しました。 @@ -348,27 +362,27 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> このコンピュータは %1 をインストールするための最低要件を満たしていません。<br/>インストールは続行できません。<a href="#details">詳細...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - このコンピュータは %1 をインストールするための推奨条件をいくつか満たしていません。<br/>インストールは続行しますが、一部の機能が無効になる場合があります。 + このコンピュータは、 %1 をインストールするための推奨条件をいくつか満たしていません。<br/>インストールは続行しますが、一部の機能が無効になる場合があります。 - + This program will ask you some questions and set up %2 on your computer. このプログラムはあなたにいくつか質問をして、コンピュータ上で %2 を設定します。 - + For best results, please ensure that this computer: - 良好な結果を得るために、このコンピュータについて以下の項目を確認してください: + 良好な結果を得るために、このコンピュータについて以下の項目を確認してください: - + System requirements システム要件 @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. フォーム - + After: 後: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>手動パーティション</strong><br/>パーティションの作成、あるいはサイズ変更を行うことができます。 - + Boot loader location: ブートローダーの場所: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 は %2 MB に縮小され、新しい %3 MB のパーティションが %4 のために作成されます。 - + Select storage de&vice: - ストレージデバイスを選択(&V): + ストレージデバイスを選択(&V): - - - - + + + + Current: 現在: - - <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>縮小するパーティションを選択し、その下にあるバーをドラッグしてサイズを変更して下さい</strong> + + Reuse %1 as home partition for %2. + %1 を %2 のホームパーティションとして再利用する - + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + <strong>縮小するパーティションを選択し、下のバーをドラッグしてサイズを変更して下さい</strong> + + + <strong>Select a partition to install on</strong> <strong>インストールするパーティションの選択</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. システムにEFIシステムパーティションが存在しません。%1 のセットアップのため、元に戻り、手動パーティショニングを使用してください。 - + The EFI system partition at %1 will be used for starting %2. %1 上のEFIシステムパーテイションは %2 のスタートに使用されます。 - + EFI system partition: EFI システムパーティション: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスは、オペレーティングシステムを持っていないようです。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>ディスクの消去</strong><br/>選択したストレージデバイス上のデータがすべて <font color="red">削除</font> されます。 + <strong>ディスクの消去</strong><br/>選択したストレージデバイス上のデータがすべて <font color="red">削除</font>されます。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスは %1 を有しています。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>共存してインストール</strong><br/>インストーラは %1 用の空きスペースを確保するため、パーティションを縮小します。 - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>パーティションの置換</strong><br/>パーティション %1 に置き換えます。 + <strong>パーティションの置換</strong><br/>パーティションを %1 に置き換えます。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. この記憶装置は、すでにオペレーティングシステムが存在します。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. このストレージデバイスには、複数のオペレーティングシステムが存在します。どうしますか?<br />ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。 @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 のパーティション操作のため、マウントを解除 - + Clearing mounts for partitioning operations on %1. %1 のパーティション操作のため、マウントを解除中 - + Cleared all mounts for %1 %1 のすべてのマウントを解除 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. すべての一時的なマウントをクリア - + Clearing all temporary mounts. すべての一時的なマウントをクリアしています。 - + Cannot get list of temporary mounts. 一時的なマウントのリストを取得できません。 - + Cleared all temporary mounts. すべての一時的なマウントを解除しました。 @@ -530,67 +551,77 @@ The installer will quit and all changes will be lost. パーティションの生成 - + + MiB + MiB + + + Partition &Type: - パーティションの種類 (&T) : + パーティションの種類(&T): - + &Primary - プライマリ (&P) + プライマリ(&P) - + E&xtended - 拡張 (&X) + 拡張(&x) - + Fi&le System: - + ファイルシステム (&L): - + Flags: フラグ: - + &Mount Point: - マウントポイント (&M) + マウントポイント(&M) - + Si&ze: - サイズ (&Z) + サイズ(&Z) - - MB - MB + + En&crypt + 暗号化(&C) - + Logical 論理 - + Primary プライマリ - + GPT GPT + + + Mountpoint already in use. Please select another one. + マウントポイントは既に使用されています。他を選択してください。 + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - ファイルシステム %1 で %4 (%3) 上に新しく %2MB のパーティションを作成 + ファイルシステム %1 で %4 (%3) 上に新しく%2 MBのパーティションを作成 @@ -653,7 +684,7 @@ The installer will quit and all changes will be lost. GUID Partition Table (GPT) - GUID パーティションテーブル (GPT) + GUID パーティションテーブル(GPT) @@ -687,69 +718,69 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 ユーザー %1 を作成 - + Create user <strong>%1</strong>. ユーザー <strong>%1</strong> を作成。 - + Creating user %1. ユーザー %1 を作成中。 - + Sudoers dir is not writable. - sudoers ディレクトリに書き込みできません。 + sudoers ディレクトリは書き込み可能ではありません。 - + Cannot create sudoers file for writing. - sudoers ファイルを作成できません。 + sudoersファイルを作成できません。 - + Cannot chmod sudoers file. - sudoers のファイル権限を変更できません。 + sudoersファイルの権限を変更できません。 - + Cannot open groups file for reading. groups ファイルを読み込めません。 - + Cannot create user %1. ユーザー %1 を作成できません。 - + useradd terminated with error code %1. - エラーコード %1 により useradd を中止しました。 + エラーコード %1 によりuseraddを中止しました。 - - Cannot set full name for user %1. - ユーサー %1 のフルネームを設定できません。 + + Cannot add user %1 to groups: %2. + ユーザー %1 をグループに追加することができません。: %2 - - chfn terminated with error code %1. - エラーコード %1 により chfn は中止しました。 + + usermod terminated with error code %1. + エラーコード %1 によりusermodが停止しました。 - + Cannot set home directory ownership for user %1. ユーザー %1 のホームディレクトリの所有者を設定できません。 - + chown terminated with error code %1. - エラーコード %1 により chown は中止しました。 + エラーコード %1 によりchown は中止しました。 @@ -793,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. 選択したストレージデバイスにおける<strong> パーティションテーブル </strong> の種類。 <br><br> パーティションテーブルの種類を変更する唯一の方法は、パーティションテーブルを消去し、最初から再作成を行うことですが、この操作はストレージ上の全てのデータを破壊します。 <br> このインストーラーは、他の種類へ明示的に変更ししない限り、現在のパーティションテーブルが保持されます。よくわからない場合、最近のシステムではGPTが推奨されます。 @@ -831,12 +862,38 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Dracut のためのLUKS設定を %1 に書き込む + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Dracut のためのLUKS設定の書き込みをスキップ: "/" パーティションは暗号化されません。 + + + + Failed to open %1 + %1 を開くのに失敗しました + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog Edit Existing Partition - 既存のパーティションの編集 + パーティションの編集 @@ -846,7 +903,7 @@ The installer will quit and all changes will be lost. &Keep - 保持 (&K) + 保持(&K) @@ -856,63 +913,101 @@ The installer will quit and all changes will be lost. Warning: Formatting the partition will erase all existing data. - 警告: パーティションのフォーマットはすべてのデータを削除します。 + 警告: パーティションのフォーマットはすべてのデータを消去します。 &Mount Point: - マウントポイント (&M) + マウントポイント(&M) Si&ze: - サイズ (&Z): + サイズ(&Z): - + + MiB + MiB + + + Fi&le System: - ファイルシステム (&L) + ファイルシステム(&L) - + Flags: フラグ: + + + Mountpoint already in use. Please select another one. + マウントポイントは既に使用されています。他を選択してください。 + + + + EncryptWidget + + + Form + フォーム + + + + En&crypt system + システムを暗号化(&C) + + + + Passphrase + パスフレーズ + + + + Confirm passphrase + パスフレーズの確認 + + + + Please enter the same passphrase in both boxes. + 両方のボックスに同じパスフレーズを入力してください。 + FillGlobalStorageJob - + Set partition information パーティション情報の設定 - + Install %1 on <strong>new</strong> %2 system partition. <strong>新しい</strong> %2 システムパーティションに %1 をインストール。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. マウントポイント <strong>%1</strong> に <strong>新しい</strong> %2 パーティションをセットアップ。 - + Install %2 on %3 system partition <strong>%1</strong>. - %3 システムパーティション <strong>%1</strong> に %2 をインストール。 + %3 システムパーティション <strong>%1</strong> に%2 をインストール。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. パーティション <strong>%1</strong> マウントポイント <strong>%2</strong> に %3 をセットアップ。 - + Install boot loader on <strong>%1</strong>. <strong>%1</strong> にブートローダーをインストール - + Setting up mount points. マウントポイントの設定。 @@ -927,63 +1022,79 @@ The installer will quit and all changes will be lost. &Restart now - 今すぐ再起動 (&R) + 今すぐ再起動(&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>すべて完了しました。</h1><br/>%1 はコンピュータにインストールされました。<br/>再起動して新しいシステムを立ち上げるか、%2 Live環境を使用し続けることができます。 + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>インストールに失敗しました</h1><br/>%1 はコンピュータにインストールされませんでした。<br/>エラーメッセージ: %2. + FinishedViewStep - + Finish 終了 + + + Installation Complete + インストールが完了 + + + + + The installation of %1 is complete. + %1 のインストールは完了です。 + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. %4 上でパーティション %1 (ファイルシステム: %2, サイズ: %3 MB) のフォーマット - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - <strong>%3MB</strong> パーティション <strong>%1</strong> をファイルシステム <strong>%2</strong>でフォーマット。 + <strong>%3MB</strong> パーティション <strong>%1</strong> をファイルシステム<strong>%2</strong>でフォーマット。 - + Formatting partition %1 with file system %2. ファイルシステム %2 でパーティション %1 をフォーマット中。 - + The installer failed to format partition %1 on disk '%2'. インストーラーはディスク '%2' 上のパーティション %1 のフォーマットに失敗しました。 - + Could not open device '%1'. デバイス '%1' を開けませんでした。 - + Could not open partition table. パーティションテーブルを開くことができませんでした。 - + The installer failed to create file system on partition %1. - インストーラーは %1 パーティションのシステム作成に失敗しました。 + インストラーは %1 パーティションにシステムを作成することに失敗しました。 - + The installer failed to update partition table on disk '%1'. - インストーラーはディスク '%1' 上にあるパーティションテーブルの更新に失敗しました。 + インストーラーはディスク '%1' 上のパーティションテーブルのアップデートに失敗しました。 @@ -993,14 +1104,14 @@ The installer will quit and all changes will be lost. Konsole not installed - konsole がインストールされていません + Konsoleがインストールされていません Please install the kde konsole and try again! - kde konsoleをインストールして、再度行ってください! + kde konsoleをインストールして、再度試してください! @@ -1019,12 +1130,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> キーボードのモデルを %1 に設定。<br/> - + Set keyboard layout to %1/%2. キーボードのレイアウトを %1/%2 に設定。 @@ -1032,7 +1143,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard キーボード @@ -1040,15 +1151,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - システムロケールの設定 + システムのロケールの設定 - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. システムロケールの設定はコマンドラインやインターフェース上での言語や文字の表示に影響をおよぼします。<br/>現在の設定 <strong>%1</strong>. + + + &Cancel + 中止(&C) + + + + &OK + 了解(&O) + LicensePage @@ -1131,41 +1252,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - システムロケールが %1 に設定されました。 + + The system language will be set to %1. + システムの言語が %1 に設定されます。 - + + The numbers and dates locale will be set to %1. + 数字と日付のロケールが %1 に設定されます。 + + + Region: 地域: - + Zone: ゾーン: - + + &Change... - 変更 (&C)... + 変更(&C)... - + Set timezone to %1/%2.<br/> タイムゾーンを %1/%2 に設定。<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... ロケーションデータをロード中... - + Location ロケーション @@ -1190,7 +1322,7 @@ The installer will quit and all changes will be lost. Moving of partition %1 failed, changes have been rolled back. - パーティション %1 の移動に失敗しました。変更内容は戻されます。 + パーティション %1 の移動に失敗しました。変更は取り消されます。 @@ -1219,6 +1351,32 @@ The installer will quit and all changes will be lost. ロールバック用のデバイス %1 を開く事ができませんでした。 + + NetInstallPage + + + Name + 名前 + + + + Description + 説明 + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + ネットワークインストール。(無効: パッケージリストを取得できません。ネットワーク接続を確認してください。) + + + + NetInstallViewStep + + + Package selection + パッケージの選択 + + Page_Keyboard @@ -1252,20 +1410,19 @@ The installer will quit and all changes will be lost. What name do you want to use to log in? - ログインではどの名前を使用しますか? + ログインの際、どの名前を使用しますか? - font-weight: normal - font-weight: normal + フォントウェイト: normal <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>複数人がこのコンピュータを使用する場合、インストール後に複数のアカウントを設定することができます。</small> + <small>もし複数の人間がこのコンピュータを使用する場合、インストールの後で複数のアカウントのセットアップを行うことができます。</small> @@ -1275,7 +1432,7 @@ The installer will quit and all changes will be lost. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - <small>入力ミスを確認することができるよう、同じパスワードを 2 回入力します。良いパスワードにするためには 8文字以上にする必要があり、英文・数字・句読点を組み合わせたものにします。パスワードは定期的に変更してください。</small> + 確認のため、同じパスワードを二回入力して下さい。最低8字で、文字・数値・句読点を含めれば、強いパスワードになります。また、パスワードを定期的に変更することを変更してください。 @@ -1285,22 +1442,22 @@ The installer will quit and all changes will be lost. <small>This name will be used if you make the computer visible to others on a network.</small> - <small>ネットワーク上から他の人よりコンピュータが見えるようにする場合、この名前が使用されます。</small> + <small>ネットワーク上からコンピュータが見えるようにする場合、この名前が使用されます。</small> Log in automatically without asking for the password. - パスワードの入力を求めず自動的にログインする + パスワードを尋ねずに自動的にログインする。 Use the same password for the administrator account. - 管理者アカウントに同じパスワードを使用する + 管理者アカウントと同じパスワードを使用する。 Choose a password for the administrator account. - 管理者アカウントのパスワードを選択する + 管理者アカウントのパスワードを選択する。 @@ -1341,7 +1498,12 @@ The installer will quit and all changes will be lost. 新しいパーティション %1 - + + New partition + 新しいパーティション + + + %1 %2 %1 %2 @@ -1361,22 +1523,22 @@ The installer will quit and all changes will be lost. 新しいパーティション - + Name 名前 - + File System ファイルシステム - + Mount Point マウントポイント - + Size サイズ @@ -1391,8 +1553,7 @@ The installer will quit and all changes will be lost. Storage de&vice: - -ストレージデバイス (&V): + ストレージデバイス (&V): @@ -1400,32 +1561,32 @@ The installer will quit and all changes will be lost. すべての変更を元に戻す (&R) - + New Partition &Table - 新しいパーティションテーブル (&T) + 新しいパーティションテーブル(&T) - + &Create - 作成 (&C) + 作成(&C) - + &Edit - 編集 (&E) + 編集(&E) - + &Delete - 削除 (&D) + 削除(&D) - + Install boot &loader on: - ブートローダーインストール先 (&L): + ブートローダーインストール先 (&L): - + Are you sure you want to create a new partition table on %1? %1 上で新しいパーティションテーブルを作成します。よろしいですか? @@ -1433,89 +1594,99 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... システム情報を取得中... - + Partitions パーティション - + Install %1 <strong>alongside</strong> another operating system. 他のオペレーティングシステムに<strong>共存して</strong> %1 をインストール。 - + <strong>Erase</strong> disk and install %1. ディスクを<strong>消去</strong>し %1 をインストール。 - + <strong>Replace</strong> a partition with %1. パーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning. <strong>手動</strong>でパーティションを設定する。 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). ディスク <strong>%2</strong> (%3) 上ののオペレーティングシステムと<strong>共存</strong>して %1 をインストール。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. ディスク <strong>%2</strong> (%3) を<strong>消去して</strong> %1 をインストール。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. ディスク <strong>%2</strong> (%3) 上のパーティションを %1 に<strong>置き換える。</strong> - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). ディスク <strong>%1</strong> (%2) 上で <strong>手動で</strong>パーティショニングする。 - + Disk <strong>%1</strong> (%2) ディスク <strong>%1</strong> (%2) - + Current: 現在: - + After: 変更後: - + No EFI system partition configured - + EFI システムパーティションが設定されていません - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + %1 を起動するためにはEFI システムパ ーティションが必要です。<br/><br/> EFI システムパーティションを設定するためには、元に戻って、マウントポイント<strong>%2</strong>で<strong>esp</strong>フラグを設定したFAT32ファイルシステムを選択するか作成します。<br/><br/>EFI システムパ ーティションの設定をせずに続行することはできますが、その場合はシステムの起動に失敗することになるかもしれません。 - + EFI system partition flag not set - + EFI システムパーティションのフラグが設定されていません - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + %1 を起動するためにはEFI システムパ ーティションが必要です。<br/><br/>パーティションはマウントポイント<strong>%2</strong>に設定されていますが、<strong>esp</strong> フラグが設定されていません。<br/>フラグを設定するには、元に戻ってパーティションを編集してください。<br/><br/>フラグの設定をせずに続けることはできますが、その場合、システムの起動に失敗することになるかもしれません。 + + + + Boot partition not encrypted + ブートパーティションが暗号化されていません + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + ブートパーティションは暗号化されたルートパーティションとともにセットアップされましたが、ブートパーティションは暗号化されていません。<br/><br/>重要なシステムファイルが暗号化されていないパーティションに残されているため、このようなセットアップは安全上の懸念があります。<br/>セットアップを続行することはできますが、後でシステムの起動中にファイルシステムが解除されるおそれがあります。<br/>ブートパーティションを暗号化させるには、前の画面に戻って、再度パーティションを作成し、パーティション作成ウィンドウ内で<strong>Encrypt</strong>(暗号化)を選択してください。 @@ -1532,20 +1703,25 @@ The installer will quit and all changes will be lost. デフォルト - + unknown 不明 - + extended 拡張 - + unformatted 未フォーマット + + + swap + スワップ + Unpartitioned space or unknown partition table @@ -1565,64 +1741,64 @@ The installer will quit and all changes will be lost. %1 をインストールする場所を選択します。<br/><font color="red">警告: </font>選択したパーティション内のすべてのファイルが削除されます。 - + The selected item does not appear to be a valid partition. - 選択した項目は有効なパーティションではありません。 + 選択した項目は有効なパーティションではないようです。 - + %1 cannot be installed on empty space. Please select an existing partition. - %1 は空きスペースにインストールすることはできません。既存のパーティションを選択してください。 + %1 は空き領域にインストールすることはできません。既存のパーティションを選択してください。 - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 は拡張パーティションにインストールする事はできません。既存のプライマリまたは論理パーティションを選択してください。 + %1 は拡張パーティションにインストールできません。既存のプライマリまたは論理パーティションを選択してください。 - + %1 cannot be installed on this partition. - このパーティションには %1 をインストールできません。 + %1 はこのパーティションにインストールできません。 - + Data partition (%1) データパーティション (%1) - + Unknown system partition (%1) 不明なシステムパーティション (%1) - + %1 system partition (%2) %1 システムパーティション (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>パーティション %1 は、%2 には小さすぎます。少なくとも %3 GB 以上のパーティションを選択してください。 - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>EFI システムパーティションがシステムに見つかりません。%1 を設定するために一旦戻って手動パーティショニングを使用してください。 - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 は %2 にインストールされます。<br/><font color="red">警告: </font>パーティション %2 のすべてのデータは失われます。 - + The EFI system partition at %1 will be used for starting %2. %1 上の EFI システムパーティションは %2 開始時に使用されます。 - + EFI system partition: EFI システムパーティション: @@ -1630,72 +1806,77 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... システム情報を取得中... - - - has at least %1 GB available drive space - 最低 %1 GB のディスク空き容量があること - - - - There is not enough drive space. At least %1 GB is required. - 十分なドライブ空き容量がありません。少なくとも %1 GB 必要です。 - + has at least %1 GB available drive space + 最低 %1 GBのディスク空き領域があること + + + + There is not enough drive space. At least %1 GB is required. + 十分なドライブ容量がありません。少なくとも %1 GB 必要です。 + + + has at least %1 GB working memory 最低 %1 GB のワーキングメモリーがあること - + The system does not have enough working memory. At least %1 GB is required. システムには十分なワーキングメモリがありません。少なくとも %1 GB 必要です。 - + is plugged in to a power source 電源が接続されていること - + The system is not plugged in to a power source. システムに電源が接続されていません。 - + is connected to the Internet インターネットに接続されていること - + The system is not connected to the Internet. システムはインターネットに接続されていません。 - + The installer is not running with administrator rights. インストーラーは管理者権限で実行されていません。 + + + The screen is too small to display the installer. + インストーラーを表示するためには、画面が小さすぎます。 + ResizeFileSystemJob Resize file system on partition %1. - パーティション %1 ファイルシステムのサイズ変更 + パーティション %1 でのファイルシステムのリサイズ Parted failed to resize filesystem. - Parted はファイルシステムのサイズ変更に失敗しました。 + Partedは、ファイルシステムのリサイズに失敗しました。 Failed to resize filesystem. - ファイルシステムのサイズ変更に失敗しました。 + ファイルシステムリサイズに失敗しました。 @@ -1719,7 +1900,7 @@ The installer will quit and all changes will be lost. The installer failed to resize partition %1 on disk '%2'. - インストーラはディスク '%2' パーティション %1 のサイズ変更に失敗しました。 + インストーラが、ディスク '%2' でのパーティション %1 のリサイズに失敗しました。 @@ -1767,79 +1948,135 @@ The installer will quit and all changes will be lost. Cannot write hostname to target system - ターゲットシステムにホスト名を書き込めません + ターゲットとするシステムにホスト名を書き込めません SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 キーボードのモデルを %1 に、レイアウトを %2-%3に設定 - + Failed to write keyboard configuration for the virtual console. 仮想コンソールでのキーボード設定の書き込みに失敗しました。 - - + + + Failed to write to %1 %1 への書き込みに失敗しました - + Failed to write keyboard configuration for X11. X11 のためのキーボード設定の書き込みに失敗しました。 + + + Failed to write keyboard configuration to existing /etc/default directory. + 現存する /etc/default ディレクトリへのキーボード設定の書き込みに失敗しました。 + SetPartFlagsJob - + Set flags on partition %1. - + パーティション %1 にフラグを設定。 - + + Set flags on %1MB %2 partition. + %1MB %2 パーティション上にフラグを設定。 + + + + Set flags on new partition. + 新しいパーティション上にフラグを設定。 + + + Clear flags on partition <strong>%1</strong>. - + パーティション <strong>%1</strong> 上のフラグを消去。 - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + %1MB <strong>%2</strong> パーティション上のフラグを消去。 - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + 新しいパーティション上のフラグを消去。 + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + パーティション <strong>%1</strong> を<strong>%2</strong>のフラグとして設定。 + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + %1MB <strong>%2</strong> パーティションに <strong>%3</strong> のフラグを設定。 + Flag new partition as <strong>%1</strong>. + 新しいパーティションに <strong>%1</strong>のフラグを設定。 + + + + Clearing flags on partition <strong>%1</strong>. + パーティション <strong>%1</strong> 上のフラグを消去中。 + + + + Clearing flags on %1MB <strong>%2</strong> partition. + %1MB <strong>%2</strong> パーティション上のフラグを消去しています。 + + + + Clearing flags on new partition. + 新しいパーティション上のフラグを消去しています。 + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + パーティション <strong>%1</strong> 上に フラグ<strong>%2</strong>を設定。 + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + %1MB <strong>%2</strong> パーティション上に <strong>%3</strong> フラグを設定しています。 + + + + Setting flags <strong>%1</strong> on new partition. + 新しいパーティション上に <strong>%1</strong> フラグを設定しています。 + + + The installer failed to set flags on partition %1. - + インストーラーはパーティション %1 上のフラグの設定に失敗しました。 - + Could not open device '%1'. - + デバイス '%1' を開けませんでした。 - + Could not open partition table on device '%1'. - + デバイス '%1' 上のパーティションテーブルを開けませんでした。 - + Could not find partition '%1'. - + パーティション '%1' が見つかりませんでした。 @@ -1858,32 +2095,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 ユーザ %1 のパスワード設定 - + Setting password for user %1. ユーザ %1 のパスワード設定中。 - + Bad destination system path. 不正なシステムパス。 - + rootMountPoint is %1 root のマウントポイントは %1 。 - + + Cannot disable root account. + rootアカウントを使用することができません。 + + + + passwd terminated with error code %1. + passwd がエラーコード %1 のため終了しました。 + + + Cannot set password for user %1. ユーザ %1 のパスワードは設定できませんでした。 - + usermod terminated with error code %1. エラーコード %1 によりusermodが停止しました。 @@ -1916,12 +2163,12 @@ The installer will quit and all changes will be lost. リンクの作成に失敗しました、ターゲット: %1 ; リンク名: %2 - + Cannot set timezone, タイムゾーンを設定できません, - + Cannot open /etc/timezone for writing /etc/timezone を開くことができません @@ -1931,7 +2178,7 @@ The installer will quit and all changes will be lost. This is an overview of what will happen once you start the install procedure. - これはインストール開始時に行われる事の概要です。 + これはインストールを開始した時に起こることの概要です。 @@ -1945,33 +2192,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. ユーザー名が長すぎます。 - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. ユーザー名に不適切な文字が含まれています。アルファベットの小文字と数字のみが使用できます。 - + Your hostname is too short. ホスト名が短すぎます。 - + Your hostname is too long. ホスト名が長過ぎます。 - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. ホスト名に不適切な文字が含まれています。アルファベット、数字及びハイフンのみが使用できます。 - - + + Your passwords do not match! パスワードが一致していません! @@ -1994,17 +2241,17 @@ The installer will quit and all changes will be lost. &Language: - 言語 (&L) : + 言語(&L): &Release notes - リリースノート (&R) + リリースノート(&R) &Known issues - 既知の問題 (&K) + 既知の問題(&K) @@ -2014,25 +2261,30 @@ The installer will quit and all changes will be lost. &About - 説明 (&A) + 説明(&A) - + <h1>Welcome to the %1 installer.</h1> <h1>%1 インストーラーへようこそ。</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>%1 Calamares インストーラーにようこそ</h1> + + + About %1 installer %1 インストーラーについて - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 サポート @@ -2040,7 +2292,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome ようこそ diff --git a/lang/calamares_kk.ts b/lang/calamares_kk.ts index 221416417..f8ffbe402 100644 --- a/lang/calamares_kk.ts +++ b/lang/calamares_kk.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -75,7 +42,7 @@ %1 (%2) - + %1 (%2) @@ -101,17 +68,38 @@ - - Debug information + + Type: + + + + none + + + + + Interface: + + + + + Tools + Саймандар + + + + Debug information + Жөндеу ақпараты + Calamares::ExecutionViewStep Install - + Орнату @@ -119,7 +107,7 @@ Done - + Дайын @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + А&ртқа - + &Next - + &Алға - - + + &Cancel + Ба&с тарту + + + + + Cancel installation without changing the system. - + Cancel installation? - + Орнатудан бас тарту керек пе? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 қолдауы @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Қош келдіңіз diff --git a/lang/calamares_lo.ts b/lang/calamares_lo.ts index 306d20a7e..a69a9ee43 100644 --- a/lang/calamares_lo.ts +++ b/lang/calamares_lo.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index cb0031844..47f0f9263 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Pasirinkite skaidinį, kurį mažinsite: - - - - Allocate drive space by dragging the divider below: - Paskirstykite diską, traukdami paskirstytoją apačioje: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Po šios operacijos, skaidinys <strong>%1</strong> kuriame yra %4 bus sumažintas iki %2MB ir bus sukurtas naujas %3MB skaidinys sistemai %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Šioje sistemoje niekur nepavyko rasti EFI skaidinio. Prašome grįžti ir naudoti rankinį skaidymą, kad nustatytumėte %1. - - - - The EFI system partition at %1 will be used for starting %2. - %2 paleidimui bus naudojamas EFI sistemos skaidinys, esantis %1. - - - - EFI system partition: - EFI sistemos skaidinys: - - 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. Šios sistemos <strong>paleidimo aplinka</strong>.<br><br>Senesnės x86 sistemos palaiko tik <strong>BIOS</strong>.<br>Šiuolaikinės sistemos, dažniausiai, naudoja <strong>EFI</strong>, tačiau, jeigu jos yra paleistos suderinamumo veiksenoje, taip pat gali būti rodomos kaip BIOS. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. Ši sistema buvo paleista su <strong>EFI</strong> paleidimo aplinka.<br><br>Tam, kad sukonfigūruotų paleidimą iš EFI aplinkos, ši diegimo programa, <strong>EFI sistemos skaidinyje</strong>, privalo išskleisti paleidyklės programą, kaip, pavyzdžiui, <strong>GRUB</strong> ar <strong>systemd-boot</strong>. Tai vyks automatiškai, nebent pasirinksite rankinį skaidymą ir tokiu atveju patys turėsite pasirinkti arba sukurti skaidinį. - + 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. Ši sistema buvo paleista su <strong>BIOS</strong> paleidimo aplinka.<br><br>Tam, kad sukonfigūruotų paleidimą iš BIOS aplinkos, ši diegimo programa, arba skaidinio pradžioje, arba <strong>Paleidimo įraše (MBR)</strong>, šalia skaidinių lentelės pradžios (pageidautina), privalo įdiegti paleidyklę, kaip, pavyzdžiui, <strong>GRUB</strong>. Tai vyks automatiškai, nebent pasirinksite rankinį skaidymą ir tokiu atveju, viską turėsite nusistatyti patys. @@ -101,7 +68,28 @@ Moduliai - + + Type: + Tipas: + + + + + none + nėra + + + + Interface: + Sąsaja: + + + + Tools + Įrankiai + + + Debug information Derinimo informacija @@ -200,32 +188,32 @@ Išvestis: Calamares::PythonJob - + Running %1 operation. Vykdoma %1 operacija. - + Bad working directory path Netinkama darbinio katalogo vieta - + Working directory %1 for python job %2 is not readable. Darbinis %1 python katalogas dėl %2 užduoties yra neskaitomas - + Bad main script file Prastas pagrindinio skripto failas - + Main script file %1 for python job %2 is not readable. Pagrindinis skriptas %1 dėl python %2 užduoties yra neskaitomas - + Boost.Python error in job "%1". Boost.Python klaida darbe "%1". @@ -233,65 +221,91 @@ Išvestis: Calamares::ViewManager - + &Back &Atgal - + &Next - &Kitas + &Toliau - - + + &Cancel A&tšaukti - + + + Cancel installation without changing the system. + Atsisakyti diegimo, nieko nekeisti sistemoje. + + + Cancel installation? Atšaukti diegimą? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ar tikrai norite atšaukti dabartinio diegimo procesą? Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. - + + &Yes + &Taip + + + + &No + &Ne + + + + &Close + &Užverti + + + Continue with setup? Tęsti sąranką? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - %1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus jūsų diske.<br/><strong>Jūs negalėsite atšaukti šių pakeitimų.</strong> + %1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.<br/><strong>Negalėsite atšaukti šių pakeitimų.</strong> - + &Install now Į&diegti dabar - + Go &back &Grįžti - - &Quit - &Baigti + + &Done + A&tlikta - + + The installation is complete. Close the installer. + Diegimas užbaigtas. Užverkite diegimo programą. + + + Error Klaida - + Installation Failed Diegimas nepavyko @@ -299,22 +313,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CalamaresPython::Helper - + Unknown exception type Nežinomas išimties tipas - + unparseable Python error Nepalyginama Python klaida - + unparseable Python traceback Nepalyginamas Python atsekimas - + Unfetchable Python error. Neatgaunama Python klaida. @@ -322,12 +336,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CalamaresWindow - + %1 Installer %1 diegimo programa - + Show debug information Rodyti derinimo informaciją @@ -335,12 +349,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CheckFileSystemJob - + Checking file system on partition %1. Tikrinama %1 skaidinio failų sistema - + The file system check on partition %1 failed. %1 skaidinio failų sistemos patikra nepavyko. @@ -348,27 +362,27 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Šis kompiuteris netenkina minimalių %1 diegimo reikalavimų.<br/>Diegimas negali būti tęsiamas. <a href="#details">Išsamiau...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Šis kompiuteris netenkina kai kurių %1 diegimo rekomenduojamų reikalavimų.<br/>Diegimas gali būti tęsiamas, bet kai kurios funkcijos gali būti išjungtos. + Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.<br/>Diegti galite, bet kai kurios funkcijos gali būti išjungtos. - + This program will ask you some questions and set up %2 on your computer. - Ši programa užduos jums kelis klausimus ir padės jums savo kompiuteryje nusistatyti %2. + Programa užduos klausimus ir padės įsidiegti %2. - + For best results, please ensure that this computer: Norėdami pasiekti geriausių rezultatų, įsitikinkite kad šis kompiuteris: - + System requirements Sistemos reikalavimai @@ -381,102 +395,109 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Forma - + After: Po: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Rankinis skaidymas</strong><br/>Galite patys kurti ar keisti skaidinių dydžius. - + Boot loader location: Paleidyklės vieta: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 bus sumažintas iki %2MB ir naujas %3MB skaidinys bus sukurtas sistemai %4. - + Select storage de&vice: Pasirinkite atminties įr&enginį: - - - - + + + + Current: Dabartinis: - + + Reuse %1 as home partition for %2. + Pakartotinai naudoti %1 kaip namų skaidinį, skirtą %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Pasirinkite, kurį skaidinį sumažinti, o tuomet vilkite juostą, kad pakeistumėte skaidinio dydį</strong> - + <strong>Select a partition to install on</strong> <strong>Pasirinkite kuriame skaidinyje įdiegti</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Šioje sistemoje niekur nepavyko rasti EFI skaidinio. Prašome grįžti ir naudoti rankinį skaidymą, kad nustatytumėte %1. - + The EFI system partition at %1 will be used for starting %2. %2 paleidimui bus naudojamas EFI sistemos skaidinys, esantis ties %1. - + EFI system partition: EFI sistemos skaidinys: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Atrodo, kad šiame įrenginyje nėra operacinės sistemos. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Ištrinti diską</strong><br/>Tai <font color="red">ištrins</font> visus, pasirinktame atminties įrenginyje, esančius duomenis. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra %1. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Įdiegti šalia</strong><br/>Diegimo programa sumažins skaidinį, kad atlaisvintų vietą sistemai %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Pakeisti skaidinį</strong><br/>Pakeičia skaidinį ir įrašo %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra operacinė sistema. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Šiame atminties įrenginyje jau yra kelios operacinės sistemos. Ką norėtumėte daryti?<br/>Prieš atliekant bet kokius pakeitimus atminties įrenginyje, jūs galėsite apžvelgti ir patvirtinti savo pasirinkimus. @@ -484,17 +505,17 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ClearMountsJob - + Clear mounts for partitioning operations on %1 Išvalyti prijungimus, siekiant atlikti skaidymo operacijas skaidiniuose %1 - + Clearing mounts for partitioning operations on %1. Išvalomi prijungimai, siekiant atlikti skaidymo operacijas skaidiniuose %1. - + Cleared all mounts for %1 Visi %1 prijungimai išvalyti @@ -502,22 +523,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. ClearTempMountsJob - + Clear all temporary mounts. Išvalyti visus laikinuosius prijungimus. - + Clearing all temporary mounts. Išvalomi visi laikinieji prijungimai. - + Cannot get list of temporary mounts. Nepavyksta gauti laikinųjų prijungimų sąrašo. - + Cleared all temporary mounts. Visi laikinieji prijungimai išvalyti. @@ -530,60 +551,70 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Sukurti skaidinį - + + MiB + MiB + + + Partition &Type: Skaidinio tipas: - + &Primary &Pirminė - + E&xtended Iš&plėstinė - + Fi&le System: Fai&lų sistema: - + Flags: Vėliavėlės: - + &Mount Point: &Prijungimo vieta: - + Si&ze: D&ydis: - - MB - MB + + En&crypt + Užši&fruoti - + Logical Loginė - + Primary Pagrindinė - + GPT GPT + + + Mountpoint already in use. Please select another one. + Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. + CreatePartitionJob @@ -687,67 +718,67 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. CreateUserJob - + Create user %1 Sukurti naudotoją %1 - + Create user <strong>%1</strong>. Sukurti naudotoją <strong>%1</strong>. - + Creating user %1. Kuriamas naudotojas %1. - + Sudoers dir is not writable. Nepavyko įrašymui sukurti katalogo sudoers. - + Cannot create sudoers file for writing. Nepavyko įrašymui sukurti failo sudoers. - + Cannot chmod sudoers file. Nepavyko pritaikyti chmod failui sudoers. - + Cannot open groups file for reading. Nepavyko skaitymui atverti grupių failo. - + Cannot create user %1. Nepavyko sukurti naudotojo %1. - + useradd terminated with error code %1. komanda useradd nutraukė darbą dėl klaidos kodo %1. - - Cannot set full name for user %1. - Neįmanoma nustatyti pilno vardo naudotojui %1. + + Cannot add user %1 to groups: %2. + Nepavyksta pridėti naudotojo %1 į grupes: %2. - - chfn terminated with error code %1. - komanda chfn nutraukė darbą dėl klaidos kodo %1. + + usermod terminated with error code %1. + usermod nutraukta su klaidos kodu %1. - + Cannot set home directory ownership for user %1. Nepavyko nustatyti home katalogo nuosavybės naudotojui %1. - + chown terminated with error code %1. komanda chown nutraukė darbą dėl klaidos kodo %1. @@ -793,7 +824,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Pasirinktame atminties įrenginyje esančios, <strong>skaidinių lentelės</strong> tipas.<br><br>Vienintelis būdas kaip galima pakeisti skaidinių lentelės tipą yra ištrinti ir iš naujo sukurti skaidinių lentelę, kas savo ruožtu ištrina visus atminties įrenginyje esančius duomenis.<br>Ši diegimo programa paliks esamą skaidinių lentelę, nebent aiškiai pasirinksite kitaip.<br>Jeigu nesate tikri, šiuolaikinėse sistemose pirmenybė yra teikiama GPT tipui. @@ -831,6 +862,32 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Dracut skirtąją LUKS konfigūraciją įrašyti į %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Praleisti LUKS konfigūracijos, kuri yra skirta Dracut, įrašymą: "/" skaidinys nėra užšifruotas + + + + Failed to open %1 + Nepavyko atverti %1 + + + + DummyCppJob + + + Dummy C++ Job + Fiktyvi C++ užduotis + + EditExistingPartitionDialog @@ -851,12 +908,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Format - Formatuoti + Suženklinti Warning: Formatting the partition will erase all existing data. - Įspėjimas: Skaidinio formatavimas sunaikins visus esamus duomenis. + Įspėjimas: suženklinant skaidinį, sunaikinami visi jame esantys duomenys. @@ -869,50 +926,88 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Dy&dis: - - Fi&le System: - Fai&lų Sistema: + + MiB + MiB - + + Fi&le System: + Fai&lų sistema: + + + Flags: Vėliavėlės: + + + Mountpoint already in use. Please select another one. + Prijungimo taškas jau yra naudojamas. Prašome pasirinkti kitą. + + + + EncryptWidget + + + Form + Forma + + + + En&crypt system + Užš&ifruoti sistemą + + + + Passphrase + Slaptafrazė + + + + Confirm passphrase + Patvirtinkite slaptafrazę + + + + Please enter the same passphrase in both boxes. + Prašome abiejuose langeliuose įrašyti tą pačią slaptafrazę. + FillGlobalStorageJob - + Set partition information Nustatyti skaidinio informaciją - + Install %1 on <strong>new</strong> %2 system partition. Įdiegti %1 <strong>naujame</strong> %2 sistemos skaidinyje. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Nustatyti <strong>naują</strong> %2 skaidinį su prijungimo tašku <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Diegti %2 sistemą, %3 sistemos skaidinyje <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Nustatyti %3 skaidinį <strong>%1</strong> su prijungimo tašku <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Diegti paleidyklę skaidinyje <strong>%1</strong>. - + Setting up mount points. Nustatomi prijungimo taškai. @@ -930,58 +1025,73 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Paleisti iš naujo dabar - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Viskas atlikta.</h1><br/>%1 yra įdiegta jūsų kompiuteryje.<br/>Galite iš naujo paleisti kompiuterį dabar ir naudotis savo naująja sistema arba tęsti naudojimąsi %2 Live aplinka. + <h1>Viskas atlikta.</h1><br/>%1 sistema jau įdiegta.<br/>Galite iš naujo paleisti kompiuterį dabar ir naudotis savo naująja sistema; arba galite tęsti naudojimąsi %2 sistema demonstracinėje aplinkoje. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Diegimas nepavyko</h1><br/>%1 nebuvo įdiegta jūsų kompiuteryje.<br/>Klaidos pranešimas buvo: %2. FinishedViewStep - + Finish Pabaiga + + + Installation Complete + Diegimas užbaigtas + + + + The installation of %1 is complete. + %1 diegimas yra užbaigtas. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - Formatuoti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4. + Suženklinti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - Formatuoti <strong>%3MB</strong> skaidinį <strong>%1</strong> su failų sistema <strong>%2</strong>. + Suženklinti <strong>%3MB</strong> skaidinį <strong>%1</strong> su failų sistema <strong>%2</strong>. - + Formatting partition %1 with file system %2. - Formatuojamas skaidinys %1 su %2 failų sistema. + Suženklinamas skaidinys %1 su %2 failų sistema. - + The installer failed to format partition %1 on disk '%2'. - Diegimo programai nepavyko formatuoti skaidinio %1 diske '%2'. + Diegimo programai nepavyko suženklinti „%2“ disko skaidinio %1. - + Could not open device '%1'. Nepavyko atidaryti įrenginio '%1'. - + Could not open partition table. Nepavyko atidaryti skaidinių lentelės. - + The installer failed to create file system on partition %1. Diegimo programai nepavyko sukurti failų sistemos skaidinyje %1. - + The installer failed to update partition table on disk '%1'. Diegimo programai nepavyko atnaujinti skaidinių lentelės diske '%1'. @@ -1019,12 +1129,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. KeyboardPage - + Set keyboard model to %1.<br/> Nustatyti klaviatūros modelį kaip %1.<br/> - + Set keyboard layout to %1/%2. Nustatyti klaviatūros išdėstymą kaip %1/%2. @@ -1032,7 +1142,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. KeyboardViewStep - + Keyboard Klaviatūra @@ -1040,15 +1150,25 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LCLocaleDialog - + System locale setting Sistemos lokalės nustatymas - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Sistemos lokalės nustatymas įtakoja, kai kurių komandų eilutės naudotojo sąsajos elementų, kalbos ir simbolių rinkinį.<br/>Dabar yra nustatyta <strong>%1</strong>. + + + &Cancel + &Atsisakyti + + + + &OK + &Gerai + LicensePage @@ -1060,7 +1180,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. I accept the terms and conditions above. - Aš sutinku su aukščiau išdėstytomis nuostatomis ir sąlygomis. + Sutinku su aukščiau išdėstytomis nuostatomis ir sąlygomis. @@ -1117,7 +1237,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. <a href="%1">view license agreement</a> - <a href="%1">žiūrėti licencijos sutartį</a> + <a href="%1">žiūrėti licenciją</a> @@ -1131,41 +1251,52 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. LocalePage - - - The system locale is set to %1. - Sistemos lokalė nustatyta į %1. + + The system language will be set to %1. + Sistemos kalba bus nustatyta į %1. - + + The numbers and dates locale will be set to %1. + Skaičių ir datų lokalė bus nustatyta į %1. + + + Region: Regionas: - + Zone: Zona: - + + &Change... K&eisti... - + Set timezone to %1/%2.<br/> Nustatyti laiko juostą kaip %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Įkeliami vietos duomenys... - + Location Vieta @@ -1219,6 +1350,32 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Nepavyko atidaryti įrenginio %1, ankstesnės būsenos kopijavimui. + + NetInstallPage + + + Name + Pavadinimas + + + + Description + Aprašas + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Tinklo diegimas. (Išjungta: Nepavyksta gauti paketų sąrašus, patikrinkite savo tinklo ryšį) + + + + NetInstallViewStep + + + Package selection + Paketų pasirinkimas + + Page_Keyboard @@ -1255,7 +1412,6 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Kokį vardą norite naudoti prisijungimui? - @@ -1341,7 +1497,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Naujas skaidinys, skirtas %1 - + + New partition + Naujas skaidinys + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Naujas skaidinys - + Name Pavadinimas - + File System Failų sistema - + Mount Point - Prijungimo Vieta + Prijungimo vieta - + Size Dydis @@ -1399,32 +1560,32 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Atšaukti visus pakeitimus - + New Partition &Table Nauja skaidinių &lentelė - + &Create &Sukurti - + &Edit - &Redaguoti + &Keisti - + &Delete - &Trinti + Ša&linti - + Install boot &loader on: Įdiegti pa&leidyklę skaidinyje: - + Are you sure you want to create a new partition table on %1? Ar tikrai %1 norite sukurti naują skaidinių lentelę? @@ -1432,90 +1593,100 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. PartitionViewStep - + Gathering system information... Renkama sistemos informacija... - + Partitions Skaidiniai - + Install %1 <strong>alongside</strong> another operating system. Diegti %1 <strong>šalia</strong> kitos operacinės sistemos. - + <strong>Erase</strong> disk and install %1. <strong>Ištrinti</strong> diską ir diegti %1. - + <strong>Replace</strong> a partition with %1. <strong>Pakeisti</strong> skaidinį, įrašant %1. - + <strong>Manual</strong> partitioning. <strong>Rankinis</strong> skaidymas. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Įdiegti %1 <strong>šalia</strong> kitos operacinės sistemos diske <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Ištrinti</strong> diską <strong>%2</strong> (%3) ir diegti %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Pakeisti</strong> skaidinį diske <strong>%2</strong> (%3), įrašant %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Rankinis</strong> skaidymas diske <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Diskas <strong>%1</strong> (%2) - + Current: Dabartinis: - + After: Po: - + No EFI system partition configured Nėra sukonfigūruoto EFI sistemos skaidinio - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Tam, kad sukonfigūruotumėte EFI sistemos skaidinį, grįžkite atgal ir pasirinkite arba sukurkite FAT32 failų sistemą su įjungta <strong>esp</strong> vėliavėle ir <strong>%2</strong> prijungimo tašku.<br/><br/>Jūs galite tęsti ir nenustatę EFI sistemos skaidinio, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. - + EFI system partition flag not set Nenustatyta EFI sistemos skaidinio vėliavėlė - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. EFI sistemos skaidinys yra būtinas, norint paleisti %1.<br/><br/>Skaidinys buvo sukonfigūruotas su prijungimo tašku <strong>%2</strong>, tačiau jo <strong>esp</strong> vėliavėlė yra nenustatyta.<br/>Tam, kad nustatytumėte vėliavėlę, grįžkite atgal ir redaguokite skaidinį.<br/><br/>Jūs galite tęsti ir nenustatę vėliavėlės, tačiau tokiu atveju, gali nepavykti paleisti jūsų sistemos. + + + Boot partition not encrypted + Paleidimo skaidinys nėra užšifruotas + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Kartu su užšifruotu šaknies skaidiniu, buvo nustatytas atskiras paleidimo skaidinys, tačiau paleidimo skaidinys nėra užšifruotas.<br/><br/>Dėl tokios sąrankos iškyla tam tikrų saugumo klausimų, kadangi svarbūs sisteminiai failai yra laikomi neužšifruotame skaidinyje.<br/>Jeigu norite, galite tęsti, tačiau failų sistemos atrakinimas įvyks vėliau, sistemos paleidimo metu.<br/>Norėdami užšifruoti paleidimo skaidinį, grįžkite atgal ir sukurkite jį iš naujo bei skaidinių kūrimo lange pažymėkite parinktį <strong>Užšifruoti</strong>. + QObject @@ -1531,20 +1702,25 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Numatytasis - + unknown nežinoma - + extended išplėsta - + unformatted nesutvarkyta + + + swap + sukeitimų (swap) + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Pasirinkite, kur norėtumėte įdiegti %1.<br/><font color="red">Įspėjimas: </font>tai ištrins visus, pasirinktame skaidinyje esančius, failus. - + The selected item does not appear to be a valid partition. Pasirinktas elementas neatrodo kaip teisingas skaidinys. - + %1 cannot be installed on empty space. Please select an existing partition. %1 negali būti įdiegta laisvoje vietoje. Prašome pasirinkti esamą skaidinį. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 negali būti įdiegta išplėstame skaidinyje. Prašome pasirinkti esamą pirminį ar loginį skaidinį. - + %1 cannot be installed on this partition. %1 negali būti įdiegta šiame skaidinyje. - + Data partition (%1) Duomenų skaidinys (%1) - + Unknown system partition (%1) Nežinomas sistemos skaidinys (%1) - + %1 system partition (%2) %1 sistemos skaidinys (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Skaidinys %1 yra pernelyg mažas sistemai %2. Prašome pasirinkti skaidinį, kurio dydis siektų bent %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Šioje sistemoje niekur nepavyko rasti EFI skaidinio. Prašome grįžti ir naudoti rankinį skaidymą, kad nustatytumėte %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 sistema bus įdiegta skaidinyje %2.<br/><font color="red">Įspėjimas: </font>visi duomenys skaidinyje %2 bus prarasti. - + The EFI system partition at %1 will be used for starting %2. %2 paleidimui bus naudojamas EFI sistemos skaidinys, esantis %1. - + EFI system partition: EFI sistemos skaidinys: @@ -1629,55 +1805,60 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. RequirementsChecker - + Gathering system information... Renkama sistemos informacija... - + has at least %1 GB available drive space turi bent %1 GB laisvos vietos diske - + There is not enough drive space. At least %1 GB is required. Neužtenka vietos diske. Reikia bent %1 GB. - + has at least %1 GB working memory turi bent %1 GB darbinės atminties - + The system does not have enough working memory. At least %1 GB is required. Sistemai neužtenka darbinės atminties. Reikia bent %1 GB. - + is plugged in to a power source - yra įjungtas į maitinimo šaltinį + prijungta prie maitinimo šaltinio - + The system is not plugged in to a power source. - Sistema nėra įjungta į maitinimo šaltinį. + Sistema nėra prijungta prie maitinimo šaltinio. - + is connected to the Internet - yra prijungtas prie Interneto + prijungta prie Interneto - + The system is not connected to the Internet. Sistema nėra prijungta prie Interneto. - + The installer is not running with administrator rights. Diegimo programa yra vykdoma be administratoriaus teisių. + + + The screen is too small to display the installer. + Ekranas yra per mažas, kad būtų parodyta diegimo programa. + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Nustatyti klaviatūros modelį kaip %1, o išdėstymą kaip %2-%3 - + Failed to write keyboard configuration for the virtual console. Nepavyko įrašyti klaviatūros sąrankos virtualiam pultui. - - + + + Failed to write to %1 Nepavyko įrašyti į %1 - + Failed to write keyboard configuration for X11. Nepavyko įrašyti klaviatūros sąrankos X11 aplinkai. + + + Failed to write keyboard configuration to existing /etc/default directory. + Nepavyko įrašyti klaviatūros konfigūracijos į esamą /etc/default katalogą. + SetPartFlagsJob - + Set flags on partition %1. Nustatyti vėliavėles skaidinyje %1. - + + Set flags on %1MB %2 partition. + Nustatyti vėliavėles %1MB skaidinyje %2. + + + + Set flags on new partition. + Nustatyti vėliavėles naujame skaidinyje. + + + Clear flags on partition <strong>%1</strong>. Išvalyti vėliavėles skaidinyje <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Išvalyti vėliavėles %1MB skaidinyje <strong>%2</strong>. + + + + Clear flags on new partition. + Išvalyti vėliavėles naujame skaidinyje. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Pažymėti vėliavėle skaidinį <strong>%1</strong> kaip <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Pažymėti vėliavėle %1MB skaidinį <strong>%2</strong> kaip <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Pažymėti vėliavėle naują skaidinį kaip <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Išvalomos vėliavėlės skaidinyje <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Išvalomos vėliavėlės %1MB skaidinyje <strong>%2</strong>. + + + + Clearing flags on new partition. + Išvalomos vėliavėlės naujame skaidinyje. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Nustatomos <strong>%2</strong> vėliavėlės skaidinyje <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Nustatomos vėliavėlės <strong>%3</strong>, %1MB skaidinyje <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Nustatomos vėliavėlės <strong>%1</strong> naujame skaidinyje. + + + The installer failed to set flags on partition %1. Diegimo programai nepavyko nustatyti vėliavėlių skaidinyje %1. - + Could not open device '%1'. Nepavyko atidaryti įrenginio "%1". - + Could not open partition table on device '%1'. Nepavyko atidaryti skaidinių lentelės įrenginyje "%1". - + Could not find partition '%1'. Nepavyko rasti skaidinio "%1". @@ -1857,32 +2094,42 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. SetPasswordJob - + Set password for user %1 Nustatyti naudotojo %1 slaptažodį - + Setting password for user %1. Nustatomas slaptažodis naudotojui %1. - + Bad destination system path. Neteisingas paskirties sistemos kelias. - + rootMountPoint is %1 - root prijungimo vieta yra %1 + šaknies prijungimo vieta yra %1 - + + Cannot disable root account. + Nepavyksta išjungti administratoriaus (root) paskyros. + + + + passwd terminated with error code %1. + komanda passwd nutraukė darbą dėl klaidos kodo %1. + + + Cannot set password for user %1. Nepavyko nustatyti slaptažodžio naudotojui %1. - + usermod terminated with error code %1. komanda usermod nutraukė darbą dėl klaidos kodo %1. @@ -1915,12 +2162,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Nuorodos sukūrimas nepavyko, paskirtis: %1; nuorodos pavadinimas: %2 - + Cannot set timezone, Nepavyksta nustatyti laiko juostos, - + Cannot open /etc/timezone for writing Nepavyksta įrašymui atidaryti failo /etc/timezone @@ -1944,33 +2191,33 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. UsersPage - + Your username is too long. Jūsų naudotojo vardas yra pernelyg ilgas. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Jūsų naudotojo varde yra neleistinų simbolių. Leidžiamos tik mažosios raidės ir skaičiai. - + Your hostname is too short. Jūsų kompiuterio vardas yra pernelyg trumpas. - + Your hostname is too long. Jūsų kompiuterio vardas yra pernelyg ilgas. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Jūsų kompiuterio varde yra neleistinų simbolių. Kompiuterio varde gali būti tik raidės, skaičiai ir brūkšniai. - - + + Your passwords do not match! Jūsų slaptažodžiai nesutampa! @@ -2016,22 +2263,27 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. &Apie - + <h1>Welcome to the %1 installer.</h1> - <h1>Sveiki atvykę į %1 diegimo programą.</h1> + <h1>Jus sveikina %1 diegimo programa.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Jus sveikina Calamares diegimo programa, skirta %1 sistemai.</h1> + + + About %1 installer Apie %1 diegimo programą - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>sistemai %3</strong><br/><br/>Autorinės Teisės 2014-2015 Teo Mrnjavac <teo@kde.org><br/>Dėkojame: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini ir Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> kūrimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti Programinė Įranga. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>sistemai %3</strong><br/><br/>Autorių teisės 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorių teisės 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Dėkojame: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ir <a href="https://www.transifex.com/calamares/calamares/">Calamares vertėjų komandai</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> kūrimą remia <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Išlaisvinanti programinė įranga. - + %1 support %1 palaikymas @@ -2039,7 +2291,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. WelcomeViewStep - + Welcome Pasisveikinimas diff --git a/lang/calamares_mr.ts b/lang/calamares_mr.ts index 6fb9e523f..0fdff01e4 100644 --- a/lang/calamares_mr.ts +++ b/lang/calamares_mr.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_nb.ts b/lang/calamares_nb.ts index b4bfbfdcd..653e83df8 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Velg en partisjon som skal krympes - - - - Allocate drive space by dragging the divider below: - Fordel diskplass ved å flytte skillelinjen nedenfor: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Med denne handlingen vil partisjon <b>%1</b> som inneholder %4 bli krympet til %2MB og en ny partisjon på %3MB vil bli opprettet for %5. - - - - 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: - - - 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. @@ -101,7 +68,28 @@ Moduler - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information Debug informasjon @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Feil filsti til arbeidsmappe - + Working directory %1 for python job %2 is not readable. Arbeidsmappe %1 for python oppgave %2 er ikke lesbar. - + Bad main script file Ugyldig hovedskriptfil - + Main script file %1 for python job %2 is not readable. Hovedskriptfil %1 for python oppgave %2 er ikke lesbar. - + Boost.Python error in job "%1". Boost.Python feil i oppgave "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Tilbake - + &Next &Neste - - + + &Cancel &Avbryt - + + + Cancel installation without changing the system. + + + + Cancel installation? Avbryte installasjon? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vil du virkelig avbryte installasjonen? Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Fortsette å sette opp? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 vil nå gjøre endringer på harddisken, for å installere %2. <br/><strong>Du vil ikke kunne omgjøre disse endringene.</strong> - + &Install now &Installer nå - + Go &back Gå &tilbake - - &Quit - &Avslutt + + &Done + - + + The installation is complete. Close the installer. + + + + Error Feil - + Installation Failed Installasjon feilet @@ -299,22 +313,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CalamaresPython::Helper - + Unknown exception type Ukjent unntakstype - + unparseable Python error Ikke-kjørbar Python feil - + unparseable Python traceback Ikke-kjørbar Python tilbakesporing - + Unfetchable Python error. Ukjent Python feil. @@ -322,12 +336,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CalamaresWindow - + %1 Installer %1 Installasjonsprogram - + Show debug information Vis feilrettingsinformasjon @@ -335,12 +349,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CheckFileSystemJob - + Checking file system on partition %1. Sjekker filsystemet på partisjon %1. - + The file system check on partition %1 failed. Sjekk av filsystem på partisjon %1 har feilet. @@ -348,7 +362,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -502,22 +523,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. Klarer ikke å få tak i listen over midlertidige monterte disker. - + Cleared all temporary mounts. @@ -530,60 +551,70 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt.Opprett en partisjon - + + MiB + + + + Partition &Type: Partisjon &Type: - + &Primary &Primær - + E&xtended U&tvidet - + Fi&le System: - + Flags: - + &Mount Point: &Monteringspunkt: - + Si&ze: St&ørrelse: - - MB - MB + + En&crypt + - + Logical Logisk - + Primary Primær - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. CreateUserJob - + Create user %1 Opprett bruker %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. - + Cannot create user %1. Klarte ikke å opprette bruker %1 - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -793,7 +824,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. + + 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 @@ -869,50 +926,88 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + + 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. @@ -930,58 +1025,73 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1019,12 +1129,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1032,7 +1142,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. KeyboardViewStep - + Keyboard @@ -1040,15 +1150,25 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1219,6 +1350,32 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - @@ -1341,7 +1497,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Name - + File System - + Mount Point - + Size @@ -1399,32 +1560,32 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1432,90 +1593,100 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + 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: @@ -1629,55 +1805,60 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. 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. @@ -1915,12 +2162,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2016,22 +2263,27 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. WelcomeViewStep - + Welcome diff --git a/lang/calamares_nl.ts b/lang/calamares_nl.ts index 38446d2d0..246f086e7 100644 --- a/lang/calamares_nl.ts +++ b/lang/calamares_nl.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Kies een partitie om te verkleinen: - - - - Allocate drive space by dragging the divider below: - Reserveer schijfruimte door de balkjes hieronder te verslepen: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Tijdens deze bewerking zal partitie <strong>%1</strong>, die %4 bevat, verkleind worden tot %2MB en zal een nieuwe %3MB partitie aangemaakt worden voor %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Er werd geen EFI systeempartitie gevonden op dit systeem. Gelieve terug te gaan en manueel te partitioneren om %1 in te stellen. - - - - The EFI system partition at %1 will be used for starting %2. - De EFI systeempartitie op %1 zal gebruikt worden om %2 te starten. - - - - EFI system partition: - EFI systeempartitie: - - 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. - De <strong>opstartomgeving</strong> van dit systeem.<br><br>Oudere x86-systemen ondersteunen enkel <strong>BIOS</strong>.<br>Moderne systemen gebruiken meestal <strong>EFI</strong>, maar kunnen ook als BIOS getoond worden als in compatibiliteitsmodus opgestart werd. + De <strong>opstartomgeving</strong> van dit systeem.<br><br>Oudere x86-systemen ondersteunen enkel <strong>BIOS</strong>.<br>Moderne systemen gebruiken meestal <strong>EFI</strong>, maar kunnen ook als BIOS verschijnen als in compatibiliteitsmodus opgestart werd. - + 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. Dit systeem werd opgestart met een <strong>EFI</strong>-opstartomgeving.<br><br>Om het opstarten vanaf een EFI-omgeving te configureren moet dit installatieprogramma een bootloader instellen, zoals <strong>GRUB</strong> of <strong>systemd-boot</strong> op een <strong>EFI-systeempartitie</strong>. Dit gebeurt automatisch, tenzij je voor manueel partitioneren kiest, waar je het moet aanvinken of het zelf aanmaken. - + 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. Dit systeem werd opgestart met een <strong>BIOS</strong>-opstartomgeving.<br><br>Om het opstarten vanaf een BIOS-omgeving te configureren moet dit installatieprogramma een bootloader installeren, zoals <strong>GRUB</strong>, ofwel op het begin van een partitie ofwel op de <strong>Master Boot Record</strong> bij het begin van de partitietabel (bij voorkeur). Dit gebeurt automatisch, tenzij je voor manueel partitioneren kiest, waar je het zelf moet aanmaken. @@ -101,7 +68,28 @@ Modules - + + Type: + Type: + + + + + none + geen + + + + Interface: + Interface: + + + + Tools + Hulpmiddelen + + + Debug information Debug informatie @@ -200,32 +188,32 @@ Uitvoer: Calamares::PythonJob - + Running %1 operation. Bewerking %1 uitvoeren. - + Bad working directory path Ongeldig pad voor huidige map - + Working directory %1 for python job %2 is not readable. Werkmap %1 voor python taak %2 onleesbaar. - + Bad main script file Onjuist hoofdscriptbestand - + Main script file %1 for python job %2 is not readable. Hoofdscriptbestand %1 voor python taak %2 onleesbaar. - + Boost.Python error in job "%1". Boost.Python fout in taak "%1". @@ -233,65 +221,91 @@ Uitvoer: Calamares::ViewManager - + &Back &Terug - + &Next &Volgende - - + + &Cancel &Afbreken - + + + Cancel installation without changing the system. + Installatie afbreken zonder aanpassingen aan het systeem. + + + Cancel installation? Installatie afbreken? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Wil je het huidige installatieproces echt afbreken? Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. - + + &Yes + &ja + + + + &No + &Nee + + + + &Close + &Sluiten + + + Continue with setup? Doorgaan met installatie? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Het %1 installatieprogramma zal nu aanpassingen maken aan je schijf om %2 te installeren.<br/><strong>Deze veranderingen kunnen niet ongedaan gemaakt worden.</strong> - + &Install now Nu &installeren - + Go &back Ga &terug - - &Quit - &Afsluiten + + &Done + Voltooi&d - + + The installation is complete. Close the installer. + De installatie is voltooid. Sluit het installatie-programma. + + + Error Fout - + Installation Failed Installatie Mislukt @@ -299,22 +313,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CalamaresPython::Helper - + Unknown exception type Onbekend uitzonderingstype - + unparseable Python error onuitvoerbare Python fout - + unparseable Python traceback onuitvoerbare Python traceback - + Unfetchable Python error. Onbekende Python fout. @@ -322,12 +336,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CalamaresWindow - + %1 Installer %1 Installatieprogramma - + Show debug information Toon debug informatie @@ -335,12 +349,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CheckFileSystemJob - + Checking file system on partition %1. Controleren van het bestandssysteem op partitie %1. - + The file system check on partition %1 failed. Controle van bestandssysteem partitie %1 mislukt. @@ -348,7 +362,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Deze computer voldoet niet aan de minimumvereisten om %1 te installeren.<br/>De installatie kan niet doorgaan. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Deze computer voldoet niet aan enkele van de aanbevolen specificaties om %1 te installeren.<br/>De installatie kan doorgaan, maar sommige functies kunnen uitgeschakeld zijn. - + This program will ask you some questions and set up %2 on your computer. Dit programma stelt je enkele vragen en installeert %2 op jouw computer. - + For best results, please ensure that this computer: Voor de beste resultaten is het aangeraden dat deze computer: - + System requirements Systeemvereisten @@ -381,102 +395,109 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Formulier - + After: Na: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Handmatig partitioneren</strong><br/>Je maakt of wijzigt zelf de partities. - + Boot loader location: Bootloader locatie: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 zal verkleind worden tot %2MB en een nieuwe %3MB partitie zal worden aangemaakt voor %4. - + Select storage de&vice: Selecteer &opslagmedium: - - - - + + + + Current: Huidig: - + + Reuse %1 as home partition for %2. + Hergebruik %1 als home-partitie voor %2 + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selecteer een partitie om te verkleinen, en sleep vervolgens de onderste balk om het formaat te wijzigen</strong> - + <strong>Select a partition to install on</strong> <strong>Selecteer een partitie om op te installeren</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Er werd geen EFI systeempartitie gevonden op dit systeem. Gelieve terug te gaan en manueel te partitioneren om %1 in te stellen. - + The EFI system partition at %1 will be used for starting %2. De EFI systeempartitie op %1 zal gebruikt worden om %2 te starten. - + EFI system partition: EFI systeempartitie: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium lijkt geen besturingssysteem te bevatten. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Wis schijf</strong><br/>Dit zal alle huidige gegevens op de geselecteerd opslagmedium <font color="red">verwijderen</font>. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat %1. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Installeer ernaast</strong><br/>Het installatieprogramma zal een partitie verkleinen om plaats te maken voor %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Vervang een partitie</strong><br/>Vervangt een partitie met %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat reeds een besturingssysteem. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Dit opslagmedium bevat meerdere besturingssystemen. Wat wil je doen?<br/>Je zal jouw keuzes kunnen nazien en bevestigen voordat er iets aan het opslagmedium wordt veranderd. @@ -484,17 +505,17 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ClearMountsJob - + Clear mounts for partitioning operations on %1 Geef aankoppelpunten vrij voor partitiebewerkingen op %1 - + Clearing mounts for partitioning operations on %1. Aankoppelpunten vrijgeven voor partitiebewerkingen op %1. - + Cleared all mounts for %1 Alle aankoppelpunten voor %1 zijn vrijgegeven @@ -502,22 +523,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. ClearTempMountsJob - + Clear all temporary mounts. Geef alle tijdelijke aankoppelpunten vrij. - + Clearing all temporary mounts. Alle tijdelijke aankoppelpunten vrijgeven. - + Cannot get list of temporary mounts. Kan geen lijst van tijdelijke aankoppelpunten verkrijgen. - + Cleared all temporary mounts. Alle tijdelijke aankoppelpunten zijn vrijgegeven. @@ -530,60 +551,70 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Maak partitie - + + MiB + MiB + + + Partition &Type: Partitie&type: - + &Primary &Primair - + E&xtended &Uitgebreid - + Fi&le System: &Bestandssysteem - + Flags: Vlaggen: - + &Mount Point: Aan&koppelpunt - + Si&ze: &Grootte: - - MB - MB + + En&crypt + &Versleutelen - + Logical Logisch - + Primary Primair - + GPT GPT + + + Mountpoint already in use. Please select another one. + Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. + CreatePartitionJob @@ -687,67 +718,67 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. CreateUserJob - + Create user %1 Maak gebruiker %1 - + Create user <strong>%1</strong>. Maak gebruiker <strong>%1</strong> - + Creating user %1. Gebruiker %1 aanmaken. - + Sudoers dir is not writable. Sudoers map is niet schrijfbaar. - + Cannot create sudoers file for writing. Kan het bestand sudoers niet aanmaken. - + Cannot chmod sudoers file. chmod sudoers gefaald. - + Cannot open groups file for reading. Kan het bestand groups niet lezen. - + Cannot create user %1. Kan gebruiker %1 niet aanmaken. - + useradd terminated with error code %1. useradd is gestopt met foutcode %1. - - Cannot set full name for user %1. - Kan de volledige naam voor gebruiker %1 niet instellen. + + Cannot add user %1 to groups: %2. + Kan gebruiker %1 niet toevoegen aan groepen: %2. - - chfn terminated with error code %1. - chfn is gestopt met foutcode %1. + + usermod terminated with error code %1. + usermod is gestopt met foutcode %1. - + Cannot set home directory ownership for user %1. Kan eigendomsrecht gebruikersmap niet instellen voor gebruiker %1. - + chown terminated with error code %1. chown is gestopt met foutcode %1. @@ -793,9 +824,9 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - Het type van <strong>partitietabel</strong> op het geselecteerde opslagmedium.<br><br>De enige manier om het type partitietabel te wijzigen is deze te verwijderen en opnieuw aan te maken, wat alle gegevens op het opslagmedium vernietigt.<br>Het installatieprogramma zal de huidige partitietabel behouden tenzij je expliciet anders verkiest.<br>Indien onzeker wordt aangeraden GPT te gebruiken op moderne systemen. + Het type van <strong>partitietabel</strong> op het geselecteerde opslagmedium.<br><br>Om het type partitietabel te wijzigen, dien je deze te verwijderen en opnieuw aan te maken, wat alle gegevens op het opslagmedium vernietigt.<br>Het installatieprogramma zal de huidige partitietabel behouden tenzij je expliciet anders verkiest.<br>Bij twijfel wordt aangeraden GPT te gebruiken op moderne systemen. @@ -805,7 +836,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. 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. - Dit is een <strong>loop</strong> apparaat.<br><br>Dit is een pseudo-apparaat zonder partitietabel en maakt een bestand beschikbaar als blokapparaat. Dit soort configuratie bevat gewoonlijk slechts een enkel bestandssysteem. + Dit is een <strong>loop</strong> apparaat.<br><br>Dit is een pseudo-apparaat zonder partitietabel en maakt een bestand beschikbaar als blokapparaat. Dergelijke configuratie bevat gewoonlijk slechts een enkel bestandssysteem. @@ -820,7 +851,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. <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>Dit type partitietabel is enkel aan te raden op oudere systemen die opstarten vanaf een <strong>BIOS</strong>-opstartomgeving. GPT is aan te raden in de meeste andere gevallen.<br><br><strong>Opgelet:</strong> De MBR-partitietabel is een verouderde standaard uit de tijde van MS-DOS.<br>Slechts 4 <em>primaire</em> partities kunnen aangemaakt worden, en van deze 4 kan één een <em>uitgebreide</em> partitie zijn, die op zijn beurt veel <em>logische</em> partities kan bevatten. + <br><br>Dit type partitietabel is enkel aan te raden op oudere systemen die opstarten vanaf een <strong>BIOS</strong>-opstartomgeving. GPT is aan te raden in de meeste andere gevallen.<br><br><strong>Opgelet:</strong> De MBR-partitietabel is een verouderde standaard uit de tijd van MS-DOS.<br>Slechts 4 <em>primaire</em> partities kunnen aangemaakt worden, en van deze 4 kan één een <em>uitgebreide</em> partitie zijn, die op zijn beurt meerdere <em>logische</em> partities kan bevatten. @@ -831,6 +862,32 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Schrijf LUKS configuratie voor Dracut op %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Schrijven van LUKS configuratie voor Dracut overgeslaan: "/" partitie is niet versleuteld + + + + Failed to open %1 + Openen van %1 mislukt + + + + DummyCppJob + + + Dummy C++ Job + C++ schijnopdracht + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Grootte: - + + MiB + MiB + + + Fi&le System: Bestands&systeem - + Flags: Vlaggen: + + + Mountpoint already in use. Please select another one. + Aankoppelpunt reeds in gebruik. Gelieve een andere te kiezen. + + + + EncryptWidget + + + Form + Formulier + + + + En&crypt system + En&crypteer systeem + + + + Passphrase + Wachtwoordzin + + + + Confirm passphrase + Bevestig wachtwoordzin + + + + Please enter the same passphrase in both boxes. + Gelieve in beide velden dezelfde wachtwoordzin in te vullen. + FillGlobalStorageJob - + Set partition information Instellen partitie-informatie - + Install %1 on <strong>new</strong> %2 system partition. Installeer %1 op <strong>nieuwe</strong> %2 systeempartitie. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Maak <strong>nieuwe</strong> %2 partitie met aankoppelpunt <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Installeer %2 op %3 systeempartitie <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Stel %3 partitie <strong>%1</strong> in met aankoppelpunt <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Installeer bootloader op <strong>%1</strong>. - + Setting up mount points. Aankoppelpunten instellen. @@ -930,58 +1025,73 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Nu herstarten - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Klaar.</h1><br/>%1 is op je computer geïnstalleerd.<br/>Je mag je nieuwe systeem nu herstarten of de %2 Live omgeving blijven gebruiken. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Installatie Mislukt</h1><br/>%1 werd niet op de computer geïnstalleerd. <br/>De foutboodschap was: %2 + FinishedViewStep - + Finish Beëindigen + + + Installation Complete + Installatie Afgerond. + + + + The installation of %1 is complete. + De installatie van %1 is afgerond. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formateer partitie %1 (bestandssysteem: %2, grootte: %3 MB) op %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatteer <strong>%3MB</strong> partitie <strong>%1</strong> met bestandsysteem <strong>%2</strong>. - + Formatting partition %1 with file system %2. Partitie %1 formatteren met bestandssysteem %2. - + The installer failed to format partition %1 on disk '%2'. Installatieprogramma heeft gefaald om partitie %1 op schijf %2 te formateren. - + Could not open device '%1'. Kan apparaat '%1' niet openen. - + Could not open partition table. Kan de partitietabel niet openen. - + The installer failed to create file system on partition %1. Installatieprogramma heeft gefaald om een bestandsysteem te creëren op partitie %1. - + The installer failed to update partition table on disk '%1'. Installatieprogramma heeft gefaald om de partitietabel bij te werken op schijf '%1'. @@ -1019,12 +1129,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. KeyboardPage - + Set keyboard model to %1.<br/> Instellen toetsenbord model naar %1.<br/> - + Set keyboard layout to %1/%2. Instellen toetsenbord lay-out naar %1/%2. @@ -1032,7 +1142,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. KeyboardViewStep - + Keyboard Toetsenbord @@ -1040,15 +1150,25 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LCLocaleDialog - + System locale setting Landinstellingen - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. De landinstellingen bepalen de taal en het tekenset voor sommige opdrachtregelelementen.<br/>De huidige instelling is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. LocalePage - - - The system locale is set to %1. - De landinstellingen zijn ingesteld op %1. + + The system language will be set to %1. + De taal van het systeem zal worden ingesteld op %1. - + + The numbers and dates locale will be set to %1. + De getal- en datumnotatie worden ingesteld op %1. + + + Region: Regio: - + Zone: Zone: - + + &Change... &Aanpassen - + Set timezone to %1/%2.<br/> Instellen tijdzone naar %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Laden van locatiegegevens... - + Location Locatie @@ -1219,6 +1350,32 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Kan apparaat %1 niet openen om het kopiëren terug te draaien. + + NetInstallPage + + + Name + Naam + + + + Description + Beschrijving + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Netwerkinstallatie. (Uitgeschakeld: kon de pakketlijsten niet binnenhalen, controleer de netwerkconnectie) + + + + NetInstallViewStep + + + Package selection + Pakketkeuze + + Page_Keyboard @@ -1255,7 +1412,6 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Welke naam wil je gebruiken om in te loggen? - @@ -1341,7 +1497,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Nieuwe partitie voor %1 - + + New partition + Nieuwe partitie + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Nieuwe partitie - + Name Naam - + File System Bestandssysteem - + Mount Point Aankoppelpunt - + Size Grootte @@ -1399,32 +1560,32 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Alle wijzigingen &ongedaan maken - + New Partition &Table Nieuwe Partitie & Tabel - + &Create &Maak - + &Edit &Bewerken - + &Delete &Verwijderen - + Install boot &loader on: Installeer boot&loader op: - + Are you sure you want to create a new partition table on %1? Weet u zeker dat u een nieuwe partitie tabel wil maken op %1? @@ -1432,89 +1593,99 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. PartitionViewStep - + Gathering system information... Systeeminformatie verzamelen... - + Partitions Partities - + Install %1 <strong>alongside</strong> another operating system. Installeer %1 <strong>naast</strong> een ander besturingssysteem. - + <strong>Erase</strong> disk and install %1. <strong>Wis</strong> schijf en installeer %1. - + <strong>Replace</strong> a partition with %1. <strong>Vervang</strong> een partitie met %1. - + <strong>Manual</strong> partitioning. <strong>Handmatig</strong> partitioneren. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installeer %1 <strong>naast</strong> een ander besturingssysteem op schijf <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wis</strong> schijf <strong>%2</strong> (%3) en installeer %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Vervang</strong> een partitie op schijf <strong>%2</strong> (%3) met %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Handmatig</strong> partitioneren van schijf <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Schijf <strong>%1</strong> (%2) - + Current: Huidig: - + After: Na: - + No EFI system partition configured Geen EFI systeempartitie geconfigureerd - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Om een EFI systeempartitie in te stellen, ga terug en kies of maak een FAT32 bestandssysteem met de <strong>esp</strong>-vlag aangevinkt en mountpoint <strong>%2</strong>.<br/><br/>Je kan verdergaan zonder een EFI systeempartitie, maar mogelijk start je systeem dan niet op. + Een EFI systeempartitie is vereist om %1 te starten.<br/><br/>Om een EFI systeempartitie in te stellen, ga terug en selecteer of maak een FAT32 bestandssysteem met de <strong>esp</strong>-vlag aangevinkt en aankoppelpunt <strong>%2</strong>.<br/><br/>Je kan verdergaan zonder een EFI systeempartitie, maar mogelijk start je systeem dan niet op. - + EFI system partition flag not set - EFI-systeempartitievlag niet ingesteld. + EFI-systeem partitievlag niet ingesteld. - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Een partitie is ingesteld met mountpoint <strong>%2</strong>, maar de de <strong>esp</strong>-vlag is niet aangevinkt.<br/>Om deze vlag aan te vinken, ga terug en pas de partitie aan.<br/><br/>Je kan verdergaan zonder deze vlag, maar mogelijk start je systeem dan niet op. + Een EFI systeempartitie is vereist om %1 op te starten.<br/><br/>Een partitie is ingesteld met aankoppelpunt <strong>%2</strong>, maar de de <strong>esp</strong>-vlag is niet aangevinkt.<br/>Om deze vlag aan te vinken, ga terug en pas de partitie aan.<br/><br/>Je kan verdergaan zonder deze vlag, maar mogelijk start je systeem dan niet op. + + + + Boot partition not encrypted + Bootpartitie niet versleuteld + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Een aparte bootpartitie was ingesteld samen met een versleutelde rootpartitie, maar de bootpartitie zelf is niet versleuteld.<br/><br/>Dit is niet volledig veilig, aangezien belangrijke systeembestanden bewaard worden op een niet-versleutelde partitie.<br/>Je kan doorgaan als je wil, maar het ontgrendelen van bestandssystemen zal tijdens het opstarten later plaatsvinden.<br/>Om de bootpartitie toch te versleutelen: keer terug en maak de bootpartitie opnieuw, waarbij je <strong>Versleutelen</strong> aanvinkt in het venster partitie aanmaken. @@ -1531,20 +1702,25 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Standaard - + unknown onbekend - + extended uitgebreid - + unformatted niet-geformateerd + + + swap + wisselgeheugen + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Kies waar %1 te installeren. <br/><font color="red">Opgelet: </font>dit zal alle bestanden op de geselecteerde partitie wissen. - + The selected item does not appear to be a valid partition. Het geselecteerde item is geen geldige partitie. - + %1 cannot be installed on empty space. Please select an existing partition. %1 kan niet worden geïnstalleerd op lege ruimte. Kies een bestaande partitie. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 kan niet op een uitgebreide partitie geïnstalleerd worden. Kies een bestaande primaire of logische partitie. - + %1 cannot be installed on this partition. %1 kan niet op deze partitie geïnstalleerd worden. - + Data partition (%1) Gegevenspartitie (%1) - + Unknown system partition (%1) Onbekende systeempartitie (%1) - + %1 system partition (%2) %1 systeempartitie (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partitie %1 is te klein voor %2. Gelieve een partitie te selecteren met een capaciteit van minstens %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Er werd geen EFI systeempartite gevonden op dit systeem. Gelieve terug te keren en manueel te partitioneren om %1 in te stellen. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 zal geïnstalleerd worden op %2.<br/><font color="red">Opgelet: </font>alle gegevens op partitie %2 zullen verloren gaan. - + The EFI system partition at %1 will be used for starting %2. De EFI systeempartitie op %1 zal gebruikt worden om %2 te starten. - + EFI system partition: EFI systeempartitie: @@ -1629,55 +1805,60 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. RequirementsChecker - + Gathering system information... Systeeminformatie verzamelen... - + has at least %1 GB available drive space tenminste %1 GB vrije schijfruimte heeft - + There is not enough drive space. At least %1 GB is required. Er is onvoldoende vrije schijfruimte. Tenminste %1 GB is vereist. - + has at least %1 GB working memory tenminste %1 GB werkgeheugen heeft - + The system does not have enough working memory. At least %1 GB is required. Dit systeem heeft onvoldoende werkgeheugen. Tenminste %1 GB is vereist. - + is plugged in to a power source aangesloten is op netstroom - + The system is not plugged in to a power source. Dit systeem is niet aangesloten op netstroom. - + is connected to the Internet verbonden is met het Internet - + The system is not connected to the Internet. Dit systeem is niet verbonden met het Internet. - + The installer is not running with administrator rights. Het installatieprogramma draait zonder administratorrechten. + + + The screen is too small to display the installer. + Het schem is te klein on het installatieprogramma te vertonen. + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Stel toetsenbordmodel in op %1 ,indeling op %2-%3 - + Failed to write keyboard configuration for the virtual console. Kon de toetsenbordconfiguratie voor de virtuele console niet opslaan. - - + + + Failed to write to %1 Schrijven naar %1 mislukt - + Failed to write keyboard configuration for X11. Schrijven toetsenbord configuratie voor X11 mislukt. + + + Failed to write keyboard configuration to existing /etc/default directory. + Kon de toetsenbordconfiguratie niet wegschrijven naar de bestaande /etc/default map. + SetPartFlagsJob - + Set flags on partition %1. Stel vlaggen in op partitie %1. - + + Set flags on %1MB %2 partition. + Stel vlaggen in op %1MB %2 partitie. + + + + Set flags on new partition. + Stel vlaggen in op nieuwe partitie. + + + Clear flags on partition <strong>%1</strong>. Wis vlaggen op partitie <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - Vlag partitie <strong>%1</strong> als <strong>%2</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. + Wis vlaggen op %1MB <strong>%2</strong> partitie. - + + Clear flags on new partition. + Wis vlaggen op nieuwe partitie. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Partitie <strong>%1</strong> als <strong>%2</strong> vlaggen. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Vlag %1MB <strong>%2</strong> partitie als <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Vlag nieuwe partitie als <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Vlaggen op partitie <strong>%1</strong> wissen. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Vlaggen op %1MB <strong>%2</strong> partitie wissen. + + + + Clearing flags on new partition. + Vlaggen op nieuwe partitie wissen. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - Vlaggen <strong>%2</strong> op partitie <strong>%1</strong> instellen. + Vlaggen <strong>%2</strong> op partitie <strong>%1</strong> instellen. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Vlaggen <strong>%3</strong> op %1MB <strong>%2</strong> partitie instellen. + + + + Setting flags <strong>%1</strong> on new partition. + Vlaggen <strong>%1</strong> op nieuwe partitie instellen. + + + The installer failed to set flags on partition %1. - Het installatieprogramma kon de vlaggen op partitie %1 niet instellen. + Het installatieprogramma kon geen vlaggen instellen op partitie %1. - + Could not open device '%1'. Kon apparaat '%1' niet openen. - + Could not open partition table on device '%1'. Kon de partitietabel op apparaat '%1' niet openen. - + Could not find partition '%1'. Kon partitie '%1' niet vinden. @@ -1857,32 +2094,42 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. SetPasswordJob - + Set password for user %1 Instellen wachtwoord voor gebruiker %1 - + Setting password for user %1. Wachtwoord instellen voor gebruiker %1. - + Bad destination system path. Onjuiste bestemming systeempad. - + rootMountPoint is %1 - rootAankoppelpunt is %1 + rootMountPoint is %1 - + + Cannot disable root account. + Kan root account niet uitschakelen. + + + + passwd terminated with error code %1. + passwd is afgesloten met foutcode %1. + + + Cannot set password for user %1. Kan het wachtwoord niet instellen voor gebruiker %1 - + usermod terminated with error code %1. usermod beëindigd met foutcode %1. @@ -1915,12 +2162,12 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. Link maken mislukt, doel: %1; koppeling naam: %2 - + Cannot set timezone, Kan de tijdzone niet instellen, - + Cannot open /etc/timezone for writing Kan niet schrijven naar /etc/timezone @@ -1944,33 +2191,33 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. UsersPage - + Your username is too long. De gebruikersnaam is te lang. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. De gebruikersnaam bevat ongeldige tekens. Enkel kleine letters en nummers zijn toegelaten. - + Your hostname is too short. De hostnaam is te kort. - + Your hostname is too long. De hostnaam is te lang. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. De hostnaam bevat ongeldige tekens. Enkel letters, cijfers en liggende streepjes zijn toegelaten. - - + + Your passwords do not match! Je wachtwoorden komen niet overeen! @@ -2016,22 +2263,27 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. &Over - + <h1>Welcome to the %1 installer.</h1> <h1>Welkom in het %1 installatieprogramma.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Welkom in het Calamares installatieprogramma voor %1.</h1> + + + About %1 installer Over het %1 installatieprogramma - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>voor %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Met dank aan: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini en Rohan Garg.<br/><br/>De ontwikkeling van <a href="http://calamares.io/">Calamares</a> is gesponsord door <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>voor %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Met dank aan: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg en het <a href="https://www.transifex.com/calamares/calamares/">Calamares vertaalteam</a>.<br/><br/>De ontwikkeling van <a href="http://calamares.io/">Calamares</a> wordt gesponsord door <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 ondersteuning @@ -2039,7 +2291,7 @@ Het installatieprogramma zal afsluiten en alle wijzigingen zullen verloren gaan. WelcomeViewStep - + Welcome Welkom diff --git a/lang/calamares_pl.ts b/lang/calamares_pl.ts index c6494f2d3..806c28a7a 100644 --- a/lang/calamares_pl.ts +++ b/lang/calamares_pl.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Wybierz partycję do zmniejszenia: - - - - Allocate drive space by dragging the divider below: - Przydziel przestrzeń na dysku poprzez przeciągnięcie poniżej suwaka: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Po zakończeniu tej operacji, partycja <strong>%1</strong>, która zawiera %4, będzie zmniejszona do %2MB, a nowa partycja %3MB zostanie utworzona dla %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Nigdzie w tym systemie nie można odnaleźć partycji systemowej EFI. Prosimy się cofnąć i użyć ręcznego partycjonowania dysku do ustawienia %1. - - - - The EFI system partition at %1 will be used for starting %2. - Partycja systemowa EFI na %1 będzie użyta do uruchamiania %2. - - - - EFI system partition: - Partycja systemowa EFI: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Środowisko uruchomieniowe</strong> systemu.<br><br>Starsze systemy x86 obsługują tylko <strong>BIOS</strong>.<br>Nowoczesne systemy zwykle używają <strong>EFI</strong>, lecz możliwe jest również ukazanie się BIOS, jeśli działa w trybie kompatybilnym. - + 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. - + Ten system został uruchomiony w środowisku rozruchowym <strong>EFI</strong>.<br><br>Aby skonfigurować uruchomienie ze środowiska EFI, instalator musi wdrożyć aplikację programu rozruchowego, takiego jak <strong>GRUB</strong> lub <strong>systemd-boot</strong> na <strong>Partycji Systemu EFI</strong>. Jest to automatyczne, chyba że wybierasz ręczne partycjonowanie, a w takim przypadku musisz wybrać ją lub utworzyć osobiście. - + 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. - + Ten system został uruchomiony w środowisku rozruchowym <strong>BIOS</strong>.<br><br>Aby skonfigurować uruchomienie ze środowiska BIOS, instalator musi zainstalować program rozruchowy, taki jak <strong>GRUB</strong> na początku partycji lub w <strong>Głównym Sektorze Rozruchowym</strong> blisko początku tablicy partycji (preferowane). Jest to automatyczne, chyba że wybierasz ręczne partycjonowanie, a w takim przypadku musisz ustawić ją osobiście. @@ -101,7 +68,28 @@ Moduły - + + Type: + Rodzaj: + + + + + none + brak + + + + Interface: + Interfejs: + + + + Tools + Narzędzia + + + Debug information Informacje debugowania @@ -200,32 +188,32 @@ Wyjście: Calamares::PythonJob - + Running %1 operation. Wykonuję operację %1. - + Bad working directory path Niepoprawna ścieżka katalogu roboczego - + Working directory %1 for python job %2 is not readable. Katalog roboczy %1 dla zadań pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 dla zadań pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Wystąpił błąd Boost.Python w zadaniu "%1". @@ -233,65 +221,91 @@ Wyjście: Calamares::ViewManager - + &Back &Wstecz - + &Next &Dalej - - + + &Cancel &Anuluj - + + + Cancel installation without changing the system. + Anuluj instalację bez dokonywania zmian w systemie. + + + Cancel installation? Anulować instalację? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy na pewno chcesz anulować obecny proces instalacji? Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. - + + &Yes + &Tak + + + + &No + &Nie + + + + &Close + Zam&knij + + + Continue with setup? Kontynuować z programem instalacyjnym? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Instalator %1 zamierza przeprowadzić zmiany na Twoim dysku, aby zainstalować %2.<br/><strong>Nie będziesz mógł cofnąć tych zmian.</strong> - + &Install now &Zainstaluj teraz - + Go &back &Cofnij się - - &Quit - W&yjdź + + &Done + &Ukończono - + + The installation is complete. Close the installer. + Instalacja ukończona pomyślnie. Możesz zamknąć instalator. + + + Error Błąd - + Installation Failed Wystąpił błąd instalacji @@ -299,22 +313,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CalamaresPython::Helper - + Unknown exception type Nieznany rodzaj wyjątku - + unparseable Python error nieparowalny błąd Pythona - + unparseable Python traceback nieparowalny traceback Pythona - + Unfetchable Python error. Nieosiągalny błąd Pythona. @@ -322,12 +336,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CalamaresWindow - + %1 Installer Instalator %1 - + Show debug information Pokaż informacje debugowania @@ -335,12 +349,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CheckFileSystemJob - + Checking file system on partition %1. Sprawdzanie systemu plików na partycji %1. - + The file system check on partition %1 failed. Wystąpił błąd sprawdzania systemu plików na partycji %1. @@ -348,7 +362,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Ten komputer nie spełnia minimalnych wymagań, niezbędnych do instalacji %1.<br/>Instalacja nie może być kontynuowana. <a href="#details">Szczegóły...</a> @@ -358,17 +372,17 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Ten komputer nie spełnia wszystkich, zalecanych do instalacji %1 wymagań.<br/>Instalacja może być kontynuowana, ale niektóre opcje mogą być niedostępne. - + This program will ask you some questions and set up %2 on your computer. Ten program zada Ci garść pytań i ustawi %2 na Twoim komputerze. - + For best results, please ensure that this computer: Dla osiągnięcia najlepszych rezultatów upewnij się, że ten komputer: - + System requirements Wymagania systemowe @@ -381,120 +395,127 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Formularz - + After: Po: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Ręczne partycjonowanie</strong><br/>Możesz samodzielnie utworzyć lub zmienić rozmiar istniejących partycji. - + Boot loader location: Położenie programu rozruchowego: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 zostanie zmniejszony do %2MB a nowa partycja %3MB zostanie utworzona dla %4. - + Select storage de&vice: &Wybierz urządzenie przechowywania: - - - - + + + + Current: Bieżący: - + + Reuse %1 as home partition for %2. + Użyj ponownie %1 jako partycji domowej dla %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Wybierz partycję do zmniejszenia, a następnie przeciągnij dolny pasek, aby zmienić jej rozmiar</strong> - + <strong>Select a partition to install on</strong> <strong>Wybierz partycję, na której przeprowadzona będzie instalacja</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nigdzie w tym systemie nie można odnaleźć partycji systemowej EFI. Prosimy się cofnąć i użyć ręcznego partycjonowania dysku do ustawienia %1. - + The EFI system partition at %1 will be used for starting %2. Partycja systemowa EFI na %1 będzie użyta do uruchamiania %2. - + EFI system partition: Partycja systemowa EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + To urządzenie pamięci masowej prawdopodobnie nie posiada żadnego systemu operacyjnego. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Wyczyść dysk</strong><br/>Ta operacja <font color="red">usunie</font> wszystkie dane obecnie znajdujące się na wybranym urządzeniu przechowywania. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + To urządzenie pamięci masowej posiada %1. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Zainstaluj obok siebie</strong><br/>Instalator zmniejszy partycję, aby zrobić miejsce dla %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Zastąp partycję</strong><br/>Zastępowanie partycji poprzez %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + To urządzenie pamięci masowej posiada już system operacyjny. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + To urządzenie pamięci masowej posiada kilka systemów operacyjnych. Co chcesz zrobić?<br/>Będziesz miał możliwość przejrzenia oraz zatwierdzenia swoich ustawień przed wykonaniem jakichkolwiek zmian na tym urządzeniu. ClearMountsJob - + Clear mounts for partitioning operations on %1 Wyczyść zamontowania dla operacji partycjonowania na %1 - + Clearing mounts for partitioning operations on %1. Czyszczenie montowań dla operacji partycjonowania na %1. - + Cleared all mounts for %1 Wyczyszczono wszystkie zamontowania dla %1 @@ -502,22 +523,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. ClearTempMountsJob - + Clear all temporary mounts. Wyczyść wszystkie tymczasowe montowania. - + Clearing all temporary mounts. Usuwanie wszystkich tymczasowych punktów montowania. - + Cannot get list of temporary mounts. Nie można uzyskać listy tymczasowych montowań. - + Cleared all temporary mounts. Wyczyszczono wszystkie tymczasowe montowania. @@ -530,60 +551,70 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Utwórz partycję - + + MiB + MB + + + Partition &Type: Rodzaj par&tycji: - + &Primary &Podstawowa - + E&xtended Ro&zszerzona - + Fi&le System: - + System p&lików: - + Flags: - + Flagi: - + &Mount Point: Punkt &montowania: - + Si&ze: Ro&zmiar: - - MB - MB + + En&crypt + Zaszy%fruj - + Logical Logiczna - + Primary Podstawowa - + GPT GPT + + + Mountpoint already in use. Please select another one. + Punkt montowania jest już używany. Proszę wybrać inny. + CreatePartitionJob @@ -687,67 +718,67 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. CreateUserJob - + Create user %1 Utwórz użytkownika %1 - + Create user <strong>%1</strong>. Utwórz użytkownika <strong>%1</strong>. - + Creating user %1. Tworzenie użytkownika %1. - + Sudoers dir is not writable. Katalog sudoers nie ma prawa do zapisu. - + Cannot create sudoers file for writing. Nie można utworzyć pliku sudoers z możliwością zapisu. - + Cannot chmod sudoers file. Nie można wykonać chmod na pliku sudoers. - + Cannot open groups file for reading. Nie można otworzyć pliku groups do odczytu. - + Cannot create user %1. Nie można utworzyć użytkownika %1. - + useradd terminated with error code %1. Polecenie useradd zostało przerwane z kodem błędu %1. - - Cannot set full name for user %1. - Nie można ustawić pełnej nazwy dla użytkownika %1. + + Cannot add user %1 to groups: %2. + Nie można dodać użytkownika %1 do grup: %2 - - chfn terminated with error code %1. - Polecenie chfn zostało przerwane z kodem błędu %1. + + usermod terminated with error code %1. + usermod zakończony z kodem błędu %1. - + Cannot set home directory ownership for user %1. Nie można ustawić właściciela katalogu domowego dla użytkownika %1. - + chown terminated with error code %1. Polecenie chown zostało przerwane z kodem błędu %1. @@ -793,9 +824,9 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Typ <strong>tabeli partycji</strong> na zaznaczonym nośniku danych.<br><br>Jedyną metodą na zmianę tabeli partycji jest jej wyczyszczenie i utworzenie jej od nowa, co spowoduje utratę wszystkich danych.<br>Ten instalator zachowa obecną tabelę partycji, jeżeli nie wybierzesz innej opcji.<br>W wypadku niepewności, w nowszych systemach zalecany jest GPT. @@ -805,22 +836,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. 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. - + To jest urządzenie <strong>pętli zwrotnej</strong>. To jest pseudo-urządzenie, które nie posiada tabeli partycji, która czyni plik dostępny jako urządzenie blokowe. Ten rodzaj instalacji zwykle zawiera tylko jeden system plików. 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. - + Instalator <strong>nie mógł znaleźć tabeli partycji</strong> na zaznaczonym nośniku danych.<br><br>Urządzenie nie posiada tabeli partycji bądź jest ona uszkodzona lub nieznanego rodzaju.<br>Instalator może utworzyć dla Ciebie nową tabelę partycji automatycznie, lub możesz uczynić to ręcznie. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Zalecany rodzaj tabeli partycji dla nowoczesnych systemów uruchamianych przez <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Ten rodzaj tabeli partycji jest zalecany tylko dla systemów uruchamianych ze środowiska uruchomieniowego <strong>BIOS</strong>. GPT jest zalecane w większości innych wypadków.<br><br><strong>Ostrzeżenie:</strong> tabele partycji MBR są przestarzałym standardem z ery MS-DOS.<br>Możesz posiadać tylko 4 partycje <em>podstawowe</em>, z których jedna może być partycją <em>rozszerzoną</em>, zawierającą wiele partycji <em>logicznych</em>. @@ -831,6 +862,32 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Zapisz konfigurację LUKS dla Dracut do %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Pominięto zapisywanie konfiguracji LUKS dla Dracut: partycja "/" nie jest szyfrowana + + + + Failed to open %1 + Nie udało się otworzyć %1 + + + + DummyCppJob + + + Dummy C++ Job + Działanie obiektu Dummy C++ + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Ro&zmiar: - + + MiB + MB + + + Fi&le System: System p&lików: - + Flags: - + Flagi: + + + + Mountpoint already in use. Please select another one. + Punkt montowania jest już używany. Proszę wybrać inny. + + + + EncryptWidget + + + Form + Formularz + + + + En&crypt system + Zaszy&fruj system + + + + Passphrase + Hasło + + + + Confirm passphrase + Potwierdź hasło + + + + Please enter the same passphrase in both boxes. + Użyj tego samego hasła w obu polach. FillGlobalStorageJob - + Set partition information Ustaw informacje partycji - + Install %1 on <strong>new</strong> %2 system partition. Zainstaluj %1 na <strong>nowej</strong> partycji systemowej %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Ustaw <strong>nową</strong> partycję %2 z punktem montowania <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Zainstaluj %2 na partycji systemowej %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Ustaw partycję %3 <strong>%1</strong> z punktem montowania <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Zainstaluj program rozruchowy na <strong>%1</strong>. - + Setting up mount points. Ustawianie punktów montowania. @@ -930,58 +1025,73 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.&Uruchom ponownie teraz - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Wszystko gotowe.</h1><br/>%1 został zainstalowany na Twoim komputerze.<br/>Możesz teraz ponownie uruchomić komputer, aby przejść do nowego systemu, albo kontynuować używanie środowiska live %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Instalacja nie powiodła się</h1><br/>Nie udało się zainstalować %1 na Twoim komputerze.<br/>Komunikat o błędzie: %2. + FinishedViewStep - + Finish Koniec + + + Installation Complete + Instalacja zakończona + + + + The installation of %1 is complete. + Instalacja %1 ukończyła się pomyślnie. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatuj partycję %1 (system plików: %2, rozmiar: %3 MB) na %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Sformatuj partycję <strong>%3MB</strong> <strong>%1</strong> z systemem plików <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatowanie partycji %1 z systemem plików %2. - + The installer failed to format partition %1 on disk '%2'. Instalator nie mógł sformatować partycji %1 na dysku '%2'. - + Could not open device '%1'. Nie można otworzyć urządzenia '%1'. - + Could not open partition table. Nie udało się otworzyć tablicy partycji. - + The installer failed to create file system on partition %1. Instalator nie mógł utworzyć systemu plików na partycji %1. - + The installer failed to update partition table on disk '%1'. Instalator nie mógł zaktualizować tablicy partycji na dysku '%1'. @@ -1019,12 +1129,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. KeyboardPage - + Set keyboard model to %1.<br/> Ustaw model klawiatury na %1.<br/> - + Set keyboard layout to %1/%2. Ustaw model klawiatury na %1/%2. @@ -1032,7 +1142,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. KeyboardViewStep - + Keyboard Klawiatura @@ -1040,15 +1150,25 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LCLocaleDialog - + System locale setting Systemowe ustawienia lokalne - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Systemowe ustawienia lokalne wpływają na ustawienia języka i znaków w niektórych elementach wiersza poleceń interfejsu użytkownika.<br/>Bieżące ustawienie to <strong>%1</strong>. + + + &Cancel + &Anuluj + + + + &OK + &OK + LicensePage @@ -1065,22 +1185,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>Umowy licencyjne</h1>Ten etap instalacji zainstaluje własnościowe oprogramowanie, którego dotyczą zasady licencji. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zgadzasz się z tymi warunkami, nie możesz kontynuować. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>Umowy licencyjne</h1>Ten etap instalacji pozwoli zainstalować własnościowe oprogramowanie, którego dotyczą zasady licencji w celu poprawienia doświadczenia i zapewnienia dodatkowych funkcji. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Przeczytaj znajdujące się poniżej Umowy Licencyjne Końcowego Użytkownika (EULA).<br/>Jeżeli nie zaakceptujesz tych warunków, własnościowe oprogramowanie nie zostanie zainstalowane, zamiast tego zostaną użyte otwartoźródłowe odpowiedniki. @@ -1131,41 +1251,52 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. LocalePage - - - The system locale is set to %1. - Systemowe ustawienia lokalne są ustawione na %1. + + The system language will be set to %1. + Język systemu zostanie ustawiony na %1. - + + The numbers and dates locale will be set to %1. + Format liczb i daty zostanie ustawiony na %1. + + + Region: Region: - + Zone: Strefa: - + + &Change... &Zmień... - + Set timezone to %1/%2.<br/> Ustaw strefę czasową na %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Wczytywanie danych położenia - + Location Położenie @@ -1219,6 +1350,32 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Nie można otworzyć urządzenia %1, by wykonać przywracanie. + + NetInstallPage + + + Name + Nazwa + + + + Description + Opis + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalacja sieciowa. (Wyłączona: Nie można pobrać listy pakietów, sprawdź swoje połączenie z siecią) + + + + NetInstallViewStep + + + Package selection + Wybór pakietów + + Page_Keyboard @@ -1255,7 +1412,6 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Jakiego imienia chcesz używać do logowania się? - @@ -1341,7 +1497,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Nowa partycja dla %1 - + + New partition + Nowa partycja + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Nowa partycja - + Name Nazwa - + File System System plików - + Mount Point Punkt montowania - + Size Rozmiar @@ -1399,32 +1560,32 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.P&rzywróć do pierwotnego stanu - + New Partition &Table Nowa &tablica partycji - + &Create &Utwórz - + &Edit &Edycja - + &Delete U&suń - + Install boot &loader on: Zainsta&luj program rozruchowy na: - + Are you sure you want to create a new partition table on %1? Czy na pewno chcesz utworzyć nową tablicę partycji na %1? @@ -1432,89 +1593,99 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. PartitionViewStep - + Gathering system information... Zbieranie informacji o systemie... - + Partitions Partycje - + Install %1 <strong>alongside</strong> another operating system. Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego. - + <strong>Erase</strong> disk and install %1. <strong>Wyczyść</strong> dysk i zainstaluj %1. - + <strong>Replace</strong> a partition with %1. <strong>Zastąp</strong> partycję poprzez %1. - + <strong>Manual</strong> partitioning. <strong>Ręczne</strong> partycjonowanie. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Zainstaluj %1 <strong>obok</strong> innego systemu operacyjnego na dysku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Wyczyść</strong> dysk <strong>%2</strong> (%3) i zainstaluj %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Zastąp</strong> partycję na dysku <strong>%2</strong> (%3) poprzez %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ręczne</strong> partycjonowanie na dysku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Dysk <strong>%1</strong> (%2) - + Current: Bieżący: - + After: Po: - + No EFI system partition configured - + Nie skonfigurowano partycji systemowej EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Partycja systemu EFI jest zalecana aby rozpocząć %1.<br/><br/>Aby ją skonfigurować, wróć i wybierz lub utwórz partycję z systemem plików FAT32 i flagą <strong>esp</strong> o punkcie montowania <strong>%2</strong>.<br/><br/>Możesz kontynuować bez ustawiania partycji systemu EFI, ale twój system może nie uruchomić się. - + EFI system partition flag not set - + Flaga partycji systemowej EFI nie została ustawiona - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Partycja systemu EFI jest konieczna, aby rozpocząć %1.<br/><br/>Partycja została skonfigurowana w punkcie montowania <strong>%2</strong>, ale nie została ustawiona flaga <strong>esp</strong>. Aby ustawić tę flagę, wróć i zmodyfikuj tę partycję.<br/><br/>Możesz kontynuować bez ustawienia tej flagi, ale Twój system może się nie uruchomić. + + + + Boot partition not encrypted + Niezaszyfrowana partycja rozruchowa + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Oddzielna partycja rozruchowa została skonfigurowana razem z zaszyfrowaną partycją roota, ale partycja rozruchowa nie jest szyfrowana.<br/><br/>Nie jest to najbezpieczniejsze rozwiązanie, ponieważ ważne pliki systemowe znajdują się na niezaszyfrowanej partycji.<br/>Możesz kontynuować, ale odblokowywanie systemu nastąpi później, w trakcie uruchamiania.<br/>Aby zaszyfrować partycję rozruchową, wróć i utwórz ją ponownie zaznaczając opcję <strong>Szyfruj</strong> w oknie tworzenia partycji. @@ -1531,20 +1702,25 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Domyślnie - + unknown nieznany - + extended rozszerzona - + unformatted niesformatowany + + + swap + przestrzeń wymiany + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Wskaż gdzie zainstalować %1.<br/><font color="red">Uwaga: </font>na wybranej partycji zostaną usunięte wszystkie pliki. - + The selected item does not appear to be a valid partition. Wybrany element zdaje się nie być poprawną partycją. - + %1 cannot be installed on empty space. Please select an existing partition. Nie można zainstalować %1 na pustej przestrzeni. Prosimy wybrać istniejącą partycję. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. Nie można zainstalować %1 na rozszerzonej partycji. Prosimy wybrać istniejącą partycję podstawową lub logiczną. - + %1 cannot be installed on this partition. %1 nie może zostać zainstalowany na tej partycji. - + Data partition (%1) Partycja z danymi (%1) - + Unknown system partition (%1) Nieznana partycja systemowa (%1) - + %1 system partition (%2) %1 partycja systemowa (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partycja %1 jest zbyt mała dla %2. Prosimy wybrać partycję o pojemności przynajmniej %3 GB. - + <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/>Nigdzie w tym systemie nie można odnaleźć partycji systemowej EFI. Prosimy się cofnąć i użyć ręcznego partycjonowania dysku do ustawienia %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 zostanie zainstalowany na %2.<br/><font color="red">Uwaga: </font>wszystkie dane znajdujące się na partycji %2 zostaną utracone. - + The EFI system partition at %1 will be used for starting %2. Partycja systemowa EFI na %1 będzie użyta do uruchamiania %2. - + EFI system partition: Partycja systemowa EFI: @@ -1629,55 +1805,60 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. RequirementsChecker - + Gathering system information... Zbieranie informacji o systemie... - + has at least %1 GB available drive space ma przynajmniej %1 GB dostępnego miejsca na dysku - + There is not enough drive space. At least %1 GB is required. Nie ma wystarczającej ilości miejsca na dysku. Wymagane jest przynajmniej %1 GB. - + has at least %1 GB working memory ma przynajmniej %1 GB pamięci roboczej - + The system does not have enough working memory. At least %1 GB is required. System nie posiada wystarczającej ilości pamięci roboczej. Wymagane jest przynajmniej %1 GB. - + is plugged in to a power source jest podłączony do źródła zasilania - + The system is not plugged in to a power source. System nie jest podłączony do źródła zasilania. - + is connected to the Internet jest podłączony do Internetu - + The system is not connected to the Internet. System nie jest podłączony do Internetu. - + The installer is not running with administrator rights. Instalator jest uruchomiony bez praw administratora. + + + The screen is too small to display the installer. + Zbyt niska rozdzielczość ekranu, aby wyświetlić instalator. + ResizeFileSystemJob @@ -1772,73 +1953,129 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Ustaw model klawiatury na %1, jej układ na %2-%3 - + Failed to write keyboard configuration for the virtual console. Błąd zapisu konfiguracji klawiatury dla konsoli wirtualnej. - - + + + Failed to write to %1 Nie można zapisać do %1 - + Failed to write keyboard configuration for X11. Błąd zapisu konfiguracji klawiatury dla X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Błąd zapisu konfiguracji układu klawiatury dla istniejącego katalogu /etc/default. + SetPartFlagsJob - + Set flags on partition %1. - + Ustaw flagi na partycji %1. - + + Set flags on %1MB %2 partition. + Ustaw flagi na partycji %1MB %2. + + + + Set flags on new partition. + Ustaw flagi na nowej partycji. + + + Clear flags on partition <strong>%1</strong>. - + Usuń flagi na partycji <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Wyczyść flagi z partycji %1MB <strong>%2</strong>. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Wyczyść flagi na nowej partycji. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Oflaguj partycję <strong>%1</strong> jako <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Oflaguj partycję %1MB <strong>%2</strong> jako <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Oflaguj nową partycję jako <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Usuwanie flag na partycji <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Czyszczenie flag partycji %1MB <strong>%2</strong>. + + + + Clearing flags on new partition. + Czyszczenie flag na nowej partycji. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Ustawianie flag <strong>%2</strong> na partycji <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Ustawienie flag <strong>%3</strong> na partycji %1MB <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Ustawianie flag <strong>%1</strong> na nowej partycji. + + + The installer failed to set flags on partition %1. - + Instalator nie mógł ustawić flag na partycji %1. - + Could not open device '%1'. - + Nie udało się otworzyć urządzenia '%1'. - + Could not open partition table on device '%1'. - + Nie udało się otworzyć tablicy partycji na urządzeniu '%1'. - + Could not find partition '%1'. - + Nie udało się odnaleźć partycji '%1'. @@ -1857,32 +2094,42 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. SetPasswordJob - + Set password for user %1 Ustaw hasło dla użytkownika %1 - + Setting password for user %1. Ustawianie hasła użytkownika %1. - + Bad destination system path. Błędna ścieżka docelowa systemu. - + rootMountPoint is %1 Punkt montowania / to %1 - + + Cannot disable root account. + Nie można wyłączyć konta administratora. + + + + passwd terminated with error code %1. + Zakończono passwd z kodem błędu %1. + + + Cannot set password for user %1. Nie można ustawić hasła dla użytkownika %1. - + usermod terminated with error code %1. Polecenie usermod przerwane z kodem błędu %1. @@ -1915,12 +2162,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.Błąd tworzenia dowiązania, cel: %1; nazwa dowiązania: %2 - + Cannot set timezone, Nie można ustawić strefy czasowej, - + Cannot open /etc/timezone for writing Nie można otworzyć /etc/timezone celem zapisu @@ -1944,33 +2191,33 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. UsersPage - + Your username is too long. Twoja nazwa użytkownika jest za długa. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Twoja nazwa użytkownika zawiera niepoprawne znaki. Dozwolone są tylko małe litery i cyfry. - + Your hostname is too short. Twoja nazwa komputera jest za krótka. - + Your hostname is too long. Twoja nazwa komputera jest za długa. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Twoja nazwa komputera zawiera niepoprawne znaki. Dozwolone są tylko litery, cyfry i myślniki. - - + + Your passwords do not match! Twoje hasła nie są zgodne! @@ -2016,22 +2263,27 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.&Informacje - + <h1>Welcome to the %1 installer.</h1> <h1>Witamy w instalatorze %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Witamy w instalatorze Calamares dla systemu %1.</h1> + + + About %1 installer O instalatorze %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>dla %3</strong><br/><br/>Prawa autorskie 2014-2015 Teo Mrnjavac <teo@kde.org><br/>Podziękowania dla: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/>Rozwój <a href="http://calamares.io/">Calamares</a> jest sponsorowany przez <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Wyzwalane oprogramowanie. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>dla %3</strong><br/><br/>Prawa autorskie 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Prawa autorskie 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Podziękowania dla: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i <a href="https://www.transifex.com/calamares/calamares/">zespołu tłumaczy Calamares</a>.<br/><br/><a href="http://calamares.io/">Projekt Calamares</a> jest sponsorowany przez <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support Wsparcie %1 @@ -2039,7 +2291,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone. WelcomeViewStep - + Welcome Witamy diff --git a/lang/calamares_pl_PL.ts b/lang/calamares_pl_PL.ts index 2fed9bbe9..462dd1f70 100644 --- a/lang/calamares_pl_PL.ts +++ b/lang/calamares_pl_PL.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Wybierz partycję do zmniejszenia: - - - - Allocate drive space by dragging the divider below: - Przydziel przestrzeń na dysku poprzez przeciągnięcie suwaka poniżej: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - Partycja systemowa EFI: - - 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. @@ -101,7 +68,28 @@ Moduły - + + Type: + + + + + + none + brak + + + + Interface: + + + + + Tools + + + + Debug information Informacje debugowania @@ -200,32 +188,32 @@ Wyjście: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Niepoprawna ścieżka folderu roboczego - + Working directory %1 for python job %2 is not readable. Folder roboczy %1 zadania pythona %2 jest nieosiągalny. - + Bad main script file Niepoprawny główny plik skryptu - + Main script file %1 for python job %2 is not readable. Główny plik skryptu %1 zadania pythona %2 jest nieczytelny. - + Boost.Python error in job "%1". Błąd Boost.Python w zadaniu "%1". @@ -233,65 +221,91 @@ Wyjście: Calamares::ViewManager - + &Back &Wstecz - + &Next &Dalej - - + + &Cancel &Anuluj - + + + Cancel installation without changing the system. + + + + Cancel installation? Przerwać instalację? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Czy naprawdę chcesz przerwać instalację? Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Kontynuować instalację? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now &Zainstaluj - + Go &back &Wstecz - - &Quit - W&yjdź + + &Done + - + + The installation is complete. Close the installer. + + + + Error Błąd - + Installation Failed Wystąpił błąd instalacji @@ -299,22 +313,22 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. CalamaresPython::Helper - + Unknown exception type Nieznany wyjątek - + unparseable Python error Nieparsowalny błąd Pythona - + unparseable Python traceback nieparsowalny traceback Pythona - + Unfetchable Python error. Niepobieralny błąd Pythona. @@ -322,12 +336,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. CalamaresWindow - + %1 Installer Instalator %1 - + Show debug information Pokaż informację debugowania @@ -335,12 +349,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. CheckFileSystemJob - + Checking file system on partition %1. Sprawdzanie systemu plików na partycji %1. - + The file system check on partition %1 failed. Wystąpił błąd sprawdzania systemu plików na partycji %1. @@ -348,7 +362,7 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements Wymagania systemowe @@ -381,102 +395,109 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -502,22 +523,22 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -530,60 +551,70 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Utwórz partycję - + + MiB + + + + Partition &Type: Rodzaj par&tycji: - + &Primary &Podstawowa - + E&xtended Ro&zszerzona - + Fi&le System: - + Flags: - + &Mount Point: Punkt &montowania: - + Si&ze: Ro&zmiar: - - MB - MB + + En&crypt + - + Logical Logiczna - + Primary Podstawowa - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. CreateUserJob - + Create user %1 Utwórz użytkownika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Nie można zapisać do folderu sudoers. - + Cannot create sudoers file for writing. Nie można otworzyć pliku sudoers do zapisu. - + Cannot chmod sudoers file. Nie można wykonać chmod na pliku sudoers. - + Cannot open groups file for reading. Nie można otworzyć pliku groups do oczytu. - + Cannot create user %1. Nie można utworzyć użytkownika %1. - + useradd terminated with error code %1. useradd przerwany z kodem błędu %1. - - Cannot set full name for user %1. - Nie można ustawić pełnej nazwy dla użytkownika %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn przerwany z kodem błędu %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Nie można ustawić właściciela folderu domowego dla użytkownika %1. - + chown terminated with error code %1. chown przerwany z kodem błędu %1. @@ -793,7 +824,7 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.%1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + + 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 Ustaw informacje partycji - + 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. @@ -930,58 +1025,73 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatuj partycję %1 (system plików: %2, rozmiar: %3 MB) na %4. - + Format <strong>%3MB</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'. Instalator nie mógł sformatować partycji %1 na dysku '%2'. - + Could not open device '%1'. Nie można otworzyć urządzenia '%1'. - + Could not open partition table. Nie udało się otworzyć tablicy partycji. - + The installer failed to create file system on partition %1. Instalator nie mógł utworzyć systemu plików na partycji %1. - + The installer failed to update partition table on disk '%1'. Instalator nie mógł zaktualizować tablicy partycji na dysku '%1'. @@ -1019,12 +1129,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. KeyboardPage - + Set keyboard model to %1.<br/> Model klawiatury %1.<br/> - + Set keyboard layout to %1/%2. Model klawiatury %1/%2. @@ -1032,7 +1142,7 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. KeyboardViewStep - + Keyboard Klawiatura @@ -1040,15 +1150,25 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. 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 @@ -1131,41 +1251,52 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Region: - + Zone: Strefa: - + + &Change... - + Set timezone to %1/%2.<br/> Strefa czasowa %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Wczytywanie danych położenia - + Location Położenie @@ -1219,6 +1350,32 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Nie można otworzyć urządzenia %1, by wykonać przywracanie. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Jakiego imienia chcesz używać do logowania się? - @@ -1341,7 +1497,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Nowa partycja - + Name Nazwa - + File System System plików - + Mount Point Punkt montowania - + Size Rozmiar @@ -1399,32 +1560,32 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.P&rzywróć do pierwotnego stanu - + New Partition &Table Nowa &tablica partycji - + &Create &Utwórz - + &Edit &Edycja - + &Delete U&suń - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Na pewno utworzyć nową tablicę partycji na %1? @@ -1432,90 +1593,100 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. PartitionViewStep - + Gathering system information... Zbieranie informacji o systemie... - + Partitions Partycje - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Domyślnie - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + 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: @@ -1629,55 +1805,60 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. SetPasswordJob - + Set password for user %1 Ustaw hasło użytkownika %1 - + Setting password for user %1. - + Bad destination system path. Błędna ścieżka docelowa. - + rootMountPoint is %1 Punkt montowania / to %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Nie można ustawić hasła dla użytkownika %1. - + usermod terminated with error code %1. usermod przerwany z kodem błędu %1. @@ -1915,12 +2162,12 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone.Błąd tworzenia dowiązania, cel: %1; nazwa dowiązania: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Twoje hasła są niezgodne! @@ -2016,22 +2263,27 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ Instalator zakończy działanie i wszystkie zmiany zostaną utracone. WelcomeViewStep - + Welcome diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 3d3c52cd4..bebf1c8b7 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Escolha a partição a ser encolhida: - - - - Allocate drive space by dragging the divider below: - Aloque espaço no disco deslizando o divisor abaixo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Com esta operação, a partição <strong>%1</strong> que contém %4 será reduzida para %2MB e uma nova partição %3MB será criada para %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Não podemos encontrar uma participação EFI no sistema. Por favor, volte e use o particionamento manual para configurar %1. - - - - The EFI system partition at %1 will be used for starting %2. - A partição do sistema EFI em %1 será utilizada para iniciar %2. - - - - EFI system partition: - Partição do sistema EFI: - - 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. - O <strong>ambiente de inicialização</strong> deste sistema.<br><br>Sistemas x86 antigos tem suporte apenas ao <strong>BIOS</strong>.<br>Sistemas modernos normalmente usam <strong>EFI</strong>, mas também podem mostrar o BIOS se for iniciado no modo de compatibilidade. + O <strong>ambiente de inicialização</strong> deste sistema.<br><br>Sistemas x86 antigos têm suporte apenas ao <strong>BIOS</strong>.<br>Sistemas modernos normalmente usam <strong>EFI</strong>, mas também podem mostrar o BIOS se forem iniciados no modo de compatibilidade. - + 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. - Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar a inicialização do ambiente EFI, este instalador deverá instalar um aplicativo de carregamento de boot, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em um <strong>Partição de Sistema EFI</strong>. Isso será feito de forma automática, a menos que escolha o particionamento manual, que permite-lhe escolher ou criar você mesmo. + Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar o início a partir de um ambiente EFI, este instalador deverá instalar um gerenciador de inicialização, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em uma <strong>Partição de Sistema EFI</strong>. Este processo é automático, a não ser que escolha o particionamento manual, que no caso permite-lhe escolher ou criá-lo manualmente. - + 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. - + Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Este processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente. @@ -70,7 +37,7 @@ Do not install a boot loader - Não instalar um gerenciador de boot + Não instalar um gerenciador de inicialização @@ -101,9 +68,30 @@ Módulos - + + Type: + Tipo: + + + + + none + nenhum + + + + Interface: + Interface: + + + + Tools + Ferramentas + + + Debug information - Informação de Debug + Informações de depuração @@ -200,32 +188,32 @@ Saída: Calamares::PythonJob - + Running %1 operation. - 1% da operação foi concluído. + Executando operação %1. - + Bad working directory path Caminho de diretório de trabalho ruim - + Working directory %1 for python job %2 is not readable. Diretório de trabalho %1 para a tarefa do python %2 não é legível. - + Bad main script file Arquivo de script principal ruim - + Main script file %1 for python job %2 is not readable. Arquivo de script principal %1 para a tarefa do python %2 não é legível. - + Boost.Python error in job "%1". Boost.Python erro na tarefa "%1". @@ -233,65 +221,91 @@ Saída: Calamares::ViewManager - + &Back &Voltar - + &Next &Próximo - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + Cancelar instalação sem modificar o sistema. + + + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Você deseja realmente cancelar a instalação atual? O instalador será fechado e todas as alterações serão perdidas. - + + &Yes + &Sim + + + + &No + &Não + + + + &Close + &Fechar + + + Continue with setup? Continuar com configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - O %1 instalador está prestes a fazer alterações em seu disco, a fim de instalar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> + O instalador %1 está prestes a fazer alterações no disco a fim de instalar %2.<br/><strong>Você não será capaz de desfazer estas mudanças.</strong> - + &Install now - Instalar agora + &Instalar agora - + Go &back - &Voltar + Voltar - - &Quit - &Sair + + &Done + Completo - + + The installation is complete. Close the installer. + A instalação está completa. Feche o instalador. + + + Error Erro - + Installation Failed Falha na Instalação @@ -299,22 +313,22 @@ O instalador será fechado e todas as alterações serão perdidas. CalamaresPython::Helper - + Unknown exception type Tipo de exceção desconhecida - + unparseable Python error erro inanalisável do Python - + unparseable Python traceback rastreamento inanalisável do Python - + Unfetchable Python error. Erro inbuscável do Python. @@ -322,25 +336,25 @@ O instalador será fechado e todas as alterações serão perdidas. CalamaresWindow - + %1 Installer Instalador %1 - + Show debug information - Exibir informação de debug + Exibir informações de depuração CheckFileSystemJob - + Checking file system on partition %1. Verificando sistema de arquivos na partição %1. - + The file system check on partition %1 failed. A verificação do sistema de arquivo na partição %1 falhou. @@ -348,29 +362,29 @@ O instalador será fechado e todas as alterações serão perdidas. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - Este computador não satisfaz os requisitos mínimos para a instalação %1. + Este computador não satisfaz os requisitos mínimos para instalar %1. A instalação não pode continuar.<a href="#details">Detalhes...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - Este computador não satisfaz algumas das recomendações para instalação do %1. + Este computador não satisfaz alguns dos requisitos recomendados para instalar %1. A instalação pode continuar, mas alguns recursos podem ser desativados. - + This program will ask you some questions and set up %2 on your computer. - Este programa irá lhe fazer algumas perguntas e configurar% 2 no computador. + Este programa irá fazer-lhe algumas perguntas e configurar %2 no computador. - + For best results, please ensure that this computer: - Para melhores resultados, por favor certifique-se de que este computador: + Para melhores resultados, por favor, certifique-se de que este computador: - + System requirements Requisitos do sistema @@ -383,102 +397,109 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Formulário - + After: Depois: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Particionamento manual</strong><br/>Você pode criar ou redimensionar partições. - + Boot loader location: - Local do gerenciador de boot: + Local do gerenciador de inicialização: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 será reduzida para %2MB e uma nova partição de %3MB será criada para %4. - + Select storage de&vice: Selecione o dispositi&vo de armazenamento: - - - - + + + + Current: - Atual + Atual: - + + Reuse %1 as home partition for %2. + Reutilizar %1 como partição home para %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>Selecione uma partição a reduzir, então arraste a barra para redimensionar</strong> + <strong>Selecione uma partição para reduzir, então arraste a barra de baixo para redimensionar</strong> - + <strong>Select a partition to install on</strong> <strong>Selecione uma partição para instalação</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + Uma partição de sistema EFI não pôde ser encontrada neste dispositivo. Por favor, volte e use o particionamento manual para gerenciar %1. - + The EFI system partition at %1 will be used for starting %2. - A partição de sistema EFI em %1 será usada para iniciar %2. + A partição de sistema EFI em %1 será utilizada para iniciar %2. - + EFI system partition: Partição de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Parece que não há um sistema operacional neste dispositivo de armazenamento. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. + Parece que não há um sistema operacional neste dispositivo. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - <strong>Apagar o disco</strong><br/>Isto <font color="red">excluirá</font> todos os dados que estiverem armazenados no dispositivo selecionado. + <strong>Apagar disco</strong><br/>Isto <font color="red">excluirá</font> todos os dados no dispositivo de armazenamento selecionado. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento possui %1 nele. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Instalar ao lado de</strong><br/>O instalador irá reduzir uma partição para liberar espaço para %1. + <strong>Instalar lado a lado</strong><br/>O instalador irá reduzir uma partição para liberar espaço para %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Substituir uma partição</strong><br/>Substitui uma partição com %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Parece que já há um sistema operacional neste dispositivo de armazenamento. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. + Já há um sistema operacional neste dispositivo de armazenamento. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Há diversos sistemas operacionais neste dispositivo de armazenamento. O que gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. @@ -486,17 +507,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar as montagens para as operações nas partições em %1 - + Clearing mounts for partitioning operations on %1. - Limpar as montagens para as operações nas partições em %1. + Limpando montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Todos os pontos de montagem para %1 foram limpos @@ -504,22 +525,22 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. ClearTempMountsJob - + Clear all temporary mounts. Limpar pontos de montagens temporários. - + Clearing all temporary mounts. - Limpar todos os pontos de montagem temporários. + Limpando todos os pontos de montagem temporários. - + Cannot get list of temporary mounts. Não foi possível listar os pontos de montagens. - + Cleared all temporary mounts. Pontos de montagens temporários limpos. @@ -532,60 +553,70 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Criar uma partição - + + MiB + MiB + + + Partition &Type: &Tipo da partição: - + &Primary &Primária - + E&xtended E&xtendida - + Fi&le System: - + Sistema de Arquivos: - + Flags: - + Marcadores: - + &Mount Point: Ponto de &Montagem: - + Si&ze: Tamanho: - - MB - MB + + En&crypt + &Criptografar - + Logical Lógica - + Primary Primária - + GPT GPT + + + Mountpoint already in use. Please select another one. + Ponto de montagem já em uso. Por favor, selecione outro. + CreatePartitionJob @@ -602,7 +633,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Creating new %1 partition on %2. - Criando nova partição %1 em %2 + Criando nova partição %1 em %2. @@ -635,17 +666,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Create Partition Table - Criar tabela de partições + Criar Tabela de Partições Creating a new partition table will delete all existing data on the disk. - A criação de uma nova tabela de partições irá apagar todos os dados existentes no disco. + A criação de uma nova tabela de partições excluirá todos os dados no disco. What kind of partition table do you want to create? - Você deseja criar que tipo de tabela de partições? + Que tipo de tabela de partições você deseja criar? @@ -663,7 +694,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Create new %1 partition table on %2. - Criando nova partição %1 em %2 + Criar nova tabela de partições %1 em %2. @@ -689,67 +720,67 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. CreateUserJob - + Create user %1 Criar usuário %1 - + Create user <strong>%1</strong>. Criar usuário <strong>%1</strong>. - + Creating user %1. Criando usuário %1. - + Sudoers dir is not writable. O diretório do superusuário não é gravável. - + Cannot create sudoers file for writing. - Impossível criar arquivo do superusuário para gravação. + Não foi possível criar arquivo do superusuário para gravação. - + Cannot chmod sudoers file. - Impossível alterar permissões do arquivo do superusuário. + Não foi possível alterar permissões do arquivo do superusuário. - + Cannot open groups file for reading. - Impossível abrir arquivos do grupo para leitura. + Não foi possível abrir arquivos do grupo para leitura. - + Cannot create user %1. Impossível criar o usuário %1. - + useradd terminated with error code %1. useradd terminou com código de erro %1. - - Cannot set full name for user %1. - Impossível definir o nome completo para o usuário %1. + + Cannot add user %1 to groups: %2. + Não foi possível adicionar o usuário %1 aos grupos: %2. - - chfn terminated with error code %1. - chfn terminou com código de erro %1. + + usermod terminated with error code %1. + O usermod terminou com o código de erro %1. - + Cannot set home directory ownership for user %1. Impossível definir proprietário da pasta pessoal para o usuário %1. - + chown terminated with error code %1. chown terminou com código de erro %1. @@ -795,24 +826,24 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + O tipo de <strong>tabela de partições</strong> no dispositivo de armazenamento selecionado.<br><br>O único modo de alterar o tipo de tabela de partições é apagar e recriar a mesma do começo, processo o qual exclui todos os dados do dispositivo.<br>Este instalador manterá a tabela de partições atual, a não ser que você escolha o contrário.<br>Em caso de dúvidas, em sistemas modernos o GPT é recomendado. This device has a <strong>%1</strong> partition table. - Este dispositivo possui uma tabela de partição <strong>%1</strong>. + Este dispositivo possui uma tabela de partições <strong>%1</strong>. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Este é um dispositivo de <strong>loop</strong>.<br><br>Este é um pseudo-dispositivo sem tabela de partições que faz um arquivo acessível como um dispositivo de bloco. Este tipo de configuração normalmente contém apenas um único sistema de arquivos. 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. - + O instalador <strong>não pôde detectar uma tabela de partições</strong> no dispositivo de armazenamento selecionado.<br><br>O dispositivo ou não tem uma tabela de partições, ou a tabela de partições está corrompida, ou é de um tipo desconhecido.<br>Este instalador pode criar uma nova tabela de partições para você, tanto automaticamente, como pela página de particionamento manual. @@ -822,7 +853,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <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>Este tipo de tabela de partições só é aconselhável em sistemas antigos que iniciam a partir de um ambiente de inicialização <strong>BIOS</strong>. O GPT é recomendado na maioria dos outros casos.<br><br><strong>Aviso:</strong> a tabela de partições MBR é um padrão obsoleto da era do MS-DOS.<br>Apenas 4 partições <em>primárias</em> podem ser criadas, e dessas 4, uma pode ser uma partição <em>estendida</em>, que pode, por sua vez, conter várias partições <em>lógicas</em>. @@ -833,6 +864,32 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Escrever configuração LUKS para o Dracut em %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Pular escrita de configuração LUKS para o Dracut: a partição "/" não está criptografada + + + + Failed to open %1 + Ocorreu uma falha ao abrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -848,7 +905,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. &Keep - &Manter + Manter @@ -871,50 +928,88 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Tamanho: - - Fi&le System: - Sistema de Arquivos + + MiB + MiB - + + Fi&le System: + Sistema de Arquivos: + + + Flags: - + Marcadores: + + + + Mountpoint already in use. Please select another one. + Ponto de montagem já em uso. Por favor, selecione outro. + + + + EncryptWidget + + + Form + Formulário + + + + En&crypt system + &Criptografar sistema + + + + Passphrase + Frase-chave + + + + Confirm passphrase + Confirme a frase-chave + + + + Please enter the same passphrase in both boxes. + Por favor, insira a mesma frase-chave nos dois campos. FillGlobalStorageJob - + Set partition information Definir informações da partição - + Install %1 on <strong>new</strong> %2 system partition. - Instalar %1 em <strong>nova</strong> %2 partição do sistema. + Instalar %1 em <strong>nova</strong> partição %2 do sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - Configurar <strong>nova</strong> %2 partição com ponto de montagem <strong>%1</strong>. + Configurar <strong>nova</strong> partição %2 com ponto de montagem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - Instalar %2 em %3 partição do sistema <strong>%1</strong>. + Instalar %2 em partição %3 do sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - Configurar %3 partição <strong>%1</strong> com ponto de montagem <strong>%2</strong>. + Configurar partição %3 <strong>%1</strong> com ponto de montagem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - Instalar gerenciador de boot em <strong>%1</strong>. + Instalar gerenciador de inicialização em <strong>%1</strong>. - + Setting up mount points. Configurando pontos de montagem. @@ -932,58 +1027,73 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.&Reiniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - <h1>Tudo pronto.</h1><br/>%1 foi instalado no seu computador.<br/>Agora você pode reiniciar seu novo sistema ou continuar usando ambiente Live %2. + <h1>Tudo pronto.</h1><br/>%1 foi instalado no seu computador.<br/>Agora você pode reiniciar seu novo sistema ou continuar usando o ambiente Live %2. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>A instalação falhou</h1><br/>%1 não foi instalado em seu computador.<br/>A mensagem de erro foi: %2. FinishedViewStep - + Finish Concluir + + + Installation Complete + Instalação Completa + + + + The installation of %1 is complete. + A instalação do %1 está completa. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatar partição %1 (sistema de arquivos: %2, tamanho: %3 MB) em %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatar a partição de <strong>%3MB</strong> <strong>%1</strong> com o sistema de arquivos <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatando partição %1 com o sistema de arquivos %2. - + The installer failed to format partition %1 on disk '%2'. O instalador falhou em formatar a partição %1 no disco '%2'. - + Could not open device '%1'. Não foi possível abrir o dispositivo '%1'. - + Could not open partition table. Não foi possível abrir a tabela de partições. - + The installer failed to create file system on partition %1. O instalador falhou ao criar o sistema de arquivos na partição %1. - + The installer failed to update partition table on disk '%1'. O instalador falhou ao atualizar a tabela de partições no disco '%1'. @@ -1002,7 +1112,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Please install the kde konsole and try again! - Instale o Konsole do KDE e tente novamente! + Por favor, instale o Konsole do KDE e tente novamente! @@ -1021,12 +1131,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo de teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir o layout do teclado para %1/%2. @@ -1034,7 +1144,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. KeyboardViewStep - + Keyboard Teclado @@ -1042,15 +1152,25 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. LCLocaleDialog - + System locale setting Definição de localidade do sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. A configuração de localidade do sistema afeta a linguagem e o conjunto de caracteres para algumas linhas de comando e elementos da interface do usuário.<br/>A configuração atual é <strong>%1</strong>. + + + &Cancel + &Cancelar + + + + &OK + &OK + LicensePage @@ -1077,7 +1197,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - <h1>Termos de licença</h1>Este procedimento de instalação pode instalar o software proprietário, que está sujeita a termos de licenciamento, a fim de fornecer recursos adicionais e melhorar a experiência do usuário. + <h1>Termos de licença</h1>Este procedimento de instalação pode instalar o software proprietário, que está sujeito a termos de licenciamento, a fim de fornecer recursos adicionais e melhorar a experiência do usuário. @@ -1119,7 +1239,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <a href="%1">view license agreement</a> - <a href="%1">mostrar contrato de licença</a> + <a href="%1">mostrar termos de licença</a> @@ -1133,41 +1253,52 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. LocalePage - - - The system locale is set to %1. - A localidade do sistema está definida para %1. + + The system language will be set to %1. + O idioma do sistema será definido como %1. - + + The numbers and dates locale will be set to %1. + O local dos números e datas será definido como %1. + + + Region: Região: - + Zone: Área: - + + &Change... &Mudar... - + Set timezone to %1/%2.<br/> Definir o fuso horário para %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Carregando dados de localização... - + Location Localização @@ -1192,17 +1323,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Moving of partition %1 failed, changes have been rolled back. - Impossível mover a partição %1 e as alterações foram revertidas. + Falha ao mover partição %1, as alterações foram revertidas. Moving of partition %1 failed. Roll back of the changes have failed. - Impossível mover a partição %1 e as alterações não foram revertidas. + Falha ao mover partição %1. As alterações não puderam ser revertidas. Updating boot sector after the moving of partition %1 failed. - Atualização de setor de boot da partição %1 falhou. + Atualização do setor de inicialização após movimentação da partição %1 falhou. @@ -1221,6 +1352,32 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Não foi possível abrir o dispositivo %1 para reverter a cópia. + + NetInstallPage + + + Name + Nome + + + + Description + Descrição + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalação pela Rede. (Desabilitada: Não foi possível adquirir lista de pacotes, verifique sua conexão com a internet) + + + + NetInstallViewStep + + + Package selection + Seleção de pacotes + + Page_Keyboard @@ -1257,7 +1414,6 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Qual nome você quer usar para entrar? - @@ -1292,7 +1448,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Log in automatically without asking for the password. - Logar automaticamente sem perguntar pela senha. + Entrar automaticamente sem perguntar pela senha. @@ -1325,7 +1481,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Boot - Boot + Inicialização @@ -1343,7 +1499,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Nova partição para %1 - + + New partition + Nova partição + + + %1 %2 %1 %2 @@ -1363,22 +1524,22 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Nova partição - + Name Nome - + File System Sistema de arquivos - + Mount Point Ponto de montagem - + Size Tamanho @@ -1401,122 +1562,132 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.&Reverter todas as alterações - + New Partition &Table Nova Tabela de Partições - + &Create &Criar - + &Edit &Editar - + &Delete &Deletar - + Install boot &loader on: - Instalar o gerenciador de boot em: + Insta&lar o gerenciador de inicialização em: - + Are you sure you want to create a new partition table on %1? - Você tem certeza de que deseja criar uma nova tabela de partição em %1? + Você tem certeza de que deseja criar uma nova tabela de partições em %1? PartitionViewStep - + Gathering system information... Coletando informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>ao lado de</strong> outro sistema operacional. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> uma partição com %1. - + <strong>Manual</strong> partitioning. - <strong>Manualmente</strong> particionar. + Particionamento <strong>manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>ao lado de</strong> outro sistema operacional no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - <strong>Substituir</strong> uma partição no disco <strong>%2</strong> (%3) com %1. + <strong>Substituir</strong> uma partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - <strong>Manualmente</strong> particionar no disco <strong>%1</strong> (%2). + Particionamento <strong>manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: - Atual: + Atualmente: - + After: Depois: - + No EFI system partition configured - + Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte, selecione ou crie um sistema de arquivos FAT32 com o marcador <strong>esp</strong> ativado e ponto de montagem <strong>%2</strong>.<br/><br/>Você pode continuar sem definir uma partição de sistema EFI, mas seu sistema pode não iniciar. - + EFI system partition flag not set - + Marcador da partição do sistema EFI não definida - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Uma partição de sistema EFI é necessária para iniciar %1.<br/><br/>Uma partição foi configurada com o ponto de montagem <strong>%2</strong>, mas seu marcador <strong>esp</strong> não foi definido.<br/>Para definir o marcador, volte e edite a partição.<br/><br/>Você pode continuar sem definir um marcador, mas seu sistema pode não iniciar. + + + + Boot partition not encrypted + Partição de boot não criptografada + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança com este tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. @@ -1533,20 +1704,25 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Padrão - + unknown desconhecido - + extended estendida - + unformatted não formatado + + + swap + swap + Unpartitioned space or unknown partition table @@ -1563,67 +1739,67 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Selecione onde instalar %1.<br/><font color="red">Atenção: </font>Isto excluirá todos os arquivos existentes na partição selecionada. + Selecione onde instalar %1.<br/><font color="red">Atenção:</font> isto excluirá todos os arquivos existentes na partição selecionada. - + The selected item does not appear to be a valid partition. O item selecionado não parece ser uma partição válida. - + %1 cannot be installed on empty space. Please select an existing partition. - %1 não pode ser instalado no espaço vazio. Selecione uma partição existente. + %1 não pode ser instalado no espaço vazio. Por favor, selecione uma partição existente. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 não pode ser instalado em uma partição estendida. Selecione uma partição primária ou lógica existente. + %1 não pode ser instalado em uma partição estendida. Por favor, selecione uma partição primária ou lógica existente. - + %1 cannot be installed on this partition. %1 não pode ser instalado nesta partição. - + Data partition (%1) Partição de dados (%1) - + Unknown system partition (%1) Partição de sistema desconhecida (%1) - + %1 system partition (%2) Partição de sistema %1 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - <strong>%4</strong><br/><br/>A partição %1 é muito pequena para %2. Selecione uma partição com capacidade mínima de %3 GiB. + <strong>%4</strong><br/><br/>A partição %1 é muito pequena para %2. Por favor, selecione uma partição com capacidade mínima de %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - <strong>%2</strong><br/><br/>Não foi encontrada uma partição de sistema EFI no sistema. Volte e use o particionamento manual para configurar %1. + <strong>%2</strong><br/><br/>Não foi encontrada uma partição de sistema EFI no sistema. Por favor, volte e use o particionamento manual para configurar %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 será instalado em %2.<br/><font color="red">Atenção: </font>todos os dados da partição %2 serão perdidos. - + The EFI system partition at %1 will be used for starting %2. A partição do sistema EFI em %1 será utilizada para iniciar %2. - + EFI system partition: Partição do sistema EFI: @@ -1631,54 +1807,59 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. RequirementsChecker - + Gathering system information... Coletando informações do sistema... - - - has at least %1 GB available drive space - tem pelo menos %1 GB de espaço disponível no disco - - - - There is not enough drive space. At least %1 GB is required. - Não há espaço suficiente no disco. Pelo menos 1% GB é necessária. - - has at least %1 GB working memory - tem pelo menos %1 GB de memória + has at least %1 GB available drive space + tenha pelo menos %1 GB de espaço disponível no dispositivo - The system does not have enough working memory. At least %1 GB is required. - O sistema não tem memória de trabalho suficiente. Pelo menos 1% GB é necessária. + There is not enough drive space. At least %1 GB is required. + Não há espaço suficiente no armazenamento. Pelo menos %1 GB é necessário. - is plugged in to a power source - Está conectado a uma fonte de energia + has at least %1 GB working memory + tenha pelo menos %1 GB de memória - + + The system does not have enough working memory. At least %1 GB is required. + O sistema não tem memória de trabalho suficiente. Pelo menos %1 GB é necessário. + + + + is plugged in to a power source + está conectado a uma fonte de energia + + + The system is not plugged in to a power source. O sistema não está conectado a uma fonte de energia. - + is connected to the Internet - Está conectado com a Internet + está conectado à Internet - + The system is not connected to the Internet. - O sistema não está conectado com a Internet. + O sistema não está conectado à Internet. - + The installer is not running with administrator rights. - O instalador não está executando com permissões de administrador. + O instalador não está sendo executado com permissões de administrador. + + + + The screen is too small to display the installer. + A tela é muito pequena para exibir o instalador. @@ -1709,12 +1890,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - Redimensionar <strong>%2MB</strong> partição <strong>%1</strong> para <strong>%3MB</strong>. + Redimensionar <strong>%2MB</strong> da partição <strong>%1</strong> para <strong>%3MB</strong>. Resizing %2MB partition %1 to %3MB. - Redimensionando %2MB partição %1 para %3MB. + Redimensionando %2MB da partição %1 para %3MB. @@ -1774,73 +1955,129 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definir modelo de teclado para %1, layout para %2-%3 - + Failed to write keyboard configuration for the virtual console. Falha ao gravar a configuração do teclado para o console virtual. - - + + + Failed to write to %1 - Falha ao gravar no %1 + Falha ao gravar em %1 - + Failed to write keyboard configuration for X11. Falha ao gravar a configuração do teclado para X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Falha ao gravar a configuração do teclado no diretório /etc/default existente. + SetPartFlagsJob - + Set flags on partition %1. - + Definir marcadores na partição %1. - + + Set flags on %1MB %2 partition. + Definir marcadores na partição %1MB %2. + + + + Set flags on new partition. + Definir marcadores na nova partição. + + + Clear flags on partition <strong>%1</strong>. - + Limpar marcadores na partição <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Limpar marcadores na partição %1MB <strong>%2</strong>. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Limpar marcadores na nova partição. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Marcar partição <strong>%1</strong> como <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Marcar partição %1MB <strong>%2</strong> como <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Marcar nova partição como <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Limpando marcadores na partição <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Limpar marcadores na partição %1MB <strong>%2</strong>. + + + + Clearing flags on new partition. + Limpando marcadores na nova partição. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Definindo marcadores <strong>%2</strong> na partição <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Definindo marcadores <strong>%3</strong> na partição %1MB <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Definindo marcadores <strong>%1</strong> na nova partição. + + + The installer failed to set flags on partition %1. - + O instalador falhou em definir marcadores na partição %1. - + Could not open device '%1'. - + Não foi possível abrir o dispositivo '%1'. - + Could not open partition table on device '%1'. - + Não foi possível abrir a tabela de partições no dispositivo '%1'. - + Could not find partition '%1'. - + Não foi possível encontrar a partição '%1'. @@ -1859,34 +2096,44 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. SetPasswordJob - + Set password for user %1 Definir senha para usuário %1 - + Setting password for user %1. Definindo senha para usuário %1 - + Bad destination system path. O caminho para o sistema está mal direcionado. - + rootMountPoint is %1 - Ponto de Montagem do root é %1 + rootMountPoint é %1 - + + Cannot disable root account. + Não é possível desativar a conta root. + + + + passwd terminated with error code %1. + passwd terminado com código de erro %1. + + + Cannot set password for user %1. - Impossível definir senha para o usuário %1. + Não foi possível definir senha para o usuário %1. - + usermod terminated with error code %1. - usermod terminou com código de erra %1. + usermod terminou com código de erro %1. @@ -1904,7 +2151,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Bad path: %1 - Direcionamento ruim: %1 + Caminho ruim: %1 @@ -1917,14 +2164,14 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.Não foi possível criar o link, alvo: %1; nome: %2 - + Cannot set timezone, Não foi possível definir o fuso horário. - + Cannot open /etc/timezone for writing - Impossível abrir /etc/timezone para gravação + Não foi possível abrir /etc/timezone para gravação @@ -1932,7 +2179,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. This is an overview of what will happen once you start the install procedure. - Isso é um resumo do que acontecerá assim que iniciar o processo de instalação. + Este é um resumo do que acontecerá assim que o processo de instalação for iniciado. @@ -1946,33 +2193,33 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. UsersPage - + Your username is too long. O nome de usuário é grande demais. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. O nome de usuário contém caracteres inválidos. Apenas letras minúsculas e números são permitidos. - + Your hostname is too short. O nome da máquina é muito curto. - + Your hostname is too long. O nome da máquina é muito grande. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. O nome da máquina contém caracteres inválidos. Apenas letras, números e traços são permitidos. - - + + Your passwords do not match! As senhas não estão iguais! @@ -2000,12 +2247,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. &Release notes - Notas de lançamento + &Notas de lançamento &Known issues - Problemas conhecidos + &Problemas conhecidos @@ -2015,25 +2262,30 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. &About - &Sobre + S&obre - + <h1>Welcome to the %1 installer.</h1> <h1>Bem-vindo ao instalador %1 .</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Bem-vindo ao instalador da Calamares para %1.</h1> + + + About %1 installer Sobre o instalador %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Graças a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> desenvolvimento é patrocinado pela <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Time de tradutores do Calamares</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> o desenvolvimento é patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte @@ -2041,7 +2293,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts index 0b9665ac9..6068a7ab0 100644 --- a/lang/calamares_pt_PT.ts +++ b/lang/calamares_pt_PT.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Escolha a partição a encolher: - - - - Allocate drive space by dragging the divider below: - Alocar espaço em disco arrastando o divisor abaixo: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Com esta operação, a partição <strong>%1</strong> que contém %4 será reduzida para %2MB e uma nova partição %3MB será criada para %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Uma partição de sistema EFI não foi encontrada em parte alguma neste sistema. Por favor volte atrás e use o particionamento manual para configurar %1. - - - - The EFI system partition at %1 will be used for starting %2. - A partição de sistema EFI em %1 será usada para iniciar %2. - - - - EFI system partition: - Partição de sistema EFI: - - 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. O <strong>ambiente de arranque</strong> deste sistema.<br><br>Sistemas x86 mais antigos apenas suportam <strong>BIOS</strong>.<br>Sistemas modernos normalmente usam <strong>EFI</strong>, mas também podem aparecer como BIOS se iniciados em modo de compatibilidade. - + 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. Este sistema foi iniciado com ambiente de arranque<strong>EFI</strong>.<br><br>Para configurar o arranque de um ambiente EFI, o instalador tem de implantar uma aplicação de carregar de arranque, tipo <strong>GRUB</strong> ou <strong>systemd-boot</strong> ou uma <strong>Partição de Sistema EFI</strong>. Isto é automático, a menos que escolha particionamento manual, e nesse caso tem de escolhê-la ou criar uma por si próprio. - + 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. Este sistema foi iniciado com um ambiente de arranque <strong>BIOS</strong>.<br><br>Para configurar um arranque de um ambiente BIOS, este instalador tem de instalar um carregador de arranque, tipo <strong>GRUB</strong>, quer no início da partição ou no <strong>Master Boot Record</strong> perto do início da tabela de partições (preferido). Isto é automático, a não ser que escolha particionamento manual, e nesse caso tem de o configurar por si próprio @@ -101,7 +68,28 @@ Módulos - + + Type: + Tipo: + + + + + none + nenhum + + + + Interface: + Interface: + + + + Tools + Ferramentas + + + Debug information Informação de depuração @@ -200,32 +188,32 @@ Saída: Calamares::PythonJob - + Running %1 operation. Operação %1 em execução. - + Bad working directory path Caminho do directório de trabalho errado - + Working directory %1 for python job %2 is not readable. Directório de trabalho %1 para a tarefa python %2 não é legível. - + Bad main script file Ficheiro de script principal errado - + Main script file %1 for python job %2 is not readable. Ficheiro de script principal %1 para a tarefa python %2 não é legível. - + Boost.Python error in job "%1". Erro Boost.Python na tarefa "%1". @@ -233,65 +221,91 @@ Saída: Calamares::ViewManager - + &Back &Voltar - + &Next &Próximo - - + + &Cancel &Cancelar - + + + Cancel installation without changing the system. + Cancelar instalar instalação sem modificar o sistema. + + + Cancel installation? Cancelar a instalação? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Tem a certeza que pretende cancelar o atual processo de instalação? O instalador será encerrado e todas as alterações serão perdidas. - + + &Yes + &Sim + + + + &No + &Não + + + + &Close + &Fechar + + + Continue with setup? Continuar com a configuração? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> O %1 instalador está prestes a fazer alterações ao seu disco em ordem para instalar %2.<br/><strong>Não será capaz de desfazer estas alterações.</strong> - + &Install now &Instalar agora - + Go &back Voltar &atrás - - &Quit - &Sair + + &Done + &Feito - + + The installation is complete. Close the installer. + A instalação está completa. Feche o instalador. + + + Error Erro - + Installation Failed Falha na Instalação @@ -299,22 +313,22 @@ O instalador será encerrado e todas as alterações serão perdidas. CalamaresPython::Helper - + Unknown exception type Tipo de exceção desconhecido - + unparseable Python error erro inanalisável do Python - + unparseable Python traceback rasto inanalisável do Python - + Unfetchable Python error. Erro inatingível do Python. @@ -322,12 +336,12 @@ O instalador será encerrado e todas as alterações serão perdidas. CalamaresWindow - + %1 Installer %1 Instalador - + Show debug information Mostrar informação de depuração @@ -335,12 +349,12 @@ O instalador será encerrado e todas as alterações serão perdidas. CheckFileSystemJob - + Checking file system on partition %1. Verificação do sistema de ficheiros na partição% 1. - + The file system check on partition %1 failed. A verificação do sistema de ficheiros na partição% 1 falhou. @@ -348,7 +362,7 @@ O instalador será encerrado e todas as alterações serão perdidas. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Este computador não satisfaz os requisitos mínimos para instalar %1.<br/>A instalação não pode continuar. <a href="#details">Detalhes...</a> @@ -358,17 +372,17 @@ O instalador será encerrado e todas as alterações serão perdidas.Este computador não satisfaz alguns dos requisitos recomendados para instalar %1.<br/>A instalação pode continuar, mas algumas funcionalidades poderão ser desativadas. - + This program will ask you some questions and set up %2 on your computer. Este programa vai fazer-lhe algumas perguntas e configurar o %2 no seu computador. - + For best results, please ensure that this computer: Para melhores resultados, por favor certifique-se que este computador: - + System requirements Requisitos de sistema @@ -381,102 +395,109 @@ O instalador será encerrado e todas as alterações serão perdidas.Formulário - + After: Depois: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Particionamento manual</strong><br/>Pode criar ou redimensionar partições manualmente. - + Boot loader location: Localização do carregador de arranque: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 será encolhida para %2MB e uma nova %3MB partição será criada para %4. - + Select storage de&vice: Selecione o dis&positivo de armazenamento: - - - - + + + + Current: Atual: - + + Reuse %1 as home partition for %2. + Reutilizar %1 como partição home para %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selecione uma partição para encolher, depois arraste a barra de fundo para redimensionar</strong> - + <strong>Select a partition to install on</strong> <strong>Selecione uma partição para instalar</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Nenhuma partição de sistema EFI foi encontrada neste sistema. Por favor volte atrás e use o particionamento manual para configurar %1. - + The EFI system partition at %1 will be used for starting %2. A partição de sistema EFI em %1 será usada para iniciar %2. - + EFI system partition: Partição de sistema EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento aparenta não ter um sistema operativo. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Apagar disco</strong><br/>Isto irá <font color="red">apagar</font> todos os dados atualmente apresentados no dispositivo de armazenamento selecionado. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento tem %1 nele. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalar paralelamente</strong><br/>O instalador irá encolher a partição para arranjar espaço para %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Substituir a partição</strong><br/>Substitui a partição com %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento já tem um sistema operativo nele. O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Este dispositivo de armazenamento tem múltiplos sistemas operativos nele, O que quer fazer?<br/>Poderá rever e confirmar as suas escolhas antes de qualquer alteração ser feita no dispositivo de armazenamento. @@ -484,17 +505,17 @@ O instalador será encerrado e todas as alterações serão perdidas. ClearMountsJob - + Clear mounts for partitioning operations on %1 Limpar montagens para operações de particionamento em %1 - + Clearing mounts for partitioning operations on %1. A clarear montagens para operações de particionamento em %1. - + Cleared all mounts for %1 Limpar todas as montagens para %1 @@ -502,22 +523,22 @@ O instalador será encerrado e todas as alterações serão perdidas. ClearTempMountsJob - + Clear all temporary mounts. Clarear todas as montagens temporárias. - + Clearing all temporary mounts. A limpar todas as montagens temporárias. - + Cannot get list of temporary mounts. Não é possível obter a lista de montagens temporárias. - + Cleared all temporary mounts. Clareadas todas as montagens temporárias. @@ -530,60 +551,70 @@ O instalador será encerrado e todas as alterações serão perdidas.Criar uma Partição - + + MiB + MiB + + + Partition &Type: Partição &Tamanho: - + &Primary &Primário - + E&xtended E&stendida - + Fi&le System: Sistema de Fi&cheiros: - + Flags: Flags: - + &Mount Point: &Ponto de Montagem: - + Si&ze: Ta&manho: - - MB - MB + + En&crypt + En&criptar - + Logical Lógica - + Primary Primária - + GPT GPT + + + Mountpoint already in use. Please select another one. + Ponto de montagem já em uso. Por favor selecione outro. + CreatePartitionJob @@ -687,67 +718,67 @@ O instalador será encerrado e todas as alterações serão perdidas. CreateUserJob - + Create user %1 Criar utilizador %1 - + Create user <strong>%1</strong>. Criar utilizador <strong>%1</strong>. - + Creating user %1. A criar utilizador %1. - + Sudoers dir is not writable. O diretório dos super utilizadores não é gravável. - + Cannot create sudoers file for writing. Impossível criar ficheiro do super utilizador para escrita. - + Cannot chmod sudoers file. Impossível de usar chmod no ficheiro dos super utilizadores. - + Cannot open groups file for reading. Impossível abrir ficheiro dos grupos para leitura. - + Cannot create user %1. Não é possível criar utilizador %1. - + useradd terminated with error code %1. useradd terminou com código de erro %1. - - Cannot set full name for user %1. - Impossível definir o nome completo para o utilizador %1. + + Cannot add user %1 to groups: %2. + Não é possível adicionar o utilizador %1 aos grupos: %2. - - chfn terminated with error code %1. - chfn terminou com código de erro %1. + + usermod terminated with error code %1. + usermod terminou com código de erro %1. - + Cannot set home directory ownership for user %1. Impossível definir permissão da pasta pessoal para o utilizador %1. - + chown terminated with error code %1. chown terminou com código de erro %1. @@ -793,7 +824,7 @@ O instalador será encerrado e todas as alterações serão perdidas. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. O tipo da <strong>tabela de partições</strong> no dispositivo de armazenamento selecionado.<br><br>A única maneira de mudar o tipo da tabela de partições é apagá-la e recriar a tabela de partições do nada, o que destrói todos os dados no dispositivo de armazenamento.<br>Este instalador manterá a tabela de partições atual a não ser que escolha explicitamente em contrário.<br>Se não tem a certeza, nos sistemas modernos é preferido o GPT. @@ -831,6 +862,32 @@ O instalador será encerrado e todas as alterações serão perdidas.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Escrever configuração LUKS para Dracut em %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Saltar escrita de configuração LUKS para Dracut: partição "/" não está encriptada + + + + Failed to open %1 + Falha ao abrir %1 + + + + DummyCppJob + + + Dummy C++ Job + Tarefa Dummy C++ + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ O instalador será encerrado e todas as alterações serão perdidas.Ta&manho: - + + MiB + MiB + + + Fi&le System: Si&stema de Ficheiros: - + Flags: Flags: + + + Mountpoint already in use. Please select another one. + Ponto de montagem já em uso. Por favor selecione outro. + + + + EncryptWidget + + + Form + Forma + + + + En&crypt system + En&criptar systema + + + + Passphrase + Frase-chave + + + + Confirm passphrase + Confirmar frase-chave + + + + Please enter the same passphrase in both boxes. + Por favor insira a mesma frase-passe em ambas as caixas. + FillGlobalStorageJob - + Set partition information Definir informação da partição - + Install %1 on <strong>new</strong> %2 system partition. Instalar %1 na <strong>nova</strong> %2 partição de sistema. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Criar <strong>nova</strong> %2 partição com ponto de montagem <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalar %2 em %3 partição de sistema <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Criar %3 partitição <strong>%1</strong> com ponto de montagem <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalar carregador de arranque em <strong>%1</strong>. - + Setting up mount points. Definindo pontos de montagem. @@ -930,58 +1025,73 @@ O instalador será encerrado e todas as alterações serão perdidas.&Reiniciar agora - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tudo feito</h1><br/>%1 foi instalado no seu computador.<br/>Pode agora reiniciar para o seu novo sistema, ou continuar a usar o %2 ambiente Live. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Instalação Falhada</h1><br/>%1 não foi instalado no seu computador.<br/>A mensagem de erro foi: %2. + FinishedViewStep - + Finish Finalizar + + + Installation Complete + Instalação Completa + + + + The installation of %1 is complete. + A instalação de %1 está completa. + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatar partição %1 (sistema de ficheiros: %2, tamanho: %3 MB) em %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatar <strong>%3MB</strong> partitição <strong>%1</strong> com sistema de ficheiros <strong>%2</strong>. - + Formatting partition %1 with file system %2. A formatar partição %1 com sistema de ficheiros %2. - + The installer failed to format partition %1 on disk '%2'. O instalador falhou ao formatar a partição %1 no disco '%2'. - + Could not open device '%1'. Não foi possível abrir o dispositivo '%1'. - + Could not open partition table. Não foi possível abrir a tabela de partições. - + The installer failed to create file system on partition %1. O instalador falhou ao criar o sistema de ficheiros na partição %1. - + The installer failed to update partition table on disk '%1'. O instalador falhou ao atualizar a tabela de partições no disco '%1'. @@ -1019,12 +1129,12 @@ O instalador será encerrado e todas as alterações serão perdidas. KeyboardPage - + Set keyboard model to %1.<br/> Definir o modelo do teclado para %1.<br/> - + Set keyboard layout to %1/%2. Definir esquema do teclado para %1/%2. @@ -1032,7 +1142,7 @@ O instalador será encerrado e todas as alterações serão perdidas. KeyboardViewStep - + Keyboard Teclado @@ -1040,15 +1150,25 @@ O instalador será encerrado e todas as alterações serão perdidas. LCLocaleDialog - + System locale setting Definição de localização do Sistema - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. A definição local do sistema afeta o idioma e conjunto de carateres para alguns elementos do interface da linha de comandos.<br/>A definição atual é <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ O instalador será encerrado e todas as alterações serão perdidas. LocalePage - - - The system locale is set to %1. - A localidade do sistema está definida para %1. + + The system language will be set to %1. + A linguagem do sistema será definida para %1. - + + The numbers and dates locale will be set to %1. + Os números e datas locais serão definidos para %1. + + + Region: Região: - + Zone: Zona: - + + &Change... &Alterar... - + Set timezone to %1/%2.<br/> Definir fuso horário para %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... A carregar dados de localização... - + Location Localização @@ -1219,6 +1350,32 @@ O instalador será encerrado e todas as alterações serão perdidas.Não foi possível abrir o dispositivo %1 para reverter a cópia. + + NetInstallPage + + + Name + Nome + + + + Description + Descrição + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalaçao de Rede. (Desativada: Incapaz de buscar listas de pacotes, verifique a sua ligação de rede) + + + + NetInstallViewStep + + + Package selection + Seleção de pacotes + + Page_Keyboard @@ -1255,7 +1412,6 @@ O instalador será encerrado e todas as alterações serão perdidas.Que nome deseja usar para iniciar a sessão? - @@ -1341,7 +1497,12 @@ O instalador será encerrado e todas as alterações serão perdidas.Nova partição para %1 - + + New partition + Nova partição + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ O instalador será encerrado e todas as alterações serão perdidas.Nova partição - + Name Nome - + File System Sistema de Ficheiros - + Mount Point Ponto de Montagem - + Size Tamanho @@ -1399,32 +1560,32 @@ O instalador será encerrado e todas as alterações serão perdidas.&Reverter todas as alterações - + New Partition &Table Nova &Tabela de Partições - + &Create &Criar - + &Edit &Editar - + &Delete &Apagar - + Install boot &loader on: Instalar &carregador de arranque em: - + Are you sure you want to create a new partition table on %1? Tem certeza de que deseja criar uma nova tabela de partições em %1? @@ -1432,89 +1593,99 @@ O instalador será encerrado e todas as alterações serão perdidas. PartitionViewStep - + Gathering system information... A recolher informações do sistema... - + Partitions Partições - + Install %1 <strong>alongside</strong> another operating system. Instalar %1 <strong>paralelamente</strong> a outro sistema operativo. - + <strong>Erase</strong> disk and install %1. <strong>Apagar</strong> disco e instalar %1. - + <strong>Replace</strong> a partition with %1. <strong>Substituir</strong> a partição com %1. - + <strong>Manual</strong> partitioning. Particionamento <strong>Manual</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalar %1 <strong>paralelamente</strong> a outro sistema operativo no disco <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Apagar</strong> disco <strong>%2</strong> (%3) e instalar %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Substituir</strong> a partição no disco <strong>%2</strong> (%3) com %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Particionamento <strong>Manual</strong> no disco <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disco <strong>%1</strong> (%2) - + Current: Atual: - + After: Depois: - + No EFI system partition configured Nenhuma partição de sistema EFI configurada - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + É necessária uma partição de sistema EFI para iniciar %1.<br/><br/>Para configurar uma partição de sistema EFI, volte atrás e selecione ou crie um sistema de ficheiros FAT32 com a flag <strong>esp</strong> ativada e ponto de montagem <strong>%2</strong>.<br/><br/>Pode continuar sem configurar uma partição de sistema EFI mas o seu sistema pode falhar o arranque. - + EFI system partition flag not set flag não definida da partição de sistema EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + É necessária uma partição de sistema EFI para iniciar %1.<br/><br/>A partitição foi configurada com o ponto de montagem <strong>%2</strong> mas a sua flag <strong>esp</strong> não está definida.<br/>Para definir a flag, volte atrás e edite a partição.<br/><br/>Pode continuar sem definir a flag mas o seu sistema pode falhar o arranque. + + + + Boot partition not encrypted + Partição de arranque não encriptada + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Foi preparada uma partição de arranque separada juntamente com uma partição root encriptada, mas a partição de arranque não está encriptada.<br/><br/>Existem preocupações de segurança com este tipo de configuração, por causa de importantes ficheiros de sistema serem guardados numa partição não encriptada.<br/>Se desejar pode continuar, mas o destrancar do sistema de ficheiros irá ocorrer mais tarde durante o arranque do sistema.<br/>Para encriptar a partição de arranque, volte atrás e recrie-a, e selecione <strong>Encriptar</strong> na janela de criação de partições. @@ -1531,20 +1702,25 @@ O instalador será encerrado e todas as alterações serão perdidas.Padrão - + unknown desconhecido - + extended estendido - + unformatted não formatado + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ O instalador será encerrado e todas as alterações serão perdidas.Selecione onde instalar %1.<br/><font color="red">Aviso: </font>isto irá apagar todos os ficheiros na partição selecionada. - + The selected item does not appear to be a valid partition. O item selecionado não aparenta ser uma partição válida. - + %1 cannot be installed on empty space. Please select an existing partition. %1 não pode ser instalado no espaço vazio. Por favor selecione uma partição existente. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 não pode ser instalado numa partição estendida. Por favor selecione uma partição primária ou partição lógica. - + %1 cannot be installed on this partition. %1 não pode ser instalado nesta partição. - + Data partition (%1) Partição de dados (%1) - + Unknown system partition (%1) Partição de sistema desconhecida (%1) - + %1 system partition (%2) %1 partição de sistema (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>A partição %1 é demasiado pequena para %2. Por favor selecione uma partição com pelo menos %3 GiB de capacidade. - + <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/>Uma partição de sistema EFI não pode ser encontrada em nenhum sítio neste sistema. Por favor volte atrás e use o particionamento manual para instalar %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 será instalado na %2.<br/><font color="red">Aviso: </font>todos os dados na partição %2 serão perdidos. - + The EFI system partition at %1 will be used for starting %2. A partição de sistema EFI em %1 será usada para iniciar %2. - + EFI system partition: Partição de sistema EFI: @@ -1629,55 +1805,60 @@ O instalador será encerrado e todas as alterações serão perdidas. RequirementsChecker - + Gathering system information... A recolher informação de sistema... - + has at least %1 GB available drive space tem pelo menos %1 GB de espaço livre em disco - + There is not enough drive space. At least %1 GB is required. Não existe espaço livre suficiente em disco. É necessário pelo menos %1 GB. - + has at least %1 GB working memory tem pelo menos %1 GB de memória disponível - + The system does not have enough working memory. At least %1 GB is required. O sistema não tem memória disponível suficiente. É necessário pelo menos %1 GB. - + is plugged in to a power source está ligado a uma fonte de energia - + The system is not plugged in to a power source. O sistema não está ligado a uma fonte de energia. - + is connected to the Internet está ligado à internet - + The system is not connected to the Internet. O sistema não está ligado à internet. - + The installer is not running with administrator rights. O instalador não está a correr com permissões de administrador. + + + The screen is too small to display the installer. + O ecrã tem um tamanho demasiado pequeno para mostrar o instalador. + ResizeFileSystemJob @@ -1772,73 +1953,129 @@ O instalador será encerrado e todas as alterações serão perdidas. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Definir modelo do teclado para %1, disposição para %2-%3 - + Failed to write keyboard configuration for the virtual console. Falha ao escrever configuração do teclado para a consola virtual. - - + + + Failed to write to %1 Falha ao escrever para %1 - + Failed to write keyboard configuration for X11. Falha ao escrever configuração do teclado para X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Falha ao escrever a configuração do teclado para a diretoria /etc/default existente. + SetPartFlagsJob - + Set flags on partition %1. - + Definir flags na partição %1. - + + Set flags on %1MB %2 partition. + Definir flags na %1MB %2 partição. + + + + Set flags on new partition. + Definir flags na nova partição. + + + Clear flags on partition <strong>%1</strong>. - + Limpar flags na partitição <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Limpar flags na %1MB <strong>%2</strong> partição. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Limpar flags na nova partição. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Definir flag da partição <strong>%1</strong> como <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Flag %1MB <strong>%2</strong> partição como <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Nova partição com flag <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + A limpar flags na partição <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + A limpar flags na %1MB <strong>%2</strong> partição. + + + + Clearing flags on new partition. + A limpar flags na nova partição. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + A definir flags <strong>%2</strong> na partitição <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + A definir flags <strong>%3</strong> na %1MB <strong>%2</strong> partição. + + + + Setting flags <strong>%1</strong> on new partition. + A definir flags <strong>%1</strong> na nova partição. + + + The installer failed to set flags on partition %1. - + O instalador falhou ao definir flags na partição %1. - + Could not open device '%1'. - + Não foi possível abrir o dispositvo '%1'. - + Could not open partition table on device '%1'. - + Não foi possível abrir a tabela de partições no dispositivo '%1'. - + Could not find partition '%1'. - + Não foi possível encontrar a partição '%1'. @@ -1857,32 +2094,42 @@ O instalador será encerrado e todas as alterações serão perdidas. SetPasswordJob - + Set password for user %1 Definir palavra-passe para o utilizador %1 - + Setting password for user %1. A definir palavra-passe para o utilizador %1. - + Bad destination system path. Mau destino do caminho do sistema. - + rootMountPoint is %1 rootMountPoint é %1 - + + Cannot disable root account. + Não é possível desativar a conta root. + + + + passwd terminated with error code %1. + passwd terminado com código de erro %1. + + + Cannot set password for user %1. Não é possível definir a palavra-passe para o utilizador %1. - + usermod terminated with error code %1. usermod terminou com código de erro %1. @@ -1915,12 +2162,12 @@ O instalador será encerrado e todas as alterações serão perdidas.Falha na criação de ligação, alvo: %1; nome da ligação: %2 - + Cannot set timezone, Não é possível definir o fuso horário, - + Cannot open /etc/timezone for writing Não é possível abrir /etc/timezone para escrita @@ -1944,33 +2191,33 @@ O instalador será encerrado e todas as alterações serão perdidas. UsersPage - + Your username is too long. O seu nome de utilizador é demasiado longo. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. O seu nome de utilizador contem caractéres inválidos. Apenas letras minúsculas e números são permitidos. - + Your hostname is too short. O nome da sua máquina é demasiado curto. - + Your hostname is too long. O nome da sua máquina é demasiado longo. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. O nome da sua máquina contém caratéres inválidos. Apenas letras, números e traços são permitidos. - - + + Your passwords do not match! As suas palavras-passe não coincidem! @@ -2016,22 +2263,27 @@ O instalador será encerrado e todas as alterações serão perdidas.&Sobre - + <h1>Welcome to the %1 installer.</h1> - <h1>Bem vindo ao %1 instalador.</h1> + <h1>Bem vindo ao instalador do %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Bem vindo ao instalador Calamares para %1.</h1> + + + About %1 installer Sobre %1 instalador - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>Direitos de Cópia 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> desenvolvimento patrocinado por <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>Direitos de Cópia 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Direitos de Cópia 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Agradecimentos a: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg e para <a href="https://www.transifex.com/calamares/calamares/">a equipa de tradutores do Calamares</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> desenvolvimento apoiado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 suporte @@ -2039,7 +2291,7 @@ O instalador será encerrado e todas as alterações serão perdidas. WelcomeViewStep - + Welcome Bem-vindo diff --git a/lang/calamares_ro.ts b/lang/calamares_ro.ts index 68f7a6e82..9bcbe3aba 100644 --- a/lang/calamares_ro.ts +++ b/lang/calamares_ro.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Alegeți partiția de micșorat: - - - - Allocate drive space by dragging the divider below: - Alocați spațiu pe disc trăgând despărțitorul: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Cu această operație, partiția <strong>%1</strong>, cu mărimea de %4, va fi redusă la %2MB și se va crea o nouă partiție de %3MB pentru %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - O partiție de sistem EFI nu se găsește nicăieri pe acest sistem. Vă rugăm să reveniți și să utilizați partiționarea manuală pentru a seta %1. - - - - The EFI system partition at %1 will be used for starting %2. - Partiția de sistem EFI de pe %1 va fi folosită pentru a începe %2. - - - - EFI system partition: - Partiție de sistem EFI - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. <strong>Mediul de boot</strong> al acestui sistem.<br><br>Sisteme x86 mai vechi suportă numai <strong>BIOS</strong>.<br>Sisteme moderne folosesc de obicei <strong>EFI</strong>, dar ar putea fi afișate ca BIOS dacă au fost configurate în modul de compatibilitate. - + 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. Acest sistem a fost pornit într-un mediu de boot <strong>EFI</strong>.<br><br>Pentru a configura pornirea dintr-un mediu EFI, acest program de instalare trebuie să creeze o aplicație pentru boot-are, cum ar fi <strong>GRUB</strong> sau <strong>systemd-boot</strong> pe o <strong>partiție de sistem EFI</strong>. Acest pas este automat, cu excepția cazului în care alegeți partiționarea manuală. - + 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. Sistemul a fost pornit într-un mediu de boot <strong>BIOS</strong>.<br><br>Pentru a configura pornirea de la un mediu BIOS, programul de instalare trebuie să instaleze un mediu de boot, cum ar fi <strong>GRUB</strong> fie la începutul unei partiții sau pe <strong>Master Boot Record</strong> în partea de început a unei tabele de partiții (preferabil). Acesta este un pas automat, cu excepția cazului în care alegeți partiționarea manuală. @@ -101,7 +68,28 @@ Module - + + Type: + Tipul: + + + + + none + nimic + + + + Interface: + Interfața: + + + + Tools + Unelte + + + Debug information Informație pentru depanare @@ -200,32 +188,32 @@ Rezultat: Calamares::PythonJob - + Running %1 operation. Se rulează operațiunea %1. - + Bad working directory path Calea dosarului de lucru este proastă - + Working directory %1 for python job %2 is not readable. Dosarul de lucru %1 pentru sarcina python %2 nu este citibil. - + Bad main script file Fișierul script principal este prost - + Main script file %1 for python job %2 is not readable. Fișierul script peincipal %1 pentru sarcina Python %2 nu este citibil. - + Boost.Python error in job "%1". Eroare Boost.Python în sarcina „%1”. @@ -233,65 +221,91 @@ Rezultat: Calamares::ViewManager - + &Back &Înapoi - + &Next &Următorul - - + + &Cancel &Anulează - + + + Cancel installation without changing the system. + + + + Cancel installation? Anulez instalarea? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Doriți să anulați procesul curent de instalare? Programul de instalare va ieși, iar toate modificările vor fi pierdute. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Continuați configurarea? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Programul de instalare %1 este pregătit să facă schimbări pe discul dumneavoastră pentru a instala %2.<br/><strong>Nu veți putea anula aceste schimbări.</strong> - + &Install now &Instalează acum - + Go &back Î&napoi - - &Quit - &Ieșire + + &Done + - + + The installation is complete. Close the installer. + + + + Error Eroare - + Installation Failed Instalare eșuată @@ -299,22 +313,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CalamaresPython::Helper - + Unknown exception type Tip de excepție necunoscut - + unparseable Python error Eroare Python neanalizabilă - + unparseable Python traceback Traceback Python neanalizabil - + Unfetchable Python error. Eroare Python nepreluabilă @@ -322,12 +336,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CalamaresWindow - + %1 Installer Program de instalare %1 - + Show debug information Arată informația de depanare @@ -335,12 +349,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CheckFileSystemJob - + Checking file system on partition %1. Se verifică sistemul de fișiere pe partiția %1. - + The file system check on partition %1 failed. Verificarea sistemului de fișiere pe %1 a eșuat. @@ -348,7 +362,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Acest calculator nu satisface cerințele minimale pentru instalarea %1.<br/>Instalarea nu poate continua. <a href="#details">Detalii...</a> @@ -358,17 +372,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Acest calculator nu satisface unele din cerințele recomandate pentru instalarea %1.<br/>Instalarea poate continua, dar unele funcții ar putea fi dezactivate. - + This program will ask you some questions and set up %2 on your computer. Acest program vă va pune mai multe întrebări și va seta %2 pe calculatorul dumneavoastră. - + For best results, please ensure that this computer: Pentru rezultate optime, asigurați-vă că acest calculator: - + System requirements Cerințe de sistem @@ -381,102 +395,109 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Formular - + After: După: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Partiționare manuală</strong><br/>Puteți crea sau redimensiona partițiile. - + Boot loader location: Locație boot loader: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 va fi micșorată la %2MB și o nouă partiție %3MB va fi creată pentru %4. - + Select storage de&vice: Selectează dispoziti&vul de stocare: - - - - + + + + Current: Actual: - + + Reuse %1 as home partition for %2. + Reutilizează %1 ca partiție home pentru %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Selectează o partiție de micșorat, apoi trageți bara din jos pentru a redimensiona</strong> - + <strong>Select a partition to install on</strong> <strong>Selectează o partiție pe care să se instaleze</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. O partiție de sistem EFI nu poate fi găsită nicăieri în acest sistem. Vă rugăm să reveniți și să partiționați manual pentru a seta %1. - + The EFI system partition at %1 will be used for starting %2. Partiția de sistem EFI de la %1 va fi folosită pentru a porni %2. - + EFI system partition: Partiție de sistem EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare nu pare să aibă un sistem de operare instalat. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte să fie realizate schimbări pe dispozitivul de stocare. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Șterge discul</strong><br/>Aceasta va <font color="red">șterge</font> toate datele prezente pe dispozitivul de stocare selectat. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are %1. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte să fie realizate schimbări pe dispozitivul de stocare. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Instalează laolaltă</strong><br/>Instalatorul va micșora o partiție pentru a face loc pentru %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>Înlocuiește o partiție</strong><br/>Înlocuiește o partiție cu %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are deja un sistem de operare instalat. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte de se realiza schimbări pe dispozitivul de stocare. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Acest dispozitiv de stocare are mai multe sisteme de operare instalate. Ce doriți să faceți?<br/>Veți putea revedea și confirma alegerile făcute înainte de a se realiza schimbări pe dispozitivul de stocare. @@ -484,17 +505,17 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ClearMountsJob - + Clear mounts for partitioning operations on %1 Eliminați montările pentru operațiunea de partiționare pe %1 - + Clearing mounts for partitioning operations on %1. Se elimină montările pentru operațiunile de partiționare pe %1. - + Cleared all mounts for %1 S-au eliminat toate punctele de montare pentru %1 @@ -502,22 +523,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. ClearTempMountsJob - + Clear all temporary mounts. Elimină toate montările temporare. - + Clearing all temporary mounts. Se elimină toate montările temporare. - + Cannot get list of temporary mounts. Nu se poate obține o listă a montărilor temporare. - + Cleared all temporary mounts. S-au eliminat toate montările temporare. @@ -530,60 +551,70 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Creează o partiție - + + MiB + + + + Partition &Type: &Tip de partiție: - + &Primary &Primară - + E&xtended E&xtinsă - + Fi&le System: Sis&tem de fișiere: - + Flags: Flags: - + &Mount Point: Punct de &Montare - + Si&ze: Mă&rime: - - MB - MB + + En&crypt + &Criptează - + Logical Logică - + Primary Primară - + GPT GPT + + + Mountpoint already in use. Please select another one. + Punct de montare existent. Vă rugăm alegeţi altul. + CreatePartitionJob @@ -687,67 +718,67 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. CreateUserJob - + Create user %1 Creează utilizatorul %1 - + Create user <strong>%1</strong>. Creează utilizatorul <strong>%1</strong>. - + Creating user %1. Se creează utilizator %1. - + Sudoers dir is not writable. Nu se poate scrie în dosarul sudoers. - + Cannot create sudoers file for writing. Nu se poate crea fișierul sudoers pentru scriere. - + Cannot chmod sudoers file. Nu se poate chmoda fișierul sudoers. - + Cannot open groups file for reading. Nu se poate deschide fișierul groups pentru citire. - + Cannot create user %1. Nu se poate crea utilizatorul %1. - + useradd terminated with error code %1. useradd s-a terminat cu codul de eroare %1. - - Cannot set full name for user %1. - Nu se poate seta numele complet pentru utilizatorul %1. + + Cannot add user %1 to groups: %2. + Nu s-a reușit adăugarea utilizatorului %1 la grupurile: %2 - - chfn terminated with error code %1. - chfn s-a terminat cu codul de eroare %1. + + usermod terminated with error code %1. + usermod s-a terminat cu codul de eroare %1. - + Cannot set home directory ownership for user %1. Nu se poate seta apartenența dosarului home pentru utilizatorul %1. - + chown terminated with error code %1. chown s-a terminat cu codul de eroare %1. @@ -793,7 +824,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Tipul de <strong>tabelă de partiții</strong> de pe dispozitivul de stocare selectat.<br><br>Singura metodă de a schimba tipul de tabelă de partiții este ștergerea și recrearea acesteia de la zero, ceea de distruge toate datele de pe dispozitivul de stocare.<br>Acest program de instalare va păstra tabela de partiții actuală cu excepția cazului în care alegeți altfel.<br>Dacă nu sunteți sigur, GPT este preferabil pentru sistemele moderne. @@ -831,6 +862,32 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Scrie configurația LUKS pentru Dracut pe %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Omite scrierea configurației LUKS pentru Dracut: partiția „/” nu este criptată + + + + Failed to open %1 + Nu s-a reușit deschiderea %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Mă&rime - + + MiB + + + + Fi&le System: Sis&tem de fișiere: - + Flags: Flags: + + + Mountpoint already in use. Please select another one. + Punct de montare existent. Vă rugăm alegeţi altul. + + + + EncryptWidget + + + Form + Formular + + + + En&crypt system + Sistem de &criptare + + + + Passphrase + Frază secretă + + + + Confirm passphrase + Confirmă fraza secretă + + + + Please enter the same passphrase in both boxes. + Introduceți aceeași frază secretă în ambele căsuțe. + FillGlobalStorageJob - + Set partition information Setează informația pentru partiție - + Install %1 on <strong>new</strong> %2 system partition. Instalează %1 pe <strong>noua</strong> partiție de sistem %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Setează <strong>noua</strong> partiție %2 cu punctul de montare <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Instalează %2 pe partiția de sistem %3 <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Setează partiția %3 <strong>%1</strong> cu punctul de montare <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Instalează bootloader-ul pe <strong>%1</strong>. - + Setting up mount points. Se setează puncte de montare. @@ -930,58 +1025,73 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.&Repornește acum - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Gata.</h1><br/>%1 a fost instalat pe calculatorul dumneavoastră.<br/>Puteți reporni noul sistem, sau puteți continua să folosiți sistemul de operare portabil %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Termină + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatează partiția %1 (sistem de fișiere: %2, mărime: %3 MB) pe %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Formatează partiția <strong>%1</strong>, de <strong>%3MB</strong> cu sistemul de fișiere <strong>%2</strong>. - + Formatting partition %1 with file system %2. Se formatează partiția %1 cu sistemul de fișiere %2. - + The installer failed to format partition %1 on disk '%2'. Programul de instalare nu a putut formata partiția %1 pe discul „%2”. - + Could not open device '%1'. Nu se poate deschide dispozitivul „%1. - + Could not open partition table. Nu se poate deschide tabela de partiții. - + The installer failed to create file system on partition %1. Programul de instalare nu a putut crea sistemul de fișiere pe partiția %1. - + The installer failed to update partition table on disk '%1'. Programul de instalare nu a putut actualiza tabela de partiții pe discul „%1”. @@ -1019,12 +1129,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. KeyboardPage - + Set keyboard model to %1.<br/> Setează modelul tastaturii la %1.<br/> - + Set keyboard layout to %1/%2. Setează aranjamentul de tastatură la %1/%2. @@ -1032,7 +1142,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. KeyboardViewStep - + Keyboard Tastatură @@ -1040,15 +1150,25 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LCLocaleDialog - + System locale setting Setările de localizare - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Setările de localizare ale sistemului afectează limba și setul de caractere folosit pentru unele elemente de interfață la linia de comandă.<br/>Setările actuale sunt <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. LocalePage - - - The system locale is set to %1. - Sistemul are localizarea setată pentru %1. + + The system language will be set to %1. + Limba sistemului va fi %1. - + + The numbers and dates locale will be set to %1. + Formatul numerelor și datelor calendaristice va fi %1. + + + Region: Regiune: - + Zone: Zonă: - + + &Change... S&chimbă - + Set timezone to %1/%2.<br/> Setează fusul orar la %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Se încarcă datele locației... - + Location Locație @@ -1219,6 +1350,32 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Nu se poate deschide dispozitivul %1 pentru retragerea copierii. + + NetInstallPage + + + Name + Nume + + + + Description + Despre + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Instalarea rețelei. (Dezactivat: Nu se pot obține listele de pachete, verificați conexiunea la rețea) + + + + NetInstallViewStep + + + Package selection + Selecția pachetelor + + Page_Keyboard @@ -1255,7 +1412,6 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Ce nume doriți să utilizați pentru logare? - @@ -1341,7 +1497,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Noua partiție pentru %1 - + + New partition + Noua partiție + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Partiție nouă - + Name Nume - + File System Sistem de fișiere - + Mount Point Punct de montare - + Size Mărime @@ -1399,32 +1560,32 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.&Retrage toate schimbările - + New Partition &Table &Tabelă nouă de partiții - + &Create &Crează - + &Edit &Editează - + &Delete &Șterge - + Install boot &loader on: Instalează boot&loaderul pe: - + Are you sure you want to create a new partition table on %1? Sigur doriți să creați o nouă tabelă de partiție pe %1? @@ -1432,90 +1593,100 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. PartitionViewStep - + Gathering system information... Se adună informații despre sistem... - + Partitions Partiții - + Install %1 <strong>alongside</strong> another operating system. Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare. - + <strong>Erase</strong> disk and install %1. <strong>Șterge</strong> discul și instalează %1. - + <strong>Replace</strong> a partition with %1. <strong>Înlocuiește</strong> o partiție cu %1. - + <strong>Manual</strong> partitioning. Partiționare <strong>manuală</strong>. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Instalează %1 <strong>laolaltă</strong> cu un alt sistem de operare pe discul <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Șterge</strong> discul <strong>%2</strong> (%3) și instalează %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Înlocuiește</strong> o partiție pe discul <strong>%2</strong> (%3) cu %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). Partiționare <strong>manuală</strong> a discului <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Discul <strong>%1</strong> (%2) - + Current: Actual: - + After: După: - + No EFI system partition configured Nicio partiție de sistem EFI nu a fost configurată - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. Este necesară o partiție de sistem EFI pentru a porni %1.<br/><br/>Pentru a configura o partiție de sistem EFI, reveniți și selectați sau creați o partiție FAT32 cu flag-ul <strong>esp</strong> activat și montată la <strong>%2</strong>.<br/><br/>Puteți continua și fără configurarea unei partiții de sistem EFI, dar este posibil ca sistemul să nu pornească. - + EFI system partition flag not set Flag-ul de partiție de sistem pentru EFI nu a fost setat - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. O partiție de sistem EFI este necesară pentru a porni %1.<br/><br/>A fost configurată o partiție cu punct de montare la <strong>%2</strong> dar flag-ul <strong>esp</strong> al acesteia nu a fost setat.<br/>Pentru a seta flag-ul, reveniți și editați partiția.<br/><br/>Puteți continua și fără setarea flag-ului, dar este posibil ca sistemul să nu pornească. + + + Boot partition not encrypted + Partiția de boot nu este criptată + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + A fost creată o partiție de boot împreună cu o partiție root criptată, dar partiția de boot nu este criptată.<br/><br/>Sunt potențiale probleme de securitate cu un astfel de aranjament deoarece importante fișiere de sistem sunt păstrate pe o partiție necriptată.<br/>Puteți continua dacă doriți, dar descuierea sistemului se va petrece mai târziu în timpul pornirii.<br/>Pentru a cripta partiția de boot, reveniți și recreați-o, alegând opțiunea <strong>Criptează</strong> din fereastra de creare de partiții. + QObject @@ -1531,20 +1702,25 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Implicit - + unknown necunoscut - + extended extins - + unformatted neformatat + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Selectați locul în care să instalați %1.<br/><font color="red">Atenție: </font>aceasta va șterge toate fișierele de pe partiția selectată. - + The selected item does not appear to be a valid partition. Elementul selectat nu pare a fi o partiție validă. - + %1 cannot be installed on empty space. Please select an existing partition. %1 nu poate fi instalat în spațiul liber. Vă rugăm să alegeți o partiție existentă. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 nu poate fi instalat pe o partiție extinsă. Vă rugăm selectați o partiție primară existentă sau o partiție logică. - + %1 cannot be installed on this partition. %1 nu poate fi instalat pe această partiție. - + Data partition (%1) Partiție de date (%1) - + Unknown system partition (%1) Partiție de sistem necunoscută (%1) - + %1 system partition (%2) %1 partiție de sistem (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partiția %1 este prea mică pentru %2. Vă rugăm selectați o partiție cu o capacitate de cel puțin %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>O partiție de sistem EFI nu a putut fi găsită nicăieri pe sistem. Vă rugăm să reveniți și să utilizați partiționarea manuală pentru a seta %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 va fi instalat pe %2.<br/><font color="red">Atenție: </font>toate datele de pe partiția %2 se vor pierde. - + The EFI system partition at %1 will be used for starting %2. Partiția de sistem EFI de la %1 va fi folosită pentru a porni %2. - + EFI system partition: Partiție de sistem EFI: @@ -1629,55 +1805,60 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. RequirementsChecker - + Gathering system information... Se adună informații despre sistem... - + has at least %1 GB available drive space are cel puțin %1 spațiu disponibil - + There is not enough drive space. At least %1 GB is required. Nu este suficient spațiu disponibil. Sunt necesari cel puțin %1 GB. - + has at least %1 GB working memory are cel puțin %1 GB de memorie utilizabilă - + The system does not have enough working memory. At least %1 GB is required. Sistemul nu are suficientă memorie utilizabilă. Sunt necesari cel puțin %1 GB. - + is plugged in to a power source este alimentat cu curent - + The system is not plugged in to a power source. Sistemul nu este alimentat cu curent. - + is connected to the Internet este conectat la Internet - + The system is not connected to the Internet. Sistemul nu este conectat la Internet. - + The installer is not running with administrator rights. Programul de instalare nu rulează cu privilegii de administrator. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Setează modelul de tastatură la %1, cu aranjamentul %2-%3 - + Failed to write keyboard configuration for the virtual console. Nu s-a reușit scrierea configurației de tastatură pentru consola virtuală. - - + + + Failed to write to %1 Nu s-a reușit scrierea %1 - + Failed to write keyboard configuration for X11. Nu s-a reușit scrierea configurației de tastatură pentru X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Nu s-a reușit scrierea configurației de tastatură în directorul existent /etc/default. + SetPartFlagsJob - + Set flags on partition %1. Setează flag-uri pentru partiția %1. - + + Set flags on %1MB %2 partition. + Setează flagurile pe partiția %2 de %1MB. + + + + Set flags on new partition. + Setează flagurile pe noua partiție. + + + Clear flags on partition <strong>%1</strong>. Șterge flag-urile partiției <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Elimină flagurile pe partiția <strong>%2</strong> de %1MB. + + + + Clear flags on new partition. + Elimină flagurile pentru noua partiție. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Marchează partiția <strong>%1</strong> cu flag-ul <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Marchează partiția <strong>%2</strong> de %1MB ca <strong>%3</strong>. + + + + Flag new partition as <strong>%1</strong>. + Marchează noua partiție ca <strong>%1</strong>. + + + Clearing flags on partition <strong>%1</strong>. Se șterg flag-urile pentru partiția <strong>%1</strong>. - + + Clearing flags on %1MB <strong>%2</strong> partition. + Se elimină flagurile pe partiția <strong>%2</strong> de %1MB. + + + + Clearing flags on new partition. + Se elimină flagurile de pe noua partiție. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. Se setează flag-urile <strong>%2</strong> pentru partiția <strong>%1</strong>. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Se setează flagurile <strong>%3</strong> pe partiția <strong>%2</strong> de %1MB. + + + + Setting flags <strong>%1</strong> on new partition. + Se setează flagurile <strong>%1</strong> pe noua partiție. + + + The installer failed to set flags on partition %1. Programul de instalare a eșuat în setarea flag-urilor pentru partiția %1. - + Could not open device '%1'. Nu s-a putut deschide dispozitivul „%1”. - + Could not open partition table on device '%1'. Nu s-a putut deschide tabela de partiții pentru dispozitivul „%1”. - + Could not find partition '%1'. Nu a fost găsită partiția „%1”. @@ -1857,32 +2094,42 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. SetPasswordJob - + Set password for user %1 Setează parola pentru utilizatorul %1 - + Setting password for user %1. Se setează parola pentru utilizatorul %1. - + Bad destination system path. Cale de sistem destinație proastă. - + rootMountPoint is %1 rootMountPoint este %1 - + + Cannot disable root account. + Nu pot dezactiva contul root + + + + passwd terminated with error code %1. + eroare la setarea parolei cod %1 + + + Cannot set password for user %1. Nu se poate seta parola pentru utilizatorul %1. - + usermod terminated with error code %1. usermod s-a terminat cu codul de eroare %1. @@ -1915,12 +2162,12 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.Crearea legăturii eșuată, ținta: %1; numele legăturii: 2 - + Cannot set timezone, Nu se poate seta fusul orar, - + Cannot open /etc/timezone for writing Nu se poate deschide /etc/timezone pentru scriere @@ -1944,33 +2191,33 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. UsersPage - + Your username is too long. Numele de utilizator este prea lung. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Numele de utilizator conține caractere invalide. Folosiți doar litere mici și numere. - + Your hostname is too short. Hostname este prea scurt. - + Your hostname is too long. Hostname este prea lung. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Hostname conține caractere invalide. Folosiți doar litere, numere și cratime. - - + + Your passwords do not match! Parolele nu se potrivesc! @@ -2016,22 +2263,27 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute.&Despre - + <h1>Welcome to the %1 installer.</h1> <h1>Bine ați venit la programul de instalare pentru %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Despre programul de instalare %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Mulțumiri: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini și Rohan Garg.<br/><br/>Dezvoltarea <a href="http://calamares.io/">Calamares</a> este suportată de <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Noi eliberăm software-ul. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1 suport @@ -2039,7 +2291,7 @@ Programul de instalare va ieși, iar toate modificările vor fi pierdute. WelcomeViewStep - + Welcome Bine ați venit diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index f7c62515d..4f7ca92f0 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Выберите раздел для уменьшения: - - - - Allocate drive space by dragging the divider below: - Выделите дисковое пространство, перемещая ползунок: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Это действие уменьшит раздел <strong>%1</strong>, содержащий %4, до %2 MB, и создаст новый раздел %3 MB для %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Не удалось найти системный раздел EFI в этой системе. Пожалуйста, вернитесь назад и выполните ручную разметку для установки %1. - - - - The EFI system partition at %1 will be used for starting %2. - Системный раздел EFI на %1 будет использован для запуска %2. - - - - EFI system partition: - Системный раздел EFI: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. <strong>Среда загрузки</strong> данной системы.<br><br>Старые системы x86 поддерживают только <strong>BIOS</strong>.<br>Современные системы обычно используют <strong>EFI</strong>, но также могут имитировать BIOS, если среда загрузки запущена в режиме совместимости. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. Эта система использует среду загрузки <strong>EFI</strong>.<br><br>Чтобы настроить запуск из под среды EFI, установщик использует приложения загрузки, такое как <strong>GRUB</strong> или <strong>systemd-boot</strong> на <strong>системном разделе EFI</strong>. Процесс автоматизирован, но вы можете использовать ручной режим, где вы сами будете должны выбрать или создать его. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. Эта система запущена в <strong>BIOS</strong> среде загрузки.<br><br> Чтобы настроить запуск из под среды BIOS, установщик должен установить загручик, такой как <strong>GRUB</strong>, либо в начале раздела, либо в <strong>Master Boot Record</strong>, находящийся в начале таблицы разделов (по умолчанию). Процесс автоматизирован, но вы можете выбрать ручной режим, где будете должны настроить его сами. @@ -101,7 +68,28 @@ Модули - + + Type: + Тип: + + + + + none + нет + + + + Interface: + Интерфейс: + + + + Tools + Инструменты + + + Debug information Отладочная информация @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. Выполняется действие %1. - + Bad working directory path Неверный путь к рабочему каталогу - + Working directory %1 for python job %2 is not readable. Рабочий каталог %1 для задачи python %2 недоступен для чтения. - + Bad main script file Ошибочный главный файл сценария - + Main script file %1 for python job %2 is not readable. Главный файл сценария %1 для задачи python %2 недоступен для чтения. - + Boost.Python error in job "%1". Boost.Python ошибка в задаче "%1". @@ -233,64 +221,90 @@ Output: Calamares::ViewManager - + &Back &Назад - + &Next &Далее - - + + &Cancel О&тмена - + + + Cancel installation without changing the system. + + + + Cancel installation? Отменить установку? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Действительно прервать процесс установки? Программа установки сразу прекратит работу, все изменения будут потеряны. - + + &Yes + &Да + + + + &No + &Нет + + + + &Close + &Закрыть + + + Continue with setup? Продолжить установку? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> Программа установки %1 готова внести изменения на Ваш диск, чтобы установить %2.<br/><strong>Отменить эти изменения будет невозможно.</strong> - + &Install now Приступить к &установке - + Go &back &Назад - - &Quit - &Выйти + + &Done + - + + The installation is complete. Close the installer. + Установка завершена. Закройте установщик. + + + Error Ошибка - + Installation Failed Установка завершилась неудачей @@ -298,22 +312,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Неизвестный тип исключения - + unparseable Python error неподдающаяся обработке ошибка Python - + unparseable Python traceback неподдающийся обработке traceback Python - + Unfetchable Python error. Неизвестная ошибка Python @@ -321,12 +335,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer Программа установки %1 - + Show debug information Показать отладочную информацию @@ -334,12 +348,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Проверка файловой системы на разделе %1. - + The file system check on partition %1 failed. Проверка файловой системы на разделе %1 завершилась неудачей. @@ -347,7 +361,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Этот компьютер не соответствует минимальным требованиям для установки %1.<br/>Невозможно продолжить установку. <a href="#details">Подробнее...</a> @@ -357,17 +371,17 @@ The installer will quit and all changes will be lost. Этот компьютер соответствует не всем рекомендуемым требованиям для установки %1.<br/>Можно продолжить установку, но некоторые возможности могут быть недоступны. - + This program will ask you some questions and set up %2 on your computer. Эта программа задаст вам несколько вопросов и поможет установить %2 на ваш компьютер. - + For best results, please ensure that this computer: Для наилучших результатов, убедитесь, что этот компьютер: - + System requirements Системные требования @@ -380,102 +394,109 @@ The installer will quit and all changes will be lost. Форма - + After: После: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Ручная разметка</strong><br/>Вы можете самостоятельно создавать разделы или изменять их размеры. - + Boot loader location: Расположение загрузчика: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 будет уменьшен до %2MB и новый раздел %3MB будет создан для %4. - + Select storage de&vice: Выбрать устройство &хранения: - - - - + + + + Current: Текущий: - + + Reuse %1 as home partition for %2. + Использовать %1 как домашний раздел для %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - <strong>Выбрать раздел для уменьшения, затем сдвиньте ползунок для изменения размера</strong> + <strong>Выберите раздел для уменьшения, затем двигайте ползунок, изменяя размер</strong> - + <strong>Select a partition to install on</strong> - <strong>Выбрать раздела для установки на</strong> + <strong>Выберите раздел для установки</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Не найдено системного раздела EFI. Пожалуйста, вернитесь назад и выполните ручную разметку %1. - + The EFI system partition at %1 will be used for starting %2. Системный раздел EFI на %1 будет использован для запуска %2. - + EFI system partition: Системный раздел EFI: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Видимо, на этом устройстве нет операционной системы. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Стереть диск</strong><br/>Это <font color="red">удалит</font> все данные, которые сейчас находятся на выбранном устройстве. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве есть %1. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Установить рядом</strong><br/>Программа установки уменьшит раздел, чтобы освободить место для %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>Изменить раздел</strong><br/>Изменяет раздел на %1. + <strong>Заменить раздел</strong><br/>Меняет раздел на %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве уже есть операционная система. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. На этом устройстве есть несколько операционных систем. Что Вы хотите сделать?<br/>Вы сможете изменить или подтвердить свой выбор до того, как на устройстве будут сделаны какие-либо изменения. @@ -483,17 +504,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Освободить точки монтирования для выполнения разметки на %1 - + Clearing mounts for partitioning operations on %1. Освобождаются точки монтирования для выполнения разметки на %1. - + Cleared all mounts for %1 Освобождены все точки монтирования для %1 @@ -501,22 +522,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. Освободить все временные точки монтирования. - + Clearing all temporary mounts. Освобождаются все временные точки монтирования. - + Cannot get list of temporary mounts. Не удалось получить список временных точек монтирования. - + Cleared all temporary mounts. Освобождены все временные точки монтирования. @@ -529,60 +550,70 @@ The installer will quit and all changes will be lost. Создать раздел - + + MiB + + + + Partition &Type: &Тип раздела: - + &Primary &Основной - + E&xtended &Расширенный - + Fi&le System: &Файловая система: - + Flags: Флаги: - + &Mount Point: Точка &монтирования - + Si&ze: Ра&змер: - - MB - МБ + + En&crypt + Ши&фровать - + Logical Логический - + Primary Основной - + GPT GPT + + + Mountpoint already in use. Please select another one. + Точка монтирования уже занята. Пожалуйста, выберете другую. + CreatePartitionJob @@ -686,67 +717,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Создать учетную запись %1 - + Create user <strong>%1</strong>. Создать учетную запись <strong>%1</strong>. - + Creating user %1. Создается учетная запись %1. - + Sudoers dir is not writable. Каталог sudoers не доступен для записи. - + Cannot create sudoers file for writing. Не удалось записать файл sudoers. - + Cannot chmod sudoers file. Не удалось применить chmod к файлу sudoers. - + Cannot open groups file for reading. Не удалось открыть файл groups для чтения. - + Cannot create user %1. Не удалось создать учетную запись пользователя %1. - + useradd terminated with error code %1. Команда useradd завершилась с кодом ошибки %1. - - Cannot set full name for user %1. - Не удалось задать полное имя для пользователя %1. + + Cannot add user %1 to groups: %2. + Не удается добавить пользователя %1 в группы: %2. - - chfn terminated with error code %1. - Команда chfn завершилась с кодом ошибки %1. + + usermod terminated with error code %1. + Команда usermod завершилась с кодом ошибки %1. - + Cannot set home directory ownership for user %1. Не удалось задать владельца домашней папки пользователя %1. - + chown terminated with error code %1. Команда chown завершилась с кодом ошибки %1. @@ -792,7 +823,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Тип <strong>таблицы разделов</strong> на выбраном устройстве хранения.<br><br>Смена типа раздела возможна только путем удаления и пересоздания всей таблицы разделов, что уничтожит все данные на устройстве.<br>Этот установщик не затронет текущую таблицу разделов, кроме как вы сами решите иначе.<br>По умолчанию, современные системы используют GPT-разметку. @@ -830,6 +861,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Пропустить сохранение LUKS настроек для Dracut: "/" раздел не зашифрован + + + + Failed to open %1 + Не удалось открыть %1 + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -868,50 +925,88 @@ The installer will quit and all changes will be lost. Ра&змер: - + + MiB + + + + Fi&le System: &Файловая система: - + Flags: Флаги: + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + Форма + + + + En&crypt system + Система &шифрования + + + + Passphrase + Пароль + + + + Confirm passphrase + Подтвердите пароль + + + + Please enter the same passphrase in both boxes. + Пожалуйста, введите один и тот же пароль в оба поля. + FillGlobalStorageJob - + Set partition information Установить сведения о разделе - + Install %1 on <strong>new</strong> %2 system partition. - Установить %1 на <strong>новый</strong> %2 системный раздел. + Установить %1 на <strong>новый</strong> системный раздел %2. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. Настроить <strong>новый</strong> %2 раздел с точкой монтирования <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. Установить %2 на %3 системный раздел <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. Настроить %3 раздел <strong>%1</strong> с точкой монтирования <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. Установить загрузчик на <strong>%1</strong>. - + Setting up mount points. Настраиваются точки монтирования. @@ -929,58 +1024,73 @@ The installer will quit and all changes will be lost. П&ерезагрузить - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Готово.</h1><br/>Система %1 установлена на Ваш компьютер.<br/>Вы можете перезагрузить компьютер и использовать Вашу новую систему или продолжить работу в Live окружении %2. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Завершить + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Форматировать раздел %1 (файловая система: %2, размер: %3 МБ) на %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. Форматировать раздел <strong>%1</strong> размером <strong>%3MB</strong> с файловой системой <strong>%2</strong>. - + Formatting partition %1 with file system %2. Форматируется раздел %1 под файловую систему %2. - + The installer failed to format partition %1 on disk '%2'. Программе установки не удалось отформатировать раздел %1 на диске '%2'. - + Could not open device '%1'. Не удалось открыть устройство '%1'. - + Could not open partition table. Не удалось открыть таблицу разделов. - + The installer failed to create file system on partition %1. Программе установки не удалось создать файловую систему на разделе %1. - + The installer failed to update partition table on disk '%1'. Программе установки не удалось обновить таблицу разделов на диске '%1'. @@ -1018,12 +1128,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> Установить модель клавиатуры на %1.<br/> - + Set keyboard layout to %1/%2. Установить раскладку клавиатуры на %1/%2. @@ -1031,7 +1141,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard Клавиатура @@ -1039,15 +1149,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting Общие региональные настройки - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Общие региональные настройки влияют на язык и кодировку для отдельных элементов интерфейса командной строки.<br/>Текущий выбор <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1130,41 +1250,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - Общие региональные настройки установлен в %1. + + The system language will be set to %1. + Системным языком будет установлен %1. - + + The numbers and dates locale will be set to %1. + Региональным форматом чисел и дат будет установлен %1. + + + Region: Регион: - + Zone: Зона: - + + &Change... - И%зменить... + И&зменить... - + Set timezone to %1/%2.<br/> Установить часовой пояс на %1/%2.<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... Загружаю данные о местоположениях... - + Location Местоположение @@ -1218,6 +1349,32 @@ The installer will quit and all changes will be lost. Не могу открыть устройство %1 для копирования отката. + + NetInstallPage + + + Name + Имя + + + + Description + Описание + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Установка по сети. (Отключено: не удается получить список пакетов, проверьте сетевое подключение) + + + + NetInstallViewStep + + + Package selection + Выбор пакетов + + Page_Keyboard @@ -1254,7 +1411,6 @@ The installer will quit and all changes will be lost. Какое имя Вы хотите использовать для входа? - @@ -1279,7 +1435,7 @@ The installer will quit and all changes will be lost. What is the name of this computer? - Как называть этот компьютер? + Какое имя у компьютера? @@ -1340,7 +1496,12 @@ The installer will quit and all changes will be lost. Новый раздел для %1 - + + New partition + Новый раздел + + + %1 %2 %1 %2 @@ -1360,22 +1521,22 @@ The installer will quit and all changes will be lost. Новый раздел - + Name Имя - + File System Файловая система - + Mount Point Точка монтирования - + Size Размер @@ -1398,32 +1559,32 @@ The installer will quit and all changes will be lost. &Отменить все изменения - + New Partition &Table Новая &таблица разделов - + &Create &Создать - + &Edit &Править - + &Delete &Удалить - + Install boot &loader on: Установить &загрузчик в: - + Are you sure you want to create a new partition table on %1? Вы уверены, что хотите создать новую таблицу разделов на %1? @@ -1431,89 +1592,99 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... Сбор информации о системе... - + Partitions Разделы - + Install %1 <strong>alongside</strong> another operating system. Установить %1 <strong>параллельно</strong> к другой операционной системе. - + <strong>Erase</strong> disk and install %1. <strong>Очистить</strong> диск и установить %1. - + <strong>Replace</strong> a partition with %1. <strong>Заменить</strong> раздел на %1. - + <strong>Manual</strong> partitioning. <strong>Ручная</strong> разметка. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Установить %1 <strong>параллельно</strong> к другой операционной системе на диске <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Очистить</strong> диск <strong>%2</strong> (%3) и установить %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Заменить</strong> раздел на диске <strong>%2</strong> (%3) на %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Ручная</strong> разметка диска <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Диск <strong>%1</strong> (%2) - + Current: Текущий: - + After: После: - + No EFI system partition configured - Системный раздел EFI не настроен + Нет настроенного системного раздела EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Чтобы начать, необходим системный раздел EFI %1.<br/><br/>Для настройки системного раздела EFI, вернитесь, выберите или создайте файловую систему FAT32 с установленным флагом <strong>esp</strong> и точкой монтирования <strong>%2</strong>.<br/><br/>Вы можете продолжить и без настройки системного раздела EFI, но Ваша система может не загрузиться. - + EFI system partition flag not set - + Не установлен флаг системного раздела EFI - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Чтобы начать, необходим системный раздел EFI %1.<br/><br/>Был настроен раздел с точкой монтирования <strong>%2</strong>, но его флаг <strong>esp</strong> не установлен.<br/>Для установки флага вернитесь и отредактируйте раздел.<br/><br/>Вы можете продолжить и без установки флага, но Ваша система может не загрузиться. + + + + Boot partition not encrypted + Загрузочный раздел не зашифрован + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Включено шифрование корневого раздела, но использован отдельный загрузочный раздел без шифрования.<br/><br/>При такой конфигурации возникают проблемы с безопасностью, потому что важные системные файлы хранятся на разделе без шифрования.<br/>Если хотите, можете продолжить, но файловая система будет разблокирована позднее во время загрузки системы.<br/>Чтобы включить шифрование загрузочного раздела, вернитесь назад и снова создайте его, отметив <strong>Шифровать</strong> в окне создания раздела. @@ -1530,20 +1701,25 @@ The installer will quit and all changes will be lost. По умолчанию - + unknown неизвестный - + extended расширенный - + unformatted неформатированный + + + swap + swap + Unpartitioned space or unknown partition table @@ -1563,64 +1739,64 @@ The installer will quit and all changes will be lost. Выберите, где установить %1.<br/><font color="red">Внимание: </font>это удалит все файлы на выбранном разделе. - + The selected item does not appear to be a valid partition. Выбранный элемент, видимо, не является действующим разделом. - + %1 cannot be installed on empty space. Please select an existing partition. %1 не может быть установлен вне раздела. Пожалуйста выберите существующий раздел. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 не может быть установлен прямо в расширенный раздел. Выберите существующий основной или логический раздел. - + %1 cannot be installed on this partition. %1 не может быть установлен в этот раздел. - + Data partition (%1) Раздел данных (%1) - + Unknown system partition (%1) Неизвестный системный раздел (%1) - + %1 system partition (%2) %1 системный раздел (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Раздел %1 слишком мал для %2. Пожалуйста выберите раздел объемом не менее %3 Гиб. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>Не найден системный раздел EFI. Вернитесь назад и выполните ручную разметку для установки %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 будет установлен в %2.<br/><font color="red">Внимание: </font>все данные на разделе %2 будут потеряны. - + The EFI system partition at %1 will be used for starting %2. Системный раздел EFI на %1 будет использован для запуска %2. - + EFI system partition: Системный раздел EFI: @@ -1628,55 +1804,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... Сбор информации о системе... - + has at least %1 GB available drive space доступно как минимум %1 ГБ свободного дискового пространства - + There is not enough drive space. At least %1 GB is required. Недостаточно места на дисках. Необходимо как минимум %1 ГБ. - + has at least %1 GB working memory доступно как минимум %1 ГБ оперативной памяти - + The system does not have enough working memory. At least %1 GB is required. Недостаточно оперативной памяти. Необходимо как минимум %1 ГБ. - + is plugged in to a power source подключено сетевое питание - + The system is not plugged in to a power source. Сетевое питание не подключено. - + is connected to the Internet присутствует выход в сеть Интернет - + The system is not connected to the Internet. Отсутствует выход в Интернет. - + The installer is not running with administrator rights. Программа установки не запущена с привилегиями администратора. + + + The screen is too small to display the installer. + Слишком маленький экран для окна установщика. + ResizeFileSystemJob @@ -1771,73 +1952,129 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Установить модель клавиатуры на %1, раскладку на %2-%3 - + Failed to write keyboard configuration for the virtual console. Не удалось записать параметры клавиатуры для виртуальной консоли. - - + + + Failed to write to %1 Не удалось записать на %1 - + Failed to write keyboard configuration for X11. Не удалось записать параметры клавиатуры для X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + Не удалось записать параметры клавиатуры в существующий каталог /etc/default. + SetPartFlagsJob - + Set flags on partition %1. - + Установить флаги на разделе %1. - + + Set flags on %1MB %2 partition. + Установить флаги %1MB раздела %2. + + + + Set flags on new partition. + Установить флаги нового раздела. + + + Clear flags on partition <strong>%1</strong>. - + Очистить флаги раздела <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Очистить флаги %1MB раздела <strong>%2</strong>. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Сбросить флаги нового раздела. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Отметить раздел <strong>%1</strong> флагом как <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Отметить %1MB раздел <strong>%2</strong> флагом как <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Отметить новый раздел флагом как <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Очистка флагов раздела <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Очистка флагов %1MB раздела <strong>%2</strong>. + + + + Clearing flags on new partition. + Сброс флагов нового раздела. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Установка флагов <strong>%2</strong> на раздел <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Установка флагов <strong>%3</strong> %1MB раздела <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Установка флагов <strong>%1</strong> нового раздела. + + + The installer failed to set flags on partition %1. - + Установщик не смог установить флаги на раздел %1. - + Could not open device '%1'. - Нет доступа к устройству '%1'. + Не удалось открыть устройство '%1'. - + Could not open partition table on device '%1'. - + Не удалось открыть таблицу разделов устройства '%1'. - + Could not find partition '%1'. - Невозможно найти раздел '%1'. + Не удалось найти раздел '%1'. @@ -1856,32 +2093,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 Задать пароль для пользователя %1 - + Setting password for user %1. Устанавливаю пароль для учетной записи %1. - + Bad destination system path. Неверный путь целевой системы. - + rootMountPoint is %1 Точка монтирования корневого раздела %1 - + + Cannot disable root account. + Невозможно отключить учетную запись root + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Не удалось задать пароль для пользователя %1. - + usermod terminated with error code %1. Команда usermod завершилась с кодом ошибки %1. @@ -1914,12 +2161,12 @@ The installer will quit and all changes will be lost. Не удалось создать ссылку, цель: %1; имя ссылки: %2 - + Cannot set timezone, Часовой пояс не установлен, - + Cannot open /etc/timezone for writing Невозможно открыть /etc/timezone для записи @@ -1943,33 +2190,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. Ваше имя пользователя слишком длинное. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Ваше имя пользователя содержит недопустимые символы. Допускаются только строчные буквы и цифры. - + Your hostname is too short. Имя вашего компьютера слишком коротко. - + Your hostname is too long. Имя вашего компьютера слишком длинное. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Имя вашего компьютера содержит недопустимые символы. Разрешены буквы, цифры и тире. - - + + Your passwords do not match! Пароли не совпадают! @@ -2015,22 +2262,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> <h1>Добро пожаловать в программу установки %1 .</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Добро пожаловать в установщик Calamares для %1 .</h1> + + + About %1 installer О программе установки %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>для %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>При участии: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini и Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> разработан при поддержке <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1 поддержка @@ -2038,7 +2290,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome Добро пожаловать diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index f17088f0f..a515fd14c 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Zvoľte si partíciu na zmenšenie: - - - - Allocate drive space by dragging the divider below: - Vyhradenie miesta na disku potiahnutím posuvníka dole: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Touto operáciou, sa partícia <b>%1</b> ktorá obsahuje %4 zmenší na %2MB a vytvorí sa nová %3MB partícia na %5 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Nie je možné nájsť EFI partíciu v tomto systéme. Vráťte sa prosím späť a použite manuálne rozdelenie disku pre %1 - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - EFI systémová partícia: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - + <strong>Zavádzacie prostredie</strong> tohto systému.<br><br>Staršie systémy architektúry x86 podporujú iba <strong>BIOS</strong>.<br>Moderné systémy obvykle používajú <strong>EFI</strong>, ale tiež sa môžu zobraziť ako BIOS, ak sú spustené v režime kompatiblitiy. - + 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. - + Tento systém bol spustený so zavádzacím prostredím <strong>EFI</strong>.<br><br>Na konfiguráciu spustenia z prostredia EFI, musí inštalátor umiestniť aplikáciu zavádzača, ako je <strong>GRUB</strong> alebo <strong>systemd-boot</strong> na <strong>oddiel systému EFI</strong>. Toto je vykonané automaticky, pokiaľ nezvolíte ručné rozdelenie oddielov, v tom prípade ho musíte zvoliť alebo vytvoriť ručne. - + 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. - + Tento systém bol spustený so zavádzacím prostredím <strong>BIOS</strong>.<br><br>Na konfiguráciu spustenia z prostredia BIOS, musí inštalátor nainštalovať zavádzač, ako je <strong>GRUB</strong>, buď na začiatok oddielu alebo na <strong>hlavný zavádzací záznam (MBR)</strong> pri začiatku tabuľky oddielov (preferované). Toto je vykonané automaticky, pokiaľ nezvolíte ručné rozdelenie oddielov, v tom prípade ho musíte nainštalovať ručne. @@ -55,22 +22,22 @@ Master Boot Record of %1 - Hlavný Bootovací Záznam z %1 + Hlavný zavádzací záznam (MBR) zariadenia %1 Boot Partition - Boot Partícia + Zavádzací oddiel System Partition - Systémová Partícia + Systémový oddiel Do not install a boot loader - + Neinštalovať zavádzač @@ -83,27 +50,48 @@ Form - + Forma GlobalStorage - + Globálne úložisko JobQueue - + Fronta úloh Modules - + Moduly - + + Type: + Typ: + + + + + none + žiadny + + + + Interface: + Rozhranie: + + + + Tools + Nástroje + + + Debug information - + Ladiace informácie @@ -111,7 +99,7 @@ Install - + Inštalácia @@ -127,250 +115,276 @@ Run command %1 %2 - + Spustenie príkazu %1 %2 Running command %1 %2 - + Spúšťa sa príkaz %1 %2 External command crashed - Externý príkaz zlyhal + Externý príkaz nečakane skončil Command %1 crashed. Output: %2 - Príkaz %1 zlyhal. -Oznam: + Príkaz %1 nečakane skončil. +Výstup: %2 External command failed to start - Externý príkaz zlyhal pri štarte + Zlyhalo spustenie externého príkazu Command %1 failed to start. - Príkaz %1 zlyhal pri štarte. + Zlyhalo spustenie príkazu %1. Internal error when starting command - Vnútorná chyba pri spustení príkazu + Vnútorná chyba pri spúšťaní príkazu Bad parameters for process job call. - Zlé parametre volania úlohy procesu. + Nesprávne parametre pre volanie úlohy procesu. External command failed to finish - Externý príkaz zlyhal pri dokončení + Zlyhalo dokončenie externého príkazu Command %1 failed to finish in %2s. Output: %3 - Príkaz %1 zlyhal pri dokončení v %2s. -Oznam: + Zlyhalo dokončenie príkazu %1 v trvaní %2s. +Výstup: %3 External command finished with errors - Externý príkaz sa dokončil s chybami + Externý príkaz bol dokončený s chybami Command %1 finished with exit code %2. Output: %3 - Príkaz %1 dokončený s vystupným kódom %2. -Oznam: + Príkaz %1 bol dokončený s konečným kódom %2. +Výstup: %3 Calamares::PythonJob - - - Running %1 operation. - - - - - Bad working directory path - Zlá cesta pracovného adresára - - - - Working directory %1 for python job %2 is not readable. - Pracovný adresár %1 pre úlohu pythona %2 nie je čitateľný. - + Running %1 operation. + Spúšťa sa operácia %1. + + + + Bad working directory path + Nesprávna cesta k pracovnému adresáru + + + + Working directory %1 for python job %2 is not readable. + Pracovný adresár %1 pre úlohu jazyka python %2 nie je možné čítať. + + + Bad main script file - Zlý hlavný súbor skriptu + Nesprávny súbor hlavného skriptu - + Main script file %1 for python job %2 is not readable. - Hlavný súbor skriptu %1 pre úlohu pythona %2 nie je čitateľný. + Súbor hlavného skriptu %1 pre úlohu jazyka python %2 nie je možné čítať. - + Boost.Python error in job "%1". - Rýchlo.Python chyba v úlohe "%1". + Chyba knižnice Boost.Python v úlohe „%1“. Calamares::ViewManager - + &Back &Späť - + &Next - Ď&alší + Ď&alej - - + + &Cancel - + &Zrušiť - + + + Cancel installation without changing the system. + Zruší inštaláciu bez zmeny systému. + + + Cancel installation? Zrušiť inštaláciu? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Skutočne chcete zrušiť proces inštalácie? -Inštalátor bude ukončený a všetky zmeny stratené. + Skutočne chcete zrušiť aktuálny priebeh inštalácie? +Inštalátor sa ukončí a všetky zmeny budú stratené. - + + &Yes + _Áno + + + + &No + _Nie + + + + &Close + _Zavrieť + + + Continue with setup? - + Pokračovať v inštalácii? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + Inštalátor distribúcie %1 sa chystá vykonať zmeny na vašom disku, aby nainštaloval distribúciu %2. <br/><strong>Tieto zmeny nebudete môcť vrátiť späť.</strong> - + &Install now - + &Inštalovať teraz - + Go &back - + Prejsť s&päť - - &Quit - &Ukončiť + + &Done + _Dokončiť - + + The installation is complete. Close the installer. + Inštalácia je dokončená. Zatvorí inštalátor. + + + Error Chyba - + Installation Failed - Zlyhanie inštalácie + Inštalácia zlyhala CalamaresPython::Helper - + Unknown exception type Neznámy typ výnimky - + unparseable Python error - nerozoznateľná chyba Pythona + Neanalyzovateľná chyba jazyka Python - + unparseable Python traceback - nerozoznateľé zpätná ladenie Pythona + Neanalyzovateľný ladiaci výstup jazyka Python - + Unfetchable Python error. - Nezachytiteľná chyba Pythona. + Nezískateľná chyba jazyka Python. CalamaresWindow - + %1 Installer - %1 Inštalátor + Inštalátor distribúcie %1 - + Show debug information - + Zobraziť ladiace informácie CheckFileSystemJob - + Checking file system on partition %1. - Kontrola súborového systému na partícii %1. + Kontroluje sa systém súborov na oddieli %1. - + The file system check on partition %1 failed. - Kontrola súborového systému na partícii %1 zlyhala. + Kontrola systému súborov na oddieli %1 zlyhala. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Tento počítač nespĺňa minimálne požiadavky pre inštaláciu distribúcie %1.<br/>Inštalácia nemôže pokračovať. <a href="#details">Podrobnosti...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - + Tento počítač nespĺňa niektoré z odporúčaných požiadaviek pre inštaláciu distribúcie %1.<br/>Inštalácia môže pokračovať, ale niektoré funkcie môžu byť zakázané. - + This program will ask you some questions and set up %2 on your computer. - + Tento program sa vás spýta na niekoľko otázok a nainštaluje distribúciu %2 do vášho počítača. - + For best results, please ensure that this computer: - + Pre čo najlepší výsledok, sa prosím, uistite, že tento počítač: - + System requirements - + Systémové požiadavky @@ -378,148 +392,155 @@ Inštalátor bude ukončený a všetky zmeny stratené. Form - + Forma - + After: - + Potom: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Ručné rozdelenie oddielov</strong><br/>Môžete vytvoriť alebo zmeniť veľkosť oddielov podľa seba. - + Boot loader location: - + Umiestnenie zavádzača: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Oddiel %1 bude zmenšený na %2MB a nový %3MB oddiel bude vytvorený pre distribúciu %4. - + Select storage de&vice: - + Vyberte úložné &zariadenie: - - - - + + + + Current: - + Teraz: - + + Reuse %1 as home partition for %2. + Opakované použitie oddielu %1 ako domovského pre distribúciu %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Vyberte oddiel na zmenšenie a potom potiahnutím spodného pruhu zmeňte veľkosť</strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>Vyberte oddiel, na ktorý sa má inštalovať</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + Oddiel systému EFI sa nedá v tomto počítači nájsť. Prosím, prejdite späť a použite ručné rozdelenie oddielov na inštaláciu distribúcie %1. + + + + The EFI system partition at %1 will be used for starting %2. + Oddie lsystému EFI na %1 bude použitý na spustenie distribúcie %2. + + + + EFI system partition: + Oddiel systému EFI: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Zdá sa, že toto úložné zariadenie neobsahuje operačný systém. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>Vymazanie disku</strong><br/>Týmto sa <font color="red">odstránia</font> všetky údaje momentálne sa nachádzajúce na vybratom úložnom zariadení. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Toto úložné zariadenie obsahuje operačný systém %1. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>Inštalácia popri súčasnom systéme</strong><br/>Inštalátor zmenší oddiel a uvoľní miesto pre distribúciu %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>Nahradenie oddielu</strong><br/>Nahradí oddiel distribúciou %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Toto úložné zariadenie už obsahuje operačný systém. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Toto úložné zariadenie obsahuje viacero operačných systémov. Čo by ste chceli urobiť?<br/>Budete môcť skontrolovať a potvrdiť vaše voľby pred uplatnením akejkoľvek zmeny na úložnom zariadení. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Vymazať pripojenia pre operácie rozdelenia oddielov na zariadení %1 - + Clearing mounts for partitioning operations on %1. - + Vymazávajú sa pripojenia pre operácie rozdelenia oddielov na zariadení %1. - + Cleared all mounts for %1 - + Vymazané všetky pripojenia pre zariadenie %1 ClearTempMountsJob - + Clear all temporary mounts. - + Vymazanie všetkých dočasných pripojení. - + Clearing all temporary mounts. - + Vymazávajú sa všetky dočasné pripojenia. - + Cannot get list of temporary mounts. - + Nedá sa získať zoznam dočasných pripojení. - + Cleared all temporary mounts. - + Vymazané všetky dočasné pripojenia. @@ -527,105 +548,115 @@ Inštalátor bude ukončený a všetky zmeny stratené. Create a Partition - Vytvoriť partíciu + Vytvorenie oddielu - + + MiB + MiB + + + Partition &Type: - &Typ partície: + &Typ oddielu: - + &Primary - &Primárna + &Primárny - + E&xtended - Ro&zšírená + Ro&zšírený - + Fi&le System: - + &Systém súborov: - + Flags: - + Značky: - + &Mount Point: Bo&d pripojenia: - + Si&ze: Veľ&kosť: - - MB - MB + + En&crypt + Zaši&frovať - + Logical - Logická + Logický - + Primary - Primárna + Primárny - + GPT GPT + + + Mountpoint already in use. Please select another one. + Bod pripojenia sa už používa. Prosím, vyberte iný. + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - + Vytvoriť nový %2MB oddiel na zariadení %4 (%3) so systémom súborov %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Vytvoriť nový <strong>%2MB</strong> oddiel na zariadení <strong>%4</strong> (%3) so systémom súborov <strong>%1</strong>. Creating new %1 partition on %2. - + Vytvára sa nový %1 oddiel na zariadení %2. The installer failed to create partition on disk '%1'. - Inštalátor zlyhal pri vytvorení partície na disku '%1'. + Inštalátor zlyhal pri vytváraní oddielu na disku „%1“. Could not open device '%1'. - Nedá sa otvoriť zariadenie '%1'. + Nepodarilo sa otvoriť zariadenie „%1“. Could not open partition table. - Nedá sa otvoriť tabuľka partícii. + Nepodarilo sa otvoriť tabuľku oddielov. The installer failed to create file system on partition %1. - Inštalátor zlyhal pri vytvorení partície na disku %1. + Inštalátor zlyhal pri vytváraní systému súborov na oddieli %1. The installer failed to update partition table on disk '%1'. - Inštalátor zlyhal pri aktualizácii partície na disku '%1'. + Inštalátor zlyhal pri aktualizovaní tabuľky oddielov na disku „%1“. @@ -633,27 +664,27 @@ Inštalátor bude ukončený a všetky zmeny stratené. Create Partition Table - Vytvoriť tabuľku partícií + Vytvorenie tabuľky oddielov Creating a new partition table will delete all existing data on the disk. - Vytvorením novej tabuľky partícií sa vymažú všetky data na disku. + Vytvorením novej tabuľky oddielov sa odstránia všetky existujúce údaje na disku. What kind of partition table do you want to create? - Aký typ tabuľky partícií si prajete vytvoriť? + Ktorý typ tabuľky oddielov chcete vytvoriť? Master Boot Record (MBR) - Hlavný Bootovací Záznam (MBR) + Hlavný zavádzací záznam (MBR) GUID Partition Table (GPT) - GUID Tabuľka Partícií (GPT) + Tabuľka oddielov GUID (GPT) @@ -661,95 +692,95 @@ Inštalátor bude ukončený a všetky zmeny stratené. Create new %1 partition table on %2. - + Vytvoriť novú tabuľku oddielov typu %1 na zariadení %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Vytvoriť novú <strong>%1</strong> tabuľku oddielov na zariadení <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + Vytvára sa nová tabuľka oddielov typu %1 na zariadení %2. The installer failed to create a partition table on %1. - Inštalátor zlyhal pri vytvorení tabuľky partícií %1. + Inštalátor zlyhal pri vytváraní tabuľky oddielov na zariadení %1. Could not open device %1. - Nedá sa otvoriť zariadenie %1. + Nepodarilo sa otvoriť zariadenie %1. CreateUserJob - + Create user %1 Vytvoriť používateľa %1 - + Create user <strong>%1</strong>. - + Vytvoriť používateľa <strong>%1</strong>. - + Creating user %1. - + Vytvára sa používateľ %1. - + Sudoers dir is not writable. - Sudoers adresár nie je zapisovateľný. + Adresár Sudoers nie je zapisovateľný. - + Cannot create sudoers file for writing. - Nedá sa vytvoriť sudoers súbor na zápis. + Nedá sa vytvoriť súbor sudoers na zapisovanie. - + Cannot chmod sudoers file. - Nedá sa zmeniť sudoers súbor. + Nedá sa vykonať príkaz chmod na súbori sudoers. - + Cannot open groups file for reading. - Nedá sa otvoriť skupina súborov na čítanie. + Nedá sa otvoriť súbor skupín na čítanie. - + Cannot create user %1. Nedá sa vytvoriť používateľ %1. - + useradd terminated with error code %1. - useradd ukončený s chybovým kódom %1. + Príkaz useradd ukončený s chybovým kódom %1. - - Cannot set full name for user %1. - Nedá sa nastaviť plné meno pre používateľa %1. + + Cannot add user %1 to groups: %2. + Nedá sa pridať používateľ %1 do skupín: %2. - - chfn terminated with error code %1. - chfn ukončený s chybovým kódom %1. + + usermod terminated with error code %1. + Príkaz usermod ukončený s chybovým kódom %1. - + Cannot set home directory ownership for user %1. - Nedá sa nastaviť vlastný home adresár pre používateľa %1. + Nedá sa nastaviť vlastníctvo domovského adresára pre používateľa %1. - + chown terminated with error code %1. - chown ukončený s chybovým kódom %1. + Príkaz chown ukončený s chybovým kódom %1. @@ -757,70 +788,70 @@ Inštalátor bude ukončený a všetky zmeny stratené. Delete partition %1. - + Odstrániť oddiel %1. Delete partition <strong>%1</strong>. - + Odstrániť oddiel <strong>%1</strong>. Deleting partition %1. - + Odstraňuje sa oddiel %1. The installer failed to delete partition %1. - Inštalátor zlyhal pri vymazaní partície %1. + Inštalátor zlyhal pri odstraňovaní oddielu %1. Partition (%1) and device (%2) do not match. - Partícia (%1) a zariadenie (%2) nesúhlasí. + Oddiel (%1) a zariadenie (%2) sa nezhodujú.. Could not open device %1. - Nedá sa otvoriť zariadenie %1. + Nepodarilo sa otvoriť zariadenie %1. Could not open partition table. - Nedá sa otvoriť tabuľka partícii. + Nepodarilo sa otvoriť tabuľku oddielov. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Typ <strong>tabuľky oddielov</strong> na vybratom úložnom zariadení.<br><br>Jediným spôsobom ako zmeniť tabuľku oddielov je vymazanie a znovu vytvorenie tabuľky oddielov od začiatku, čím sa zničia všetky údaje úložnom zariadení.<br>Inštalátor ponechá aktuálnu tabuľku oddielov, pokiaľ sa výlučne nerozhodnete inak.<br>Ak nie ste si istý, na moderných systémoch sa preferuje typ tabuľky oddielov GPT. This device has a <strong>%1</strong> partition table. - + Toto zariadenie obsahuje tabuľku oddielov <strong>%1</strong>. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Toto je <strong>slučkové</strong> zariadenie.<br><br>Je to pseudo-zariadenie bez tabuľky oddielov, čo umožňuje prístup k súborom ako na blokovom zariadení. Tento druh inštalácie obvykle obsahuje iba jeden systém súborov. 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. - + Inštalátor <strong>nemôže rozpoznať tabuľku oddielov</strong> na vybratom úložnom zariadení.<br><br>Zariadenie buď neobsahuje žiadnu tabuľku oddielov, alebo je tabuľka oddielov poškodená, alebo je neznámeho typu.<br>Inštalátor môže vytvoriť novú tabuľku oddielov buď automaticky alebo prostredníctvom stránky s ručným rozdelením oddielov. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Toto je odporúčaná tabuľka oddielov pre moderné systémy, ktoré sa spúšťajú zo zavádzacieho prostredia <strong>EFI</strong>. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - + <br><br>Tento typ tabuľky oddielov je vhodný iba pre staršie systémy, ktoré sa spúšťajú zo zavádzacieho prostredia <strong>BIOS</strong>. GPT je odporúčaná vo väčšine ďalších prípadov.<br><br><strong>Upozornenie:</strong> Tabuľka oddielov MBR je zastaralý štandard z éry operačného systému MS-DOS.<br>Môžu byť vytvorené iba 4 <em>primárne</em> oddiely a z nich môže byť jeden <em>rozšíreným</em> oddielom, ktorý môže následne obsahovať viacero <em>logických</em> oddielov. @@ -831,12 +862,38 @@ Inštalátor bude ukončený a všetky zmeny stratené. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + Zápis konfigurácie LUKS pre nástroj Dracut do %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Vynechanie zápisu konfigurácie LUKS pre nástroj Dracut: oddiel „/“ nie je zašifrovaný + + + + Failed to open %1 + Zlyhalo otvorenie %1 + + + + DummyCppJob + + + Dummy C++ Job + Fiktívna úloha jazyka C++ + + EditExistingPartitionDialog Edit Existing Partition - Zmeniť Existujúcu Partíciu + Úprava existujúceho oddielu @@ -846,7 +903,7 @@ Inštalátor bude ukončený a všetky zmeny stratené. &Keep - + &Ponechať @@ -856,7 +913,7 @@ Inštalátor bude ukončený a všetky zmeny stratené. Warning: Formatting the partition will erase all existing data. - Varovanie: Formátovaním partície sa vymažú všetky dáta. + Upozornenie: Naformátovaním oddielu sa vymažú všetky existujúce údaje. @@ -866,55 +923,93 @@ Inštalátor bude ukončený a všetky zmeny stratené. Si&ze: - + V&eľkosť: - + + MiB + MiB + + + Fi&le System: - + S&ystém súborov: - + Flags: - + Značky: + + + + Mountpoint already in use. Please select another one. + Bod pripojenia sa už používa. Prosím, vyberte iný. + + + + EncryptWidget + + + Form + Forma + + + + En&crypt system + &Zašifrovať systém + + + + Passphrase + Heslo + + + + Confirm passphrase + Potvrdenie hesla + + + + Please enter the same passphrase in both boxes. + Prosím, zadajte rovnaké heslo do oboch polí. FillGlobalStorageJob - + Set partition information - Nastaviť informácie o partícii + Nastaviť informácie o oddieli - + Install %1 on <strong>new</strong> %2 system partition. - + Inštalovať distribúciu %1 na <strong>novom</strong> %2 systémovom oddieli. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Nastaviť <strong>nový</strong> %2 oddiel s bodom pripojenia <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Inštalovať distribúciu %2 na %3 systémovom oddieli <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Nastaviť %3 oddiel <strong>%1</strong> s bodom pripojenia <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Inštalovať zavádzač do <strong>%1</strong>. - + Setting up mount points. - + Nastavujú sa body pripojení. @@ -922,68 +1017,83 @@ Inštalátor bude ukončený a všetky zmeny stratené. Form - + Forma &Restart now - + &Reštartovať teraz - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. - + <h1>Všetko je dokončené.</h1><br/>Distribúcia %1 bola nainštalovaná do vášho počítača.<br/>Teraz môžete reštartovať počítač a spustiť váš nový systém, alebo pokračovať v používaní živého prostredia distribúcie %2. + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Inštalácia zlyhala</h1><br/>Distribúcia %1 nebola nainštalovaná do vášho počítača.<br/>Chybová hláška: %2. FinishedViewStep - + Finish - + Dokončenie + + + + Installation Complete + Inštalácia dokončená + + + + The installation of %1 is complete. + Inštalácia distribúcie %1s je dokončená. FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Naformátovanie oddielu %1 (systém súborov: %2, veľkosť: %3 MB) na %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Naformátovanie <strong>%3MB</strong> oddielu <strong>%1</strong> so systémom súborov <strong>%2</strong>. - + Formatting partition %1 with file system %2. - + Formátuje sa oddiel %1 so systémom súborov %2. - + The installer failed to format partition %1 on disk '%2'. - + Inštalátor zlyhal pri formátovaní oddielu %1 na disku „%2“. - + Could not open device '%1'. - + Nepodarilo sa otvoriť zariadenie „%1“. - + Could not open partition table. - + Nepodarilo sa otvoriť tabuľku oddielov. - + The installer failed to create file system on partition %1. - + Inštalátor zlyhal pri vytváraní systému súborov na oddieli %1. - + The installer failed to update partition table on disk '%1'. - + Inštalátor zlyhal pri aktualizovaní tabuľky oddielov na disku „%1“. @@ -993,19 +1103,19 @@ Inštalátor bude ukončený a všetky zmeny stratené. Konsole not installed - + Aplikácia Konsole nie je nainštalovaná Please install the kde konsole and try again! - + Prosím, nainštalujte aplikáciu kde konsole a skúste to znovu! Executing script: &nbsp;<code>%1</code> - + Spúšťa sa skript: &nbsp;<code>%1</code> @@ -1013,18 +1123,18 @@ Inštalátor bude ukončený a všetky zmeny stratené. Script - + Skript KeyboardPage - + Set keyboard model to %1.<br/> Nastavenie modelu klávesnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavenie rozloženia klávesnice na %1/%2. @@ -1032,7 +1142,7 @@ Inštalátor bude ukončený a všetky zmeny stratené. KeyboardViewStep - + Keyboard Klávesnica @@ -1040,14 +1150,24 @@ Inštalátor bude ukončený a všetky zmeny stratené. LCLocaleDialog - + System locale setting - + Miestne nastavenie systému - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. - + Miestne nastavenie systému ovplyvní jazyk a znakovú sadu niektorých prvkov používateľského rozhrania v príkazovom riadku.<br/>Aktuálne nastavenie je <strong>%1</strong>. + + + + &Cancel + &Zrušiť + + + + &OK + &OK @@ -1055,69 +1175,69 @@ Inštalátor bude ukončený a všetky zmeny stratené. Form - + Forma I accept the terms and conditions above. - + Prijímam podmienky vyššie. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - + <h1>Licenčné podmienky</h1>Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. - + Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, proces inštalácie nemôže pokračovať. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + <h1>Licenčné podmienky</h1>Tento proces inštalácie môže nainštalovať uzavretý softvér, ktorý je predmetom licenčných podmienok v rámci poskytovania dodatočných funkcií a vylepšenia používateľských skúseností. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Prosím, prečítajte si licenčnú zmluvu koncového používateľa (EULAs) vyššie.<br/>Ak nesúhlasíte s podmienkami, uzavretý softvér nebude nainštalovaný a namiesto neho budú použité alternatívy s otvoreným zdrojom. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>Ovládač %1</strong><br/>vytvoril %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>Ovládač grafickej karty %1</strong><br/><font color="Grey">vytvoril %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>Zásuvný modul prehliadača %1</strong><br/><font color="Grey">vytvoril %2</font> <strong>%1 codec</strong><br/><font color="Grey">by %2</font> - + <strong>Kodek %1</strong><br/><font color="Grey">vytvoril %2</font> <strong>%1 package</strong><br/><font color="Grey">by %2</font> - + <strong>Balík %1</strong><br/><font color="Grey">vytvoril %2</font> <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">vytvoril %2</font> <a href="%1">view license agreement</a> - + <a href="%1">Zobraziť licenčné podmienky</a> @@ -1125,49 +1245,60 @@ Inštalátor bude ukončený a všetky zmeny stratené. License - + Licencia LocalePage - - - The system locale is set to %1. - + + The system language will be set to %1. + Jazyk systému bude nastavený na %1. - + + The numbers and dates locale will be set to %1. + Miestne nastavenie čísel a dátumov bude nastavené na %1. + + + Region: - Región: + Oblasť: - + Zone: Zóna: - + + &Change... - + Z&meniť... - + Set timezone to %1/%2.<br/> - Nastavenie čas. zóny na %1/%2.<br/> + Nastavenie časovej zóny na %1/%2.<br/> + + + + %1 (%2) + Language (Country) + %1 (%2) LocaleViewStep - + Loading location data... - Nahrávanie dát o mieste... + Načítavajú sa údaje umiestnenia... - + Location - Miesto + Umiestnenie @@ -1175,48 +1306,74 @@ Inštalátor bude ukončený a všetky zmeny stratené. Move file system of partition %1. - + Presun systému súborov oddielu %1. Could not open file system on partition %1 for moving. - + Nepodarilo sa otvoriť systém súborov na oddieli %1 pre presun. Could not create target for moving file system on partition %1. - + Nepodarilo sa vytvoriť cieľ pre presun systému súborov na oddieli %1. Moving of partition %1 failed, changes have been rolled back. - + Presun oddielu %1 zlyhal. Zmeny boli odvolané. Moving of partition %1 failed. Roll back of the changes have failed. - + Presun oddielu %1 zlyhal. Odvolanie zmien zlyhalo. Updating boot sector after the moving of partition %1 failed. - + Zlyhala aktualizácia zavádzacieho sektoru po presune oddielu %1. The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. - + Veľkosti logických sektorov v zdroji a cieli kopírovania nie sú rovnaké. Toto nie je momentálne podporované. Source and target for copying do not overlap: Rollback is not required. - + Zdroj a cieľ kopírovania sa neprekrývajú. Odvolanie nie je potrebné. Could not open device %1 to rollback copying. - + Nepodarilo sa otvoriť zariadenie %1 na odvolanie kopírovania. + + + + NetInstallPage + + + Name + Názov + + + + Description + Popis + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Sieťová inštalácia. (Zakázaná: Nie je možné získať zoznamy balíkov. Skontrolujte vaše sieťové pripojenie.) + + + + NetInstallViewStep + + + Package selection + Výber balíkov @@ -1229,12 +1386,12 @@ Inštalátor bude ukončený a všetky zmeny stratené. Keyboard Model: - Model Klávesnice: + Model klávesnice: Type here to test your keyboard - Napíšte niečo na otestovanie vašej klávesnice + Tu môžete písať na odskúšanie vašej klávesnice @@ -1247,15 +1404,14 @@ Inštalátor bude ukončený a všetky zmeny stratené. What is your name? - Aké je Vaše meno? + Aké je vaše meno? What name do you want to use to log in? - Aké meno si prajete použiť pri prihlásení? + Aké meno chcete použiť na prihlásenie? - @@ -1265,47 +1421,47 @@ Inštalátor bude ukončený a všetky zmeny stratené. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - + <small>Ak bude tento počítač používať viac ako jedna osoba, môžete nastaviť viacero účtov po inštalácii.</small> Choose a password to keep your account safe. - Zvoľte si heslo pre zachovanie vášho účtu v bezpečí. + Zvoľte heslo pre zachovanie vášho účtu v bezpečí. <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> - + <small>Zadajte rovnaké heslo dvakrát, aby sa predišlo preklepom. Dobré heslo by malo obsahovať mix písmen, čísel a diakritiky, malo by mať dĺžku aspoň osem znakov a malo by byť pravidelne menené.</small> What is the name of this computer? - + Aký je názov tohto počítača? <small>This name will be used if you make the computer visible to others on a network.</small> - + <small>Tento názov bude použitý, keď sprístupníte počítač v sieti.</small> Log in automatically without asking for the password. - + Prihlásiť automaticky bez pýtania hesla. Use the same password for the administrator account. - + Použiť rovnaké heslo pre účet správcu. Choose a password for the administrator account. - + Zvoľte heslo pre účet správcu. <small>Enter the same password twice, so that it can be checked for typing errors.</small> - + <small>Zadajte rovnaké heslo dvakrát, aby sa predišlo preklepom.</small> @@ -1313,37 +1469,42 @@ Inštalátor bude ukončený a všetky zmeny stratené. Root - + Koreňový adresár Home - + Domovský adresár Boot - + Zavádzač EFI system - + Systém EFI Swap - + Odkladací priestor New partition for %1 - + Nový oddiel pre %1 - + + New partition + Nový oddiel + + + %1 %2 - + %1 %2 @@ -1352,31 +1513,31 @@ Inštalátor bude ukončený a všetky zmeny stratené. Free Space - Voľní Miesto + Voľné miesto New partition - Nová Partícia + Nový oddiel - + Name - Meno + Názov - + File System - Súborový Systém + Systém súborov - + Mount Point - Bod Pripojenia + Bod pripojenia - + Size Veľkosť @@ -1391,130 +1552,140 @@ Inštalátor bude ukončený a všetky zmeny stratené. Storage de&vice: - + Úložné zar&iadenie: &Revert All Changes - V&rátiť Všetky Zmeny + V&rátiť všetky zmeny - + New Partition &Table - Nová &Tabuľka Partícií + Nová &tabuľka oddielov - + &Create &Vytvoriť - + &Edit - Zm&eniť + &Upraviť - + &Delete - &Vymazať + O&dstrániť - + Install boot &loader on: - + Nainštalovať &zavádzač na: - + Are you sure you want to create a new partition table on %1? - Ste si istý, že chcete vytvoriť novú tabuľku partícií na %1? + Naozaj chcete vytvoriť novú tabuľku oddielov na zariadení %1? PartitionViewStep - + Gathering system information... - Zbieranie systémových informácií... + Zbierajú sa informácie o počítači... - + Partitions - Partície - - - - Install %1 <strong>alongside</strong> another operating system. - - - - - <strong>Erase</strong> disk and install %1. - - - - - <strong>Replace</strong> a partition with %1. - + Oddiely - <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system. + Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme. + + + + <strong>Erase</strong> disk and install %1. + <strong>Vymazanie</strong> disku a inštalácia distribúcie %1. + + + + <strong>Replace</strong> a partition with %1. + <strong>Nahradenie</strong> oddielu distribúciou %1. + <strong>Manual</strong> partitioning. + <strong>Ručné</strong> rozdelenie oddielov. + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + Inštalácia distribúcie %1 <strong>popri</strong> inom operačnom systéme na disku <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Vymazanie</strong> disku <strong>%2</strong> (%3) a inštalácia distribúcie %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Nahradenie</strong> oddielu na disku <strong>%2</strong> (%3) distribúciou %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + <strong>Ručné</strong> rozdelenie oddielov na disku <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Disk <strong>%1</strong> (%2) - + Current: - + Teraz: - + After: - + Potom: - + No EFI system partition configured - + Nie je nakonfigurovaný žiadny oddiel systému EFI - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Na konfiguráciu oddielu systému EFI prejdite späť a vyberte alebo vytvorte systém súborov FAT32 s povolenou značkou <strong>esp</strong> a bod pripojenia <strong>%2</strong>.<br/><br/>Môžete porkačovať bez nastavenia oddielu systému EFI, ale váš systém môže pri spustení zlyhať. - + EFI system partition flag not set - + Značka oddielu systému EFI nie je nastavená - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Oddiel systému EFI je potrebný pre spustenie distribúcie %1.<br/><br/>Oddiel bol nakonfigurovaný s bodom pripojenia <strong>%2</strong>, ale nemá nastavenú značku <strong>esp</strong>.<br/>Na nastavenie značky prejdite späť a upravte oddiel.<br/><br/>Môžete porkačovať bez nastavenia značky, ale váš systém môže pri spustení zlyhať. + + + + Boot partition not encrypted + Zavádzací oddiel nie je zašifrovaný + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Spolu so zašifrovaným koreňovým oddielom bol nainštalovaný oddelený zavádzací oddiel, ktorý ale nie je zašifrovaný.<br/><br/>S týmto typom inštalácie je ohrozená bezpečnosť, pretože dôležité systémové súbory sú uchovávané na nezašifrovanom oddieli.<br/>Ak si to želáte, môžete pokračovať, ale neskôr, počas spúšťania systému sa vykoná odomknutie systému súborov.<br/>Na zašifrovanie zavádzacieho oddielu prejdite späť a vytvorte ju znovu vybratím voľby <strong>Zašifrovať</strong> v okne vytvárania oddielu. @@ -1522,33 +1693,38 @@ Inštalátor bude ukončený a všetky zmeny stratené. Default Keyboard Model - Východzí Model Klávesnice + Predvolený model klávesnice Default - Východzí + Predvolený - + unknown - + neznámy - + extended - + rozšírený - + unformatted - + nenaformátovaný + + + + swap + odkladací Unpartitioned space or unknown partition table - + Nerozdelené miesto alebo neznáma tabuľka oddielov @@ -1556,127 +1732,132 @@ Inštalátor bude ukončený a všetky zmeny stratené. Form - + Forma Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - + Vyberte, kde sa má nainštalovať distribúcia %1.<br/><font color="red">Upozornenie: </font>týmto sa odstránia všetky súbory na vybratom oddieli. - + The selected item does not appear to be a valid partition. - + Zdá sa, že vybratá položka nie je platným oddielom. - + %1 cannot be installed on empty space. Please select an existing partition. - + Distribúcia %1 sa nedá nainštalovať na prázdne miesto. Prosím, vyberte existujúci oddiel. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - + Distribúcia %1 sa nedá nainštalovať na rozšírený oddiel. Prosím, vyberte existujúci primárny alebo logický oddiel. - + %1 cannot be installed on this partition. - + Distribúcia %1 sa nedá nainštalovať na tento oddiel. - + Data partition (%1) - + Údajový oddiel (%1) - + Unknown system partition (%1) - + Neznámy systémový oddiel (%1) - + %1 system partition (%2) - + Systémový oddiel operačného systému %1 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. - + <strong>%4</strong><br/><br/>Oddiel %1 je príliš malý pre distribúciu %2. Prosím, vyberte oddiel s kapacitou aspoň %3 GiB. - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + <strong>%2</strong><br/><br/>Oddiel systému EFI sa nedá v tomto počítači nájsť. Prosím, prejdite späť a použite ručné rozdelenie oddielov na inštaláciu distribúcie %1. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - + <strong>%3</strong><br/><br/>Distribúcia %1 bude nainštalovaná na oddiel %2.<br/><font color="red">Upozornenie: </font>všetky údaje na oddieli %2 budú stratené. - + The EFI system partition at %1 will be used for starting %2. - + Oddiel systému EFI na %1 bude použitý pre spustenie distribúcie %2. - + EFI system partition: - + Oddiel systému EFI: RequirementsChecker - + Gathering system information... - - - - - has at least %1 GB available drive space - - - - - There is not enough drive space. At least %1 GB is required. - + Zbierajú sa informácie o počítači... - has at least %1 GB working memory - + has at least %1 GB available drive space + obsahuje aspoň %1 GB voľného miesta na disku - The system does not have enough working memory. At least %1 GB is required. - + There is not enough drive space. At least %1 GB is required. + Nie je dostatok miesta na disku. Vyžaduje sa aspoň %1 GB. + has at least %1 GB working memory + obsahuje aspoň %1 GB voľnej operačnej pamäte + + + + The system does not have enough working memory. At least %1 GB is required. + Počítač neobsahuje dostatok operačnej pamäte. Vyžaduje sa aspoň %1 GB. + + + is plugged in to a power source - + je pripojený k zdroju napájania - + The system is not plugged in to a power source. - + Počítač nie je pripojený k zdroju napájania. - + is connected to the Internet - + je pripojený k internetu - + The system is not connected to the Internet. - + Počítač nie je pripojený k internetu. - + The installer is not running with administrator rights. - + Inštalátor nie je spustený s právami správcu. + + + + The screen is too small to display the installer. + Obrazovka je príliš malá na to, aby bolo možné zobraziť inštalátor. @@ -1684,17 +1865,17 @@ Inštalátor bude ukončený a všetky zmeny stratené. Resize file system on partition %1. - Zmeniť veľkosť súborový systém na partícii %1. + Zmena veľkosti súborového systému na oddieli %1. Parted failed to resize filesystem. - Zlyhala časť zmeny veľkosti súborového systému. + Program Parted zlyhal pri zmene veľkosti systému súborov. Failed to resize filesystem. - Zlyhala zmena veľkosti súborového systému. + Zlyhala zmena veľkosti systému súborov. @@ -1702,28 +1883,28 @@ Inštalátor bude ukončený a všetky zmeny stratené. Resize partition %1. - Zmeniť veľkosť partície %1. + Zmena veľkosti oddielu %1. Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. - + Zmena veľkosti <strong>%2MB</strong> oddielu <strong>%1</strong> na <strong>%3MB</strong>. Resizing %2MB partition %1 to %3MB. - + Mení sa veľkosť %2MB oddielu %1 na %3MB. The installer failed to resize partition %1 on disk '%2'. - Inštalátor zlyhal pri zmene veľkosti partície %1 na disku '%2'. + Inštalátor zlyhal pri zmene veľkosti oddielu %1 na disku „%2“. Could not open device '%1'. - Nedá sa otvoriť zariadenie '%1'. + Nepodarilo sa otvoriť zariadenie „%1“. @@ -1731,12 +1912,12 @@ Inštalátor bude ukončený a všetky zmeny stratené. Scanning storage devices... - + Prehľadávajú sa úložné zariadenia... Partitioning - + Rozdelenie oddielov @@ -1744,17 +1925,17 @@ Inštalátor bude ukončený a všetky zmeny stratené. Set hostname %1 - Nastaviť hosťovské meno %1 + Nastavenie názvu hostiteľa %1 Set hostname <strong>%1</strong>. - + Nastavenie názvu hostiteľa <strong>%1</strong>. Setting hostname %1. - + Nastavuje sa názov hostiteľa %1. @@ -1766,79 +1947,135 @@ Inštalátor bude ukončený a všetky zmeny stratené. Cannot write hostname to target system - + Nedá sa zapísať názov hostiteľa do cieľového systému SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 - + Nastavenie modelu klávesnice na %1 a rozloženia na %2-%3 - + Failed to write keyboard configuration for the virtual console. - + Zlyhalo zapísanie konfigurácie klávesnice pre virtuálnu konzolu. - - + + + Failed to write to %1 - + Zlyhalo zapísanie do %1 - + Failed to write keyboard configuration for X11. - + Zlyhalo zapísanie konfigurácie klávesnice pre server X11. + + + + Failed to write keyboard configuration to existing /etc/default directory. + Zlyhalo zapísanie konfigurácie klávesnice do existujúceho adresára /etc/default. SetPartFlagsJob - + Set flags on partition %1. - + Nastavenie značiek na oddieli %1. - + + Set flags on %1MB %2 partition. + Nastavenie značiek na %1MB oddieli %2. + + + + Set flags on new partition. + Nastavenie značiek na novom oddieli. + + + Clear flags on partition <strong>%1</strong>. - + Vymazanie značiek na oddieli <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + Vymazanie značiek na %1MB oddieli <strong>%2</strong>. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + Vymazanie značiek na novom oddieli. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + Označenie oddielu <strong>%1</strong> ako <strong>%2</strong>. + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + Označenie %1MB oddielu <strong>%2</strong> ako <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + Označenie nového oddielu ako <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + Vymazávajú sa značky na oddieli <strong>%1</strong>. + + + + Clearing flags on %1MB <strong>%2</strong> partition. + Vymazávajú sa značky na %1MB oddieli <strong>%2</strong>. + + + + Clearing flags on new partition. + Vymazávajú sa značky na novom oddieli. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Nastavujú sa značky <strong>%2</strong> na oddieli <strong>%1</strong>. + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + Nastavujú sa značky <strong>%3</strong> na %1MB oddieli <strong>%2</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + Nastavujú sa značky <strong>%1</strong> na novom oddieli. + + + The installer failed to set flags on partition %1. - + Inštalátor zlyhal pri nastavovaní značiek na oddieli %1. - + Could not open device '%1'. - + Nepodarilo sa otvoriť zariadenie „%1“. - + Could not open partition table on device '%1'. - + Nepodarilo sa otvoriť tabuľku oddielov na zariadení „%1“. - + Could not find partition '%1'. - + Nepodarilo sa nájsť oddiel „%1“. @@ -1846,45 +2083,55 @@ Inštalátor bude ukončený a všetky zmeny stratené. Update geometry of partition %1. - + Aktualizovanie geometrie oddielu %1. Failed to change the geometry of the partition. - + Zlyhala zmena geometrie oddielu. SetPasswordJob - + Set password for user %1 - + Nastavenie hesla pre používateľa %1 - + Setting password for user %1. - + Nastavuje sa heslo pre používateľa %1. - + Bad destination system path. - + Nesprávny cieľ systémovej cesty. - + rootMountPoint is %1 - + rootMountPoint je %1 - + + Cannot disable root account. + Nedá sa zakázať účet správcu. + + + + passwd terminated with error code %1. + Príkaz passwd ukončený s chybovým kódom %1. + + + Cannot set password for user %1. - + Nedá sa nastaviť heslo pre používateľa %1. - + usermod terminated with error code %1. - + Príkaz usermod ukončený s chybovým kódom %1. @@ -1892,37 +2139,37 @@ Inštalátor bude ukončený a všetky zmeny stratené. Set timezone to %1/%2 - + Nastavenie časovej zóny na %1/%2 Cannot access selected timezone path. - + Nedá sa získať prístup k vybratej ceste časovej zóny. Bad path: %1 - + Nesprávna cesta: %1 Cannot set timezone. - + Nedá sa nastaviť časová zóna. Link creation failed, target: %1; link name: %2 - - - - - Cannot set timezone, - + Zlyhalo vytvorenie odakzu, cieľ: %1; názov odkazu: %2 + Cannot set timezone, + Nedá sa nastaviť časová zóna, + + + Cannot open /etc/timezone for writing - + Nedá sa otvoriť cesta /etc/timezone pre zapisovanie @@ -1930,7 +2177,7 @@ Inštalátor bude ukončený a všetky zmeny stratené. This is an overview of what will happen once you start the install procedure. - + Toto je prehľad toho, čo sa stane, keď spustíte inštaláciu. @@ -1938,41 +2185,41 @@ Inštalátor bude ukončený a všetky zmeny stratené. Summary - Celkovo + Súhrn UsersPage - + Your username is too long. - + Vaše používateľské meno je príliš dlhé. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Vaše používateľské meno obsahuje neplatné znaky. Povolené sú iba písmená, čísla a pomlčky. - + Your hostname is too short. - + Váš názov hostiteľa je príliš krátky. - + Your hostname is too long. - + Váš názov hostiteľa je príliš dlhý. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - + Váš názov hostiteľa obsahuje neplatné znaky. Povolené sú iba písmená, čísla a pomlčky. - - + + Your passwords do not match! - Vaše heslo nesúhlasí! + Vaše heslá sa nezhodujú! @@ -1988,60 +2235,65 @@ Inštalátor bude ukončený a všetky zmeny stratené. Form - + Forma &Language: - + &Jazyk: &Release notes - + &Poznámky k vydaniu &Known issues - + &Známe problémy &Support - + Po&dpora &About - + &O inštalátore - + <h1>Welcome to the %1 installer.</h1> - + <h1>Vitajte v inštalátore distribúcie %1.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>Vitajte v aplikácii Calamares, inštalátore distribúcie %1.</h1> + + + About %1 installer - + O inštalátore %1 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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/>Autorské práva 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Autorské práva 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Poďakovanie: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg a <a href="https://www.transifex.com/calamares/calamares/">prekladateľký tím inštalátora Calamares</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> je vyvýjaný s podporou projektu <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Oslobodzujúci softvér. - + %1 support - + Podpora distribúcie %1 WelcomeViewStep - + Welcome - + Vitajte \ No newline at end of file diff --git a/lang/calamares_sl.ts b/lang/calamares_sl.ts index 446576f81..9a2165909 100644 --- a/lang/calamares_sl.ts +++ b/lang/calamares_sl.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Izberite razdelek, ki naj bo zmanjšan: - - - - Allocate drive space by dragging the divider below: - Dodelite prostor na disku prek vlečenja razdelilnika spodaj: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -200,32 +188,32 @@ Izpis: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Nepravilna pot delovne mape - + Working directory %1 for python job %2 is not readable. Ni mogoče brati delovne mape %1 za pythonovo opravilo %2. - + Bad main script file Nepravilna datoteka glavnega skripta - + Main script file %1 for python job %2 is not readable. Ni mogoče brati datoteke %1 glavnega skripta za pythonovo opravilo %2. - + Boost.Python error in job "%1". Napaka Boost.Python v opravilu "%1". @@ -233,65 +221,91 @@ Izpis: Calamares::ViewManager - + &Back &Nazaj - + &Next &Naprej - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? Preklic namestitve? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Ali res želite preklicati trenutni namestitveni proces? Namestilni program se bo končal in vse spremembe bodo izgubljene. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit - &Izhod + + &Done + - + + The installation is complete. Close the installer. + + + + Error Napaka - + Installation Failed Namestitev je spodletela @@ -299,22 +313,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CalamaresPython::Helper - + Unknown exception type Neznana vrsta izjeme - + unparseable Python error nerazčlenljiva napaka Python - + unparseable Python traceback - + Unfetchable Python error. @@ -322,12 +336,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CalamaresWindow - + %1 Installer %1 Namestilnik - + Show debug information @@ -335,12 +349,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CheckFileSystemJob - + Checking file system on partition %1. Preverjanje datotečnega sistema na razdelku %1. - + The file system check on partition %1 failed. Preverjanje datotečnega sistema na razdelku %1 je spodletelo. @@ -348,7 +362,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -502,22 +523,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. ClearTempMountsJob - + Clear all temporary mounts. Počisti vse začasne priklope. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. Ni možno dobiti seznama začasnih priklopov. - + Cleared all temporary mounts. Vsi začasni priklopi so bili počiščeni. @@ -530,60 +551,70 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Ustvari razdelek - + + MiB + + + + Partition &Type: &Vrsta razdelka: - + &Primary &Primaren - + E&xtended R&azširjen - + Fi&le System: - + Flags: - + &Mount Point: &Priklopna točka: - + Si&ze: Ve&likost - - MB - MB + + En&crypt + - + Logical Logičen - + Primary Primaren - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. CreateUserJob - + Create user %1 Ustvari uporabnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Mapa sudoers ni zapisljiva. - + Cannot create sudoers file for writing. Ni mogoče ustvariti datoteke sudoers za pisanje. - + Cannot chmod sudoers file. Na datoteki sudoers ni mogoče izvesti opravila chmod. - + Cannot open groups file for reading. Datoteke skupin ni bilo mogoče odpreti za branje. - + Cannot create user %1. Ni mogoče ustvariti uporabnika %1. - + useradd terminated with error code %1. useradd se je prekinil s kodo napake %1. - - Cannot set full name for user %1. - Ni mogoče nastaviti polnega imena za uporabnika %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn se je prekinil s kodo napake %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Ni mogoče nastaviti lastništva domače mape za uporabnika %1. - + chown terminated with error code %1. chown se je prekinil s kodo napake %1. @@ -793,7 +824,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + + 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 Nastavi informacije razdelka - + Install %1 on <strong>new</strong> %2 system partition. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. - + Install %2 on %3 system partition <strong>%1</strong>. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. - + Install boot loader on <strong>%1</strong>. - + Setting up mount points. @@ -930,58 +1025,73 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatiraj razdelek %1 (datotečni sistem: %2, velikost %3 MB) na %4. - + Format <strong>%3MB</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'. Namestilniku ni uspelo formatirati razdelka %1 na disku '%2'. - + Could not open device '%1'. Ni mogoče odpreti naprave '%1'. - + Could not open partition table. Ni mogoče odpreti razpredelnice razdelkov. - + The installer failed to create file system on partition %1. Namestilniku ni uspelo ustvariti datotečnega sistema na razdelku %1. - + The installer failed to update partition table on disk '%1'. Namestilniku ni uspelo posodobiti razpredelnice razdelkov na disku '%1'. @@ -1019,12 +1129,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> Nastavi model tipkovnice na %1.<br/> - + Set keyboard layout to %1/%2. Nastavi razporeditev tipkovnice na %1/%2. @@ -1032,7 +1142,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. KeyboardViewStep - + Keyboard Tipkovnica @@ -1040,15 +1150,25 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Območje: - + Zone: Časovni pas: - + + &Change... - + Set timezone to %1/%2.<br/> Nastavi časovni pas na %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Nalaganje podatkov položaja ... - + Location Položaj @@ -1219,6 +1350,32 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Ni mogoče odpreti naprave %1 za razveljavitev kopiranja. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Katero ime želite uporabiti za prijavljanje? - @@ -1341,7 +1497,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Nov razdelek - + Name Ime - + File System Datotečni sistem - + Mount Point Priklopna točka - + Size Velikost @@ -1399,32 +1560,32 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. &Povrni vse spremembe - + New Partition &Table Nov razdelek &Razpredelnica - + &Create &Ustvari - + &Edit &Urejaj - + &Delete &Izbriši - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? Ali ste prepričani, da želite ustvariti novo razpredelnico razdelkov na %1? @@ -1432,90 +1593,100 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. PartitionViewStep - + Gathering system information... Zbiranje informacij o sistemu ... - + Partitions Razdelki - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. Privzeto - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + 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: @@ -1629,55 +1805,60 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. 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. @@ -1915,12 +2162,12 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2016,22 +2263,27 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ Namestilni program se bo končal in vse spremembe bodo izgubljene. WelcomeViewStep - + Welcome diff --git a/lang/calamares_sr.ts b/lang/calamares_sr.ts index 3252c2eff..b0c88e99b 100644 --- a/lang/calamares_sr.ts +++ b/lang/calamares_sr.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Изаберите партицију за смањивање: - - - - Allocate drive space by dragging the divider below: - Издвојте простор на диску повлачећи граничник испод: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -60,7 +27,7 @@ Boot Partition - Партиција за покретање система + Подизна партиција @@ -70,12 +37,12 @@ Do not install a boot loader - + Не инсталирај подизни учитавач %1 (%2) - + %1 (%2) @@ -83,7 +50,7 @@ Form - + Форма @@ -98,10 +65,31 @@ Modules - + Модули - + + Type: + Тип: + + + + + none + ништа + + + + Interface: + Сучеље: + + + + Tools + Алатке + + + Debug information @@ -111,7 +99,7 @@ Install - + Инсталирај @@ -127,170 +115,197 @@ Run command %1 %2 - + Покрени команду %1 %2 Running command %1 %2 - + Извршавам команду %1 %2 External command crashed - Извршавање спољашње команде није успело + Спољашња наредба се срушила Command %1 crashed. Output: %2 - Извршавање команде %1 није успело. -Порука: + Наредба %1 се срушила. +Излаз: %2 External command failed to start - Покретање спољашње команде није успело + Покретање спољашње наредбе није успело Command %1 failed to start. - Покретање команде %1 није успело + Покретање наредбе %1 није успело Internal error when starting command - Интерна грешка при покретању команде + Интерна грешка при покретању наредбе Bad parameters for process job call. - Погрешни параметри код позива функције у процесу. + Лоши параметри при позиву посла процеса. External command failed to finish - Извршавање екстерне команде није завршено. + Спољашња наредба није завршила Command %1 failed to finish in %2s. Output: %3 - Извршавање команде %1 није завршено у %2s. -Повратна порука: + Наредба %1 није завршила у %2s. +Излаз: %3 External command finished with errors - Извршавање спољашње команде извршено уз грешке. + Спољашња наредба извршена уз грешке Command %1 finished with exit code %2. Output: %3 - Команда %1 завршена са излазним кодом %2. -Повратна порука: %3 + Наредба %1 извршена са излазним кодом %2. +Излаз: +%3 Calamares::PythonJob - + Running %1 operation. - + Извршавам %1 операцију. - + Bad working directory path Лоша путања радног директоријума - + Working directory %1 for python job %2 is not readable. - Није могуће прочитати радни директоријум %1 за функцију %2 у питону. + Радни директоријум %1 за питонов посао %2 није читљив. - + Bad main script file - Неисправан главни фајл скрипте + Лош фајл главне скрипте - + Main script file %1 for python job %2 is not readable. - Није могуће прочитати главни фајл скрипте %1 за питон функцију %2 + Фајл главне скрипте %1 за питонов посао %2 није читљив. - + Boost.Python error in job "%1". - Грешка у функцији %1 C++ библиотеке Boost.Python. + Boost.Python грешка у послу „%1“. Calamares::ViewManager - + &Back &Назад - + &Next - &Даље + &Следеће - - + + &Cancel - &Прекини + &Откажи - + + + Cancel installation without changing the system. + + + + Cancel installation? - Прекини инсталацију + Отказати инсталацију? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Да ли стварно желите да прекинете текући процес инсталације? Инсталер ће бити затворен и све промене ће бити изгубљене. - - Continue with setup? + + &Yes - + + &No + + + + + &Close + + + + + Continue with setup? + Наставити са подешавањем? + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + &Инсталирај сада - + Go &back + Иди &назад + + + + &Done - - &Quit - &Затвори + + The installation is complete. Close the installer. + - + Error Грешка - + Installation Failed Инсталација није успела @@ -298,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type Непознат тип изузетка - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -321,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 инсталер - + Show debug information @@ -334,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. Провера фајл система на партицији %1. - + The file system check on partition %1 failed. Провера фајл система на партицији %1 није успела. @@ -347,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -357,19 +372,19 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + За најбоље резултате обезбедите да овај рачунар: - + System requirements - + Системски захтеви @@ -377,105 +392,112 @@ The installer will quit and all changes will be lost. Form - + Форма - + After: - + После: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Ручно партиционисање</strong><br/>Сами можете креирати или мењати партције. - + Boot loader location: - + Подизни учитавач на: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 биће змањена на %2MB а нова %3MB партиција биће направљена за %4. - + Select storage de&vice: - + Изаберите у&ређај за смештање: - - - - + + + + Current: + Тренутно: + + + + Reuse %1 as home partition for %2. - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -483,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 Уклони тачке припајања за операције партиције на %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Уклоњене све тачке припајања за %1 @@ -501,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -529,60 +551,70 @@ The installer will quit and all changes will be lost. Направи партицију - + + MiB + + + + Partition &Type: &Тип партиције - + &Primary &Примарна - + E&xtended П&роширена - + Fi&le System: - + Flags: - + &Mount Point: Тачка &припајања: - + Si&ze: Вели&чина - - MB - MB + + En&crypt + - + Logical Логичка - + Primary Примарна - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -686,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 Направи корисника %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Правим корисника %1 - + Sudoers dir is not writable. Није могуће писати у "Судоерс" директоријуму. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. Није могуће променити мод (chmod) над "судоерс" фајлом - + Cannot open groups file for reading. - + Cannot create user %1. Није могуће направити корисника %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -792,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -830,6 +862,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -845,7 +903,7 @@ The installer will quit and all changes will be lost. &Keep - + &Очувај @@ -860,58 +918,96 @@ The installer will quit and all changes will be lost. &Mount Point: - + &Тачка монтирања: Si&ze: + &Величина: + + + + MiB - + Fi&le System: + Фајл &систем: + + + + Flags: - - 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. @@ -929,58 +1025,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + Заврши + + + + Installation Complete + + + + + The installation of %1 is complete. FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,18 +1123,18 @@ The installer will quit and all changes will be lost. Script - + Скрипта KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1031,23 +1142,33 @@ The installer will quit and all changes will be lost. 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 @@ -1124,49 +1245,60 @@ The installer will quit and all changes will be lost. License - + Лиценца LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. + Системски језик биће постављен на %1 + + + + The numbers and dates locale will be set to %1. - + Region: - + Регион: - + Zone: - + Зона: - + + &Change... + &Измени... + + + + Set timezone to %1/%2.<br/> - - Set timezone to %1/%2.<br/> + + %1 (%2) + Language (Country) LocaleViewStep - + Loading location data... - + Location - + Локација @@ -1218,6 +1350,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + Назив + + + + Description + Опис + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + Избор пакета + + Page_Keyboard @@ -1233,7 +1391,7 @@ The installer will quit and all changes will be lost. Type here to test your keyboard - + куцајте овде да тестирате тастатуру @@ -1241,12 +1399,12 @@ The installer will quit and all changes will be lost. Form - + Форма What is your name? - + Како се зовете? @@ -1254,7 +1412,6 @@ The installer will quit and all changes will be lost. - @@ -1269,7 +1426,7 @@ The installer will quit and all changes will be lost. Choose a password to keep your account safe. - + Изаберите лозинку да обезбедите свој налог. @@ -1279,7 +1436,7 @@ The installer will quit and all changes will be lost. What is the name of this computer? - + Како ћете звати ваш рачунар? @@ -1340,7 +1497,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1360,22 +1522,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1398,32 +1560,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1431,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + Тренутно: - + After: - + После: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1527,21 +1699,26 @@ The installer will quit and all changes will be lost. Default - + подразумевано - + unknown - + непознато - + extended - + проширена - + unformatted + неформатирана + + + + swap @@ -1563,64 +1740,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1628,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1735,7 +1917,7 @@ The installer will quit and all changes will be lost. Partitioning - + Партиционисање @@ -1759,7 +1941,7 @@ The installer will quit and all changes will be lost. Internal Error - + Интерна грешка @@ -1771,71 +1953,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1856,32 +2094,42 @@ The installer will quit and all changes will be lost. 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. @@ -1914,12 +2162,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,39 +2185,39 @@ The installer will quit and all changes will be lost. Summary - + Сажетак UsersPage - + Your username is too long. - + Ваше корисничко име је предугачко. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. Име вашег "домаћина" - hostname је прекратко. - + Your hostname is too long. Ваше име домаћина је предуго - hostname - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Ваше име "домаћина" - hostname садржи недозвољене карактере. Могуће је користити само слова, бројеве и цртице. - - + + Your passwords do not match! Лозинке се не поклапају! @@ -1979,7 +2227,7 @@ The installer will quit and all changes will be lost. Users - + Корисници @@ -1987,12 +2235,12 @@ The installer will quit and all changes will be lost. Form - + Форма &Language: - + &Језик: @@ -2002,45 +2250,50 @@ The installer will quit and all changes will be lost. &Known issues - + &Познати проблеми &Support - + По&дршка &About - + &О програму - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer + О %1 инсталатеру + + + + <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://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-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - - - - + %1 support - + %1 подршка WelcomeViewStep - + Welcome - + Добродошли \ No newline at end of file diff --git a/lang/calamares_sr@latin.ts b/lang/calamares_sr@latin.ts index cf708e40d..5d39c973e 100644 --- a/lang/calamares_sr@latin.ts +++ b/lang/calamares_sr@latin.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Odaberite particiju koju želite smanjiti: - - - - Allocate drive space by dragging the divider below: - Izdvojite prostor na disku tako što ćete povući graničnik ispod: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -200,32 +188,32 @@ Povratna poruka: Calamares::PythonJob - + Running %1 operation. - + Bad working directory path Neispravna putanja do radne datoteke - + Working directory %1 for python job %2 is not readable. Nemoguće pročitati radnu datoteku %1 za funkciju %2 u Python-u. - + Bad main script file Neispravan glavna datoteka za skriptu - + Main script file %1 for python job %2 is not readable. Glavna datoteka za skriptu %1 za Python funkciju %2 se ne može pročitati. - + Boost.Python error in job "%1". Boost.Python greška u funkciji %1 @@ -233,65 +221,91 @@ Povratna poruka: Calamares::ViewManager - + &Back &Nazad - + &Next &Dalje - - + + &Cancel &Prekini - + + + Cancel installation without changing the system. + + + + Cancel installation? Prekini instalaciju? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Da li stvarno želite prekinuti trenutni proces instalacije? Instaler će se zatvoriti i sve promjene će biti izgubljene. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit - &Zatvori + + &Done + - + + The installation is complete. Close the installer. + + + + Error Greška - + Installation Failed Neuspješna instalacija @@ -299,22 +313,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CalamaresPython::Helper - + Unknown exception type Nepoznat tip izuzetka - + unparseable Python error unparseable Python error - + unparseable Python traceback unparseable Python traceback - + Unfetchable Python error. Unfetchable Python error. @@ -322,12 +336,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CalamaresWindow - + %1 Installer %1 Instaler - + Show debug information @@ -335,12 +349,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CheckFileSystemJob - + Checking file system on partition %1. Provjeravam fajl sistem na particiji %1. - + The file system check on partition %1 failed. Provjera fajl sistema na particiji %1 nije uspjela. @@ -348,7 +362,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -358,17 +372,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -381,102 +395,109 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ClearMountsJob - + Clear mounts for partitioning operations on %1 Skini tačke montiranja za operacije nad particijama na %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 Sve tačke montiranja na %1 skinute @@ -502,22 +523,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -530,60 +551,70 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Kreiraj particiju - + + MiB + + + + Partition &Type: &Tip particije - + &Primary &Primarna - + E&xtended P&roširena - + Fi&le System: - + Flags: - + &Mount Point: Tačka &montiranja: - + Si&ze: Veli&čina - - MB - MB + + En&crypt + - + Logical Logička - + Primary Primarna - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. CreateUserJob - + Create user %1 Napravi korisnika %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. Nemoguće mijenjati fajlove u sudoers direktorijumu - + Cannot create sudoers file for writing. Nemoguće napraviti sudoers fajl - + Cannot chmod sudoers file. Nemoguće uraditi chmod nad sudoers fajlom. - + Cannot open groups file for reading. Nemoguće otvoriti groups fajl - + Cannot create user %1. Nemoguće napraviti korisnika %1. - + useradd terminated with error code %1. Komanda useradd prekinuta sa kodom greške %1 - - Cannot set full name for user %1. - Ne mogu postaviti puno ime za korisnika %1. + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - Lomanda chfn prekinuta sa kodom greške %1. + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. Nemoguće postaviti vlasništvo nad početnim direktorijumom za korisnika %1. - + chown terminated with error code %1. Komanda chown prekinuta sa kodom greške %1. @@ -793,7 +824,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + + 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. @@ -930,58 +1025,73 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. Instaler nije uspeo formatirati particiju %1 na disku '%2'. - + Could not open device '%1'. Ne mogu otvoriti uređaj '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1019,12 +1129,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1032,7 +1142,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. KeyboardViewStep - + Keyboard Tastatura @@ -1040,15 +1150,25 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: Regija: - + Zone: Zona: - + + &Change... - + Set timezone to %1/%2.<br/> Postavi vremensku zonu na %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Očitavam podatke o lokaciji... - + Location Lokacija @@ -1219,6 +1350,32 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Koje ime želite koristiti da se prijavite? - @@ -1341,7 +1497,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. Nova particija - + Name Naziv - + File System - + Mount Point - + Size Veličina @@ -1399,32 +1560,32 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. &Vrati sve promjene - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1432,90 +1593,100 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. PartitionViewStep - + Gathering system information... - + Partitions Particije - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + 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: @@ -1629,55 +1805,60 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. 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. @@ -1915,12 +2162,12 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! Vaše lozinke se ne poklapaju @@ -2016,22 +2263,27 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ Instaler će se zatvoriti i sve promjene će biti izgubljene. WelcomeViewStep - + Welcome diff --git a/lang/calamares_sv.ts b/lang/calamares_sv.ts index e4b7d489e..eabe4119b 100644 --- a/lang/calamares_sv.ts +++ b/lang/calamares_sv.ts @@ -1,53 +1,20 @@ - - AlongsidePage - - - Choose partition to shrink: - Välj partition att förminska: - - - - Allocate drive space by dragging the divider below: - Fördela diskutrymme genom att flytta markören nedanför: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Med denna handling kommer partitionen <strong>%1</strong> som innehåller %4 att förminskas till %2 MB och en ny %3 MB stor partition kommer att skapas för %5. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Ingen EFI-systempartition kunde hittas. Gå tillbaka och partitionera din hårddisk manuellt för %1. - - - - The EFI system partition at %1 will be used for starting %2. - EFI-systempartitionen %1 kommer att användas för att starta %2. - - - - EFI system partition: - EFI-systempartition: - - 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. Systemets <strong>uppstartsmiljö</strong>.<br><br>Äldre x86-system stödjer endast <strong>BIOS</strong>.<br>Moderna system stödjer vanligen <strong>EFI</strong>, men kan också vara i kompabilitetsläge för BIOS. - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. Detta system startades med en <strong>EFI-miljö</strong>.<br><br>För att ställa in uppstart från en EFI-miljö måste en uppstartsladdare användas, t.ex. <strong>GRUB</strong> eller <strong>systemd-boot</strong> eller en <strong>EFI-systempartition</strong>. Detta sker automatiskt, såvida du inte väljer att partitionera manuellt. Då måste du själv installera en uppstartsladdare. - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - + Detta system startades med en <strong>BIOS-miljö</strong>. <br><br>För att ställa in uppstart från en BIOS-miljö måste en uppstartsladdare som t.ex. <strong>GRUB</strong> installeras, antingen i början av en partition eller på <strong>huvudstartsektorn (MBR)</strong> i början av partitionstabellen. Detta sker automatiskt, såvida du inte väljer manuell partitionering. Då måste du själv installera en uppstartsladdare. @@ -101,7 +68,28 @@ Moduler - + + Type: + Typ: + + + + + none + ingen + + + + Interface: + Gränssnitt: + + + + Tools + Verktyg + + + Debug information Avlusningsinformation @@ -200,32 +188,32 @@ Utdata: Calamares::PythonJob - + Running %1 operation. Kör %1-operation - + Bad working directory path Arbetskatalogens sökväg är ogiltig - + Working directory %1 for python job %2 is not readable. Arbetskatalog %1 för pythonuppgift %2 är inte läsbar. - + Bad main script file Ogiltig huvudskriptfil - + Main script file %1 for python job %2 is not readable. Huvudskriptfil %1 för pythonuppgift %2 är inte läsbar. - + Boost.Python error in job "%1". Boost.Python-fel i uppgift "%'1". @@ -233,65 +221,91 @@ Utdata: Calamares::ViewManager - + &Back &Bakåt - + &Next &Nästa - - + + &Cancel Avbryt - + + + Cancel installation without changing the system. + + + + Cancel installation? Avbryt installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Är du säker på att du vill avsluta installationen i förtid? Alla ändringar kommer att gå förlorade. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? Fortsätt med installation? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1-installeraren är på väg att göra ändringar för att installera %2.<br/><strong>Du kommer inte att kunna ångra dessa ändringar!strong> - + &Install now &Installera nu - + Go &back Gå &bakåt - - &Quit - Avsluta + + &Done + - + + The installation is complete. Close the installer. + + + + Error Fel - + Installation Failed Installationen misslyckades @@ -299,22 +313,22 @@ Alla ändringar kommer att gå förlorade. CalamaresPython::Helper - + Unknown exception type Okänd undantagstyp - + unparseable Python error Otolkbart Pythonfel - + unparseable Python traceback Otolkbar Python-traceback - + Unfetchable Python error. Ohämtbart Pythonfel @@ -322,12 +336,12 @@ Alla ändringar kommer att gå förlorade. CalamaresWindow - + %1 Installer %1-installationsprogram - + Show debug information Visa avlusningsinformation @@ -335,12 +349,12 @@ Alla ändringar kommer att gå förlorade. CheckFileSystemJob - + Checking file system on partition %1. Kontrollerar filsystem på partition %1. - + The file system check on partition %1 failed. Filsystemkontrollen på partition %1 misslyckades. @@ -348,7 +362,7 @@ Alla ändringar kommer att gå förlorade. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Denna dator uppfyller inte minimikraven för att installera %1.<br/>Installationen kan inte fortsätta. <a href="#details">Detaljer...</a> @@ -358,17 +372,17 @@ Alla ändringar kommer att gå förlorade. Denna dator uppfyller inte alla rekommenderade krav för att installera %1.<br/>Installationen kan fortsätta, men alla alternativ och funktioner kanske inte kan användas. - + This program will ask you some questions and set up %2 on your computer. Detta program kommer att ställa dig några frågor och installera %2 på din dator. - + For best results, please ensure that this computer: För bästa resultat, vänligen se till att datorn: - + System requirements Systemkrav @@ -381,120 +395,127 @@ Alla ändringar kommer att gå förlorade. Formulär - + After: Efter: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Manuell partitionering</strong><br/>Du kan själv skapa och ändra storlek på partitionerna. - + Boot loader location: Sökväg till uppstartshanterare: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 kommer att förminskas till %2 MB och en ny %3 MB-partition kommer att skapas för %4. - + Select storage de&vice: Välj lagringsenhet: - - - - + + + + Current: Nuvarande: - + + Reuse %1 as home partition for %2. + Återanvänd %1 som hempartition för %2. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - - - - - <strong>Select a partition to install on</strong> - - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - - - - - The EFI system partition at %1 will be used for starting %2. - - - - - EFI system partition: - - - - - This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - - <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - - This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - - - - <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - - - - <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Välj en partition att minska, sen dra i nedre fältet för att ändra storlek</strong> - This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + <strong>Select a partition to install on</strong> + <strong>Välj en partition att installera på</strong> - + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + Ingen EFI-partition kunde inte hittas på systemet. Gå tillbaka och partitionera din lagringsenhet manuellt för att ställa in %1. + + + + The EFI system partition at %1 will be used for starting %2. + EFI-partitionen %1 kommer att användas för att starta %2. + + + + EFI system partition: + EFI system partition: + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Denna lagringsenhet ser inte ut att ha ett operativsystem installerat. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring görs på lagringseneheten. + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + <strong>Rensa lagringsenhet</strong><br/>Detta kommer <font color="red">radera</font> all existerande data på den valda lagringsenheten. + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Denna lagringsenhet har %1 på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring görs på lagringsenheten. + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + <strong>Installera på sidan om</strong><br/>Installationshanteraren kommer krympa en partition för att göra utrymme för %1. + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + <strong>Ersätt en partition</strong><br/>Ersätter en partition med %1. + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + Denna lagringsenhet har redan ett operativsystem på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring sker på lagringsenheten. + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + Denna lagringsenhet har flera operativsystem på sig. Vad vill du göra?<br/>Du kommer kunna granska och bekräfta dina val innan någon ändring sker på lagringsenheten. ClearMountsJob - + Clear mounts for partitioning operations on %1 Rensa monteringspunkter för partitionering på %1 - + Clearing mounts for partitioning operations on %1. Rensar monteringspunkter för partitionering på %1. - + Cleared all mounts for %1 Rensade alla monteringspunkter för %1 @@ -502,22 +523,22 @@ Alla ändringar kommer att gå förlorade. ClearTempMountsJob - + Clear all temporary mounts. Rensa alla tillfälliga monteringspunkter. - + Clearing all temporary mounts. Rensar alla tillfälliga monteringspunkter. - + Cannot get list of temporary mounts. Kunde inte hämta tillfälliga monteringspunkter. - + Cleared all temporary mounts. Rensade alla tillfälliga monteringspunkter @@ -530,77 +551,87 @@ Alla ändringar kommer att gå förlorade. Skapa en partition - + + MiB + + + + Partition &Type: Partitions&typ: - + &Primary &Primär - + E&xtended Utökad - + Fi&le System: - + Fi&lsystem: - + Flags: - + Flaggor: - + &Mount Point: &Monteringspunkt: - + Si&ze: Storlek: - - MB - MB + + En&crypt + Kr%yptera - + Logical Logisk - + Primary Primär - + GPT GPT + + + Mountpoint already in use. Please select another one. + Monteringspunkt används redan. Välj en annan. + CreatePartitionJob Create new %2MB partition on %4 (%3) with file system %1. - + Skapa ny %2MB partition på %4 (%3) med filsystem %1. Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Skapa ny <strong>%2MB</strong> partition på <strong>%4 (%3)</strong> med filsystem <strong>%1</strong>. Creating new %1 partition on %2. - + Skapar ny %1 partition på %2. @@ -661,17 +692,17 @@ Alla ändringar kommer att gå förlorade. Create new %1 partition table on %2. - + Skapa ny %1 partitionstabell på %2. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - + Skapa ny <strong>%1</strong> partitionstabell på <strong>%2</strong> (%3). Creating new %1 partition table on %2. - + Skapar ny %1 partitionstabell på %2. @@ -687,67 +718,67 @@ Alla ändringar kommer att gå förlorade. CreateUserJob - + Create user %1 Skapar användare %1 - + Create user <strong>%1</strong>. Skapa användare <strong>%1</strong>. - + Creating user %1. Skapar användare %1 - + Sudoers dir is not writable. Sudoerkatalogen är inte skrivbar. - + Cannot create sudoers file for writing. Kunde inte skapa sudoerfil för skrivning. - + Cannot chmod sudoers file. Kunde inte chmodda sudoerfilen. - + Cannot open groups file for reading. Kunde inte öppna gruppfilen för läsning. - + Cannot create user %1. Kunde inte skapa användaren %1. - + useradd terminated with error code %1. useradd stoppades med felkod %1. - - Cannot set full name for user %1. - Kan inte sätta helt namn för användare %1. + + Cannot add user %1 to groups: %2. + Kan inte lägga till användare %1 till grupper: %2. - - chfn terminated with error code %1. - chfn stoppades med felkod %1. + + usermod terminated with error code %1. + usermod avslutade med felkod %1. - + Cannot set home directory ownership for user %1. Kunde inte ge användaren %1 äganderätt till sin hemkatalog. - + chown terminated with error code %1. chown stoppades med felkod %1. @@ -793,14 +824,14 @@ Alla ändringar kommer att gå förlorade. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Typen av <strong>partitionstabell</strong> på den valda lagringsenheten.<br><br>Det enda sättet attt ändra typen av partitionstabell är genom att radera och återskapa partitionstabellen från början, vilket förstör all data på lagringsenheten.<br>Installationshanteraren kommer behålla den nuvarande partitionstabellen om du inte väljer något annat.<br>På moderna system är GPT att föredra. This device has a <strong>%1</strong> partition table. - + Denna enhet har en <strong>%1</strong> partitionstabell. @@ -831,6 +862,32 @@ Alla ändringar kommer att gå förlorade. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ Alla ändringar kommer att gå förlorade. Storlek: - + + MiB + + + + Fi&le System: Fi&lsystem: - + Flags: + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + Lösenord + + + + Confirm passphrase + Bekräfta lösenord + + + + Please enter the same passphrase in both boxes. + + FillGlobalStorageJob - + Set partition information Ange partitionsinformation - + 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>. Installera uppstartshanterare på <strong>%1</strong>. - + Setting up mount points. Ställer in monteringspunkter. @@ -930,58 +1025,73 @@ Alla ändringar kommer att gå förlorade. Sta&rta om nu - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Klappat och klart.</h1><br/>%1 har installerats på din dator.<br/>Du kan nu starta om till ditt nya system, eller fortsätta att använda %2 i liveläge. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish Slutför + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. Formatera partition %1 (filsystem: %2, storlek: %3 MB) på %4. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. - + Formatting partition %1 with file system %2. Formatera partition %1 med filsystem %2. - + The installer failed to format partition %1 on disk '%2'. Installationsprogrammet misslyckades att formatera partition %1 på disk '%2'. - + Could not open device '%1'. Kunde inte öppna enhet '%1'. - + Could not open partition table. Kunde inte öppna partitionstabell. - + The installer failed to create file system on partition %1. Installationsprogrammet misslyckades att skapa filsystem på partition %1. - + The installer failed to update partition table on disk '%1'. Installationsprogrammet misslyckades med att uppdatera partitionstabellen på disk '%1'. @@ -1019,12 +1129,12 @@ Alla ändringar kommer att gå förlorade. KeyboardPage - + Set keyboard model to %1.<br/> Sätt tangenbordsmodell till %1.<br/> - + Set keyboard layout to %1/%2. Sätt tangentbordslayout till %1/%2. @@ -1032,7 +1142,7 @@ Alla ändringar kommer att gå förlorade. KeyboardViewStep - + Keyboard Tangentbord @@ -1040,15 +1150,25 @@ Alla ändringar kommer att gå förlorade. LCLocaleDialog - + System locale setting Systemspråksinställning - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Systemspråket påverkar vilket språk och teckenuppsättning somliga kommandoradsprogram använder.<br/>Det nuvarande språket är <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ Alla ändringar kommer att gå förlorade. LocalePage - - - The system locale is set to %1. - %1 är valt som systemspråk. + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: Region: - + Zone: Zon: - + + &Change... Ändra... - + Set timezone to %1/%2.<br/> Sätt tidszon till %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... Laddar platsdata... - + Location Plats @@ -1219,6 +1350,32 @@ Alla ändringar kommer att gå förlorade. Kunde inte öppna enhet %1 för återställning av kopiering. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ Alla ändringar kommer att gå förlorade. Vilket namn vill du använda för att logga in? - @@ -1341,7 +1497,12 @@ Alla ändringar kommer att gå förlorade. Ny partition för %1 - + + New partition + + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ Alla ändringar kommer att gå förlorade. Ny partition - + Name Namn - + File System Filsystem - + Mount Point Monteringspunkt - + Size Storlek @@ -1399,32 +1560,32 @@ Alla ändringar kommer att gå förlorade. Återställ alla ändringar - + New Partition &Table Ny partitions&tabell - + &Create Skapa - + &Edit Ändra - + &Delete Ta bort - + Install boot &loader on: Installera uppstartshanterare på: - + Are you sure you want to create a new partition table on %1? Är du säker på att du vill skapa en ny partitionstabell på %1? @@ -1432,90 +1593,100 @@ Alla ändringar kommer att gå förlorade. PartitionViewStep - + Gathering system information... Samlar systeminformation... - + Partitions Partitioner - + Install %1 <strong>alongside</strong> another operating system. Installera %1 <strong>bredvid</strong> ett annat operativsystem. - + <strong>Erase</strong> disk and install %1. <strong>Rensa</strong> disken och installera %1. - + <strong>Replace</strong> a partition with %1. <strong>Ersätt</strong> en partition med %1. - + <strong>Manual</strong> partitioning. <strong>Manuell</strong> partitionering. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). Installera %1 <strong>bredvid</strong> ett annat operativsystem på disken <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>Rensa</strong> disken <strong>%2</strong> (%3) och installera %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>Ersätt</strong> en partition på disken <strong>%2</strong> (%3) med %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>Manuell</strong> partitionering på disken <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Nuvarande: - + After: Efter: - + No EFI system partition configured - + Ingen EFI system partition konfigurerad - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ Alla ändringar kommer att gå förlorade. Standard - + unknown okänd - + extended utökad - + unformatted oformaterad + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ Alla ändringar kommer att gå förlorade. Välj var du vill installera %1.<br/><font color="red">Varning: </font>detta kommer att radera alla filer på den valda partitionen. - + The selected item does not appear to be a valid partition. Det valda alternativet verkar inte vara en giltig partition. - + %1 cannot be installed on empty space. Please select an existing partition. %1 kan inte installeras i tomt utrymme. Välj en existerande partition. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 kan inte installeras på en utökad partition. Välj en existerande primär eller logisk partition. - + %1 cannot be installed on this partition. %1 kan inte installeras på den här partitionen. - + Data partition (%1) Datapartition (%1) - + Unknown system partition (%1) Okänd systempartition (%1) - + %1 system partition (%2) Systempartition för %1 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>Partitionen %1 är för liten för %2. Välj en partition med minst storleken %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. <strong>%3</strong><br/><br/>%1 kommer att installeras på %2.<br/><font color="red">Varning: </font>all data på partition %2 kommer att gå förlorad. - + The EFI system partition at %1 will be used for starting %2. EFI-systempartitionen %1 kommer att användas för att starta %2. - + EFI system partition: EFI-systempartition: @@ -1629,55 +1805,60 @@ Alla ändringar kommer att gå förlorade. RequirementsChecker - + Gathering system information... Samlar systeminformation... - + has at least %1 GB available drive space har minst %1 GB tillgängligt utrymme på hårddisken - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory har minst %1 GB arbetsminne - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source är ansluten till en strömkälla - + The system is not plugged in to a power source. Systemet är inte anslutet till någon strömkälla. - + is connected to the Internet är ansluten till internet - + The system is not connected to the Internet. Systemet är inte anslutet till internet. - + The installer is not running with administrator rights. Installationsprogammet körs inte med administratörsrättigheter. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ Alla ändringar kommer att gå förlorade. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Sätt tangentbordsmodell till %1, layout till %2-%3 - + Failed to write keyboard configuration for the virtual console. Misslyckades med att skriva tangentbordskonfiguration för konsolen. - - + + + Failed to write to %1 Misslyckades med att skriva %1 - + Failed to write keyboard configuration for X11. Misslyckades med att skriva tangentbordskonfiguration för X11. + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Kunde inte öppna enhet "%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ Alla ändringar kommer att gå förlorade. SetPasswordJob - + Set password for user %1 Ange lösenord för användare %1 - + Setting password for user %1. Ställer in lösenord för användaren %1. - + Bad destination system path. Ogiltig systemsökväg till målet. - + rootMountPoint is %1 rootMonteringspunkt är %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. Kan inte ställa in lösenord för användare %1. - + usermod terminated with error code %1. usermod avslutade med felkod %1. @@ -1915,12 +2162,12 @@ Alla ändringar kommer att gå förlorade. Skapande av länk misslyckades, mål: %1; länknamn: %2 - + Cannot set timezone, Kan inte ställa in tidszon, - + Cannot open /etc/timezone for writing Kunde inte öppna /etc/timezone för skrivning @@ -1944,33 +2191,33 @@ Alla ändringar kommer att gå förlorade. UsersPage - + Your username is too long. Ditt användarnamn är för långt. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Ditt användarnamn innehåller otillåtna tecken! Endast små bokstäver och siffror tillåts. - + Your hostname is too short. Ditt värdnamn är för kort. - + Your hostname is too long. Ditt värdnamn är för långt. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Ditt värdnamn innehåller otillåtna tecken! Endast bokstäver, siffror och bindestreck tillåts. - - + + Your passwords do not match! Dina lösenord matchar inte! @@ -2016,22 +2263,27 @@ Alla ändringar kommer att gå förlorade. Om - + <h1>Welcome to the %1 installer.</h1> <h1>V&auml;lkommen till %1-installeraren.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer Om %1-installationsprogrammet - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>f&ouml;r %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Tack till: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini och Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a>utvecklingen sponsras av <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + - + %1 support %1-support @@ -2039,7 +2291,7 @@ Alla ändringar kommer att gå förlorade. WelcomeViewStep - + Welcome Välkommen diff --git a/lang/calamares_th.ts b/lang/calamares_th.ts index 9884597c0..5c2f1a55a 100644 --- a/lang/calamares_th.ts +++ b/lang/calamares_th.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - เลือกพาร์ทิชันที่ต้องการย่อขนาด: - - - - Allocate drive space by dragging the divider below: - จองพื้นที่ในไดรฟ์โดยการเลื่อนตัวแบ่งพื้นที่ที่ด้านล่าง: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - ในการปฏิบัติการนี้ พาร์ทิชัน <strong>%1</strong> ซึ่งมี %4 จะถูกทำการ shrunk ไปเป็น %2MB และพาร์ทิชัน %3MB ใหม่จะถูกสร้างขึ้นสำหรับ %5 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - ไม่พบพาร์ทิชันสำหรับระบบ EFI อยู่ที่ไหนเลยในระบบนี้ กรุณากลับไปเลือกใช้การแบ่งพาร์ทิชันด้วยตนเอง เพื่อติดตั้ง %1 - - - - The EFI system partition at %1 will be used for starting %2. - พาร์ทิชันสำหรับระบบ EFI ที่ %1 จะถูกใช้เพื่อเริ่มต้น %2 - - - - EFI system partition: - พาร์ทิชันสำหรับระบบ EFI: - - 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. @@ -101,7 +68,28 @@ Modules - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information ข้อมูลดีบั๊ก @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. การปฏิบัติการ %1 กำลังทำงาน - + Bad working directory path เส้นทางไดเรคทอรีที่ใช้ทำงานไม่ถูกต้อง - + Working directory %1 for python job %2 is not readable. ไม่สามารถอ่านไดเรคทอรีที่ใช้ทำงาน %1 สำหรับ python %2 ได้ - + Bad main script file ไฟล์สคริปต์หลักไม่ถูกต้อง - + Main script file %1 for python job %2 is not readable. ไม่สามารถอ่านไฟล์สคริปต์หลัก %1 สำหรับ python %2 ได้ - + Boost.Python error in job "%1". Boost.Python ผิดพลาดที่งาน "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &B ย้อนกลับ - + &Next &N ถัดไป - - + + &Cancel &C ยกเลิก - + + + Cancel installation without changing the system. + + + + Cancel installation? ยกเลิกการติดตั้ง? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. คุณต้องการยกเลิกกระบวนการติดตั้งที่กำลังดำเนินการอยู่หรือไม่? ตัวติดตั้งจะสิ้นสุดการทำงานและไม่บันทึกการเปลี่ยนแปลงที่ได้ดำเนินการก่อนหน้านี้ - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? ดำเนินการติดตั้งต่อหรือไม่? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> ตัวติดตั้ง %1 กำลังพยายามที่จะทำการเปลี่ยนแปลงในดิสก์ของคุณเพื่อติดตั้ง %2<br/><strong>คุณจะไม่สามารถยกเลิกการเปลี่ยนแปลงเหล่านี้ได้</strong> - + &Install now &ติดตั้งตอนนี้ - + Go &back กลั&บไป - - &Quit - &Q ออก + + &Done + - + + The installation is complete. Close the installer. + + + + Error ข้อผิดพลาด - + Installation Failed การติดตั้งล้มเหลว @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type ข้อผิดพลาดไม่ทราบประเภท - + unparseable Python error ข้อผิดพลาด unparseable Python - + unparseable Python traceback ประวัติย้อนหลัง unparseable Python - + Unfetchable Python error. ข้อผิดพลาด Unfetchable Python @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer ตัวติดตั้ง %1 - + Show debug information แสดงข้อมูลการดีบั๊ก @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. กำลังตรวจสอบระบบไฟล์บนพาร์ทิชัน %1. - + The file system check on partition %1 failed. การตรวจสอบระบบไฟล์บนพาร์ทิชัน %1 ล้มเหลว @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> ขณะที่กำลังติดตั้ง ตัวติดตั้งฟ้องว่า คอมพิวเตอร์นี้มีความต้องการไม่เพียงพอที่จะติดตั้ง %1.<br/>ไม่สามารถทำการติดตั้งต่อไปได้ <a href="#details">รายละเอียด...</a> @@ -358,17 +372,17 @@ The installer will quit and all changes will be lost. ขณะที่กำลังติดตั้ง ตัวติดตั้งฟ้องว่า คอมพิวเตอร์มีความต้องการไม่เพียงพอที่จะติดตั้ง %1<br/>ไม่สามารถทำการติดตั้งต่อไปได้ และฟีเจอร์บางอย่างจะถูกปิดไว้ - + This program will ask you some questions and set up %2 on your computer. โปรแกรมนี้จะถามคุณบางอย่าง เพื่อติดตั้ง %2 ไว้ในคอมพิวเตอร์ของคุณ - + For best results, please ensure that this computer: สำหรับผลลัพธ์ที่ดีขึ้น โปรดตรวจสอบให้แน่ใจว่าคอมพิวเตอร์เครื่องนี้: - + System requirements ความต้องการของระบบ @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 ล้างจุดเชื่อมต่อสำหรับการแบ่งพาร์ทิชันบน %1 - + Clearing mounts for partitioning operations on %1. กำลังล้างจุดเชื่อมต่อสำหรับการดำเนินงานเกี่ยวกับพาร์ทิชันบน %1 - + Cleared all mounts for %1 ล้างจุดเชื่อมต่อทั้งหมดแล้วสำหรับ %1 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. ล้างจุดเชื่อมต่อชั่วคราวทั้งหมด - + Clearing all temporary mounts. กำลังล้างจุดเชื่อมต่อชั่วคราวทุกจุด - + Cannot get list of temporary mounts. ไม่สามารถดึงรายการจุดเชื่อมต่อชั่วคราวได้ - + Cleared all temporary mounts. จุดเชื่อมต่อชั่วคราวทั้งหมดถูกล้างแล้ว @@ -530,60 +551,70 @@ The installer will quit and all changes will be lost. สร้างพาร์ทิชัน - + + MiB + + + + Partition &Type: &T พาร์ทิชันและประเภท: - + &Primary &P หลัก - + E&xtended &X ขยาย - + Fi&le System: - + Flags: - + &Mount Point: &M จุดเชื่อมต่อ: - + Si&ze: &Z ขนาด: - - MB - MB เมกะไบต์ + + En&crypt + - + Logical โลจิคอล - + Primary หลัก - + GPT GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -687,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 สร้างผู้ใช้ %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. ไม่สามารถเขียนไดเรคทอรี Sudoers ได้ - + Cannot create sudoers file for writing. ไม่สามารถสร้างไฟล์ sudoers เพื่อเขียนได้ - + Cannot chmod sudoers file. ไม่สามารถ chmod ไฟล์ sudoers - + Cannot open groups file for reading. ไม่สามารถเปิดไฟล์ groups เพื่ออ่านได้ - + Cannot create user %1. ไม่สามารถสร้างผู้ใช้ %1 - + useradd terminated with error code %1. useradd จบด้วยโค้ดข้อผิดพลาด %1 - - Cannot set full name for user %1. - ไม่สามารถตั้งค่าชื่อเต็มสำหรับผู้ใช้ %1 + + Cannot add user %1 to groups: %2. + - - chfn terminated with error code %1. - chfn จบด้วยโค้ดข้อผิดพลาด %1 + + usermod terminated with error code %1. + - + Cannot set home directory ownership for user %1. ไม่สามารถตั้งค่าความเป็นเจ้าของไดเรคทอรี home สำหรับผู้ใช้ %1 - + chown terminated with error code %1. chown จบด้วยโค้ดข้อผิดพลาด %1 @@ -793,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -831,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + 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 @@ -869,50 +926,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -930,58 +1025,73 @@ The installer will quit and all changes will be lost. &R เริ่มต้นใหม่ทันที - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>เสร็จสิ้น</h1><br/>%1 ติดตั้งบนคอมพิวเตอร์ของคุณเรียบร้อย<br/>คุณสามารถเริ่มทำงานเพื่อเข้าระบบใหม่ของคุณ หรือดำเนินการใช้ %2 Live environment ต่อไป + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. ฟอร์แมทพาร์ทิชัน %1 (ระบบไฟล์: %2, ขนาด: %3 MB) บน %4. - + Format <strong>%3MB</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'. ตัวติดตั้งไม่สามารถฟอร์แมทพาร์ทิชัน %1 บนดิสก์ '%2' - + Could not open device '%1'. ไม่สามารถเปิดอุปกรณ์ '%1' - + Could not open partition table. ไม่สามารถเปิดตารางพาร์ทิชัน - + The installer failed to create file system on partition %1. ตัวติดตั้งไม่สามารถสร้างระบบไฟล์บนพาร์ทิชัน %1 - + The installer failed to update partition table on disk '%1'. ตัวติดตั้งไม่สามารถอัพเดทตารางพาร์ทิชันบนดิสก์ '%1' @@ -1019,12 +1129,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> ตั้งค่าโมเดลแป้นพิมพ์เป็น %1<br/> - + Set keyboard layout to %1/%2. ตั้งค่าแบบแป้นพิมพ์เป็น %1/%2 @@ -1032,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard แป้นพิมพ์ @@ -1040,15 +1150,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting การตั้งค่า locale ระบบ - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1131,41 +1251,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - locale ระบบถูกตั้งค่าเป็น %1 + + The system language will be set to %1. + - + + The numbers and dates locale will be set to %1. + + + + Region: ภูมิภาค: - + Zone: โซน: - + + &Change... &C เปลี่ยนแปลง... - + Set timezone to %1/%2.<br/> ตั้งโซนเวลาเป็น %1/%2<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... กำลังโหลดข้อมูลตำแหน่ง... - + Location ตำแหน่ง @@ -1219,6 +1350,32 @@ The installer will quit and all changes will be lost. ไม่สามารถเปิดอุปกรณ์ %1 เพื่อย้อนกลับการคัดลอก + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1255,7 +1412,6 @@ The installer will quit and all changes will be lost. ชื่อที่คุณต้องการใช้ในการล็อกอิน? - @@ -1341,7 +1497,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. พาร์ทิชันใหม่ - + Name ชื่อ - + File System ระบบไฟล์ - + Mount Point จุดเชื่อมต่อ - + Size ขนาด @@ -1399,32 +1560,32 @@ The installer will quit and all changes will be lost. &R คืนค่าการเปลี่ยนแปลงทั้งหมด - + New Partition &Table &T ตารางพาร์ทิชันใหม่ - + &Create &C สร้าง - + &Edit &E แก้ไข - + &Delete &D ลบ - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? คุณแน่ใจว่าจะสร้างตารางพาร์ทิชันใหม่บน %1? @@ -1432,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... กำลังรวบรวมข้อมูลของระบบ... - + Partitions พาร์ทิชัน - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1531,20 +1702,25 @@ The installer will quit and all changes will be lost. ค่าเริ่มต้น - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1629,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 ตั้งค่าโมเดลแป้นพิมพ์เป็น %1 แบบ %2-%3 - + Failed to write keyboard configuration for the virtual console. ไม่สามารถเขียนการตั้งค่าแป้นพิมพ์สำหรับคอนโซลเสมือน - - + + + Failed to write to %1 ไม่สามารถเขียนไปที่ %1 - + Failed to write keyboard configuration for X11. ไม่สามาถเขียนการตั้งค่าแป้นพิมพ์สำหรับ X11 + + + Failed to write keyboard configuration to existing /etc/default directory. + + SetPartFlagsJob - + Set flags on partition %1. - + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1857,32 +2094,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 ตั้งรหัสผ่านสำหรับผู้ใช้ %1 - + Setting password for user %1. - + Bad destination system path. path ของระบบเป้าหมายไม่ถูกต้อง - + rootMountPoint is %1 rootMountPoint คือ %1 - + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + Cannot set password for user %1. ไม่สามารถตั้งค่ารหัสผ่านสำหรับผู้ใช้ %1 - + usermod terminated with error code %1. usermod จบด้วยโค้ดข้อผิดพลาด %1 @@ -1915,12 +2162,12 @@ The installer will quit and all changes will be lost. การสร้างการเชื่อมโยงล้มเหลว เป้าหมาย: %1 ชื่อการเชื่อมโยง: %2 - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. ชื่อผู้ใช้ของคุณยาวเกินไป - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. ชื่อผู้ใช้ของคุณมีตัวอักษรที่ไม่ถูกต้อง ใช้ได้เฉพาะตัวอักษรภาษาอังกฤษตัวเล็กและตัวเลขเท่านั้น - + Your hostname is too short. ชื่อโฮสต์ของคุณสั้นเกินไป - + Your hostname is too long. ชื่อโฮสต์ของคุณยาวเกินไป - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. ชื่อโฮสต์ของคุณมีตัวอักษรที่ไม่ถูกต้อง ใช้ได้เฉพาะตัวอักษรภาษาอังกฤษ ตัวเลข และขีดกลาง "-" เท่านั้น - - + + Your passwords do not match! รหัสผ่านของคุณไม่ตรงกัน! @@ -2016,22 +2263,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2039,7 +2291,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_tr_TR.ts b/lang/calamares_tr_TR.ts index 0c8033566..ba9335279 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Küçültmek için bir disk bölümü seçin: - - - - Allocate drive space by dragging the divider below: - Aşağıdaki bölümleyiciyi sürükleyerek kullanılabilir disk alanı belirle: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - Bu işlem ile <strong>%1</strong> bölümü içeren %4 %2MB küçültülecek ve yeni bölüm %3MB oluşturulacak %5 için. - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - Bu sistemde EFI disk bölümü bulunamadı. Lütfen geri dönün ve %1 kurmak için gelişmiş kurulum seçeneğini kullanın. - - - - The EFI system partition at %1 will be used for starting %2. - %1 EFI sistem bölümü %2 başlatmak için kullanılacaktır. - - - - EFI system partition: - EFI sistem bölümü: - - 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. Bu sistemdeki<br> <strong>önyükleme arayüzü</strong> sadece eski x86 sistem ve <strong>BIOS</strong> destekler. <br>Modern sistemler genellikle <strong>EFI</strong> kullanır fakat önyükleme arayüzü uyumlu modda ise BIOS seçilebilir. - + 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. Bu sistem, bir <strong>EFI</strong> önyükleme arayüzü ile başladı.<br><br>EFI ortamından başlangıcı yapılandırmak için, bu yükleyici <strong>EFI Sistem Bölümü</strong> üzerinde <strong>GRUB</strong> veya <strong>systemd-boot</strong> gibi bir önyükleyici oluşturmalıdır. Bunu otomatik olarak yapabileceğiniz gibi elle disk bölümleri oluşturarak ta yapabilirsiniz. - + 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. Bu sistem, bir <strong>BIOS</strong> önyükleme arayüzü ile başladı.<br><br>BIOS ortamında önyükleme için, yükleyici bölümün başında veya bölüm tablosu başlangıcına yakın <strong>Master Boot Record</strong> üzerine <strong>GRUB</strong> gibi bir önyükleyici yüklemeniz gerekir (önerilir). Eğer bu işlemin otomatik olarak yapılmasını istemez iseniz elle bölümleme yapabilirsiniz. @@ -60,12 +27,12 @@ Boot Partition - Önyükleyici Bölümü + Önyükleyici Disk Bölümü System Partition - Sistem Bölümü + Sistem Disk Bölümü @@ -101,7 +68,28 @@ Eklentiler - + + Type: + Tipi: + + + + + none + hiçbiri + + + + Interface: + Arayüz: + + + + Tools + Araçlar + + + Debug information Hata ayıklama bilgisi @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. %1 işlemleri yapılıyor. - + Bad working directory path Dizin yolu kötü çalışıyor - + Working directory %1 for python job %2 is not readable. %2 python işleri için %1 dizinleme çalışırken okunamadı. - + Bad main script file - Sorunlu script + Sorunlu betik dosyası - + Main script file %1 for python job %2 is not readable. - %2 python işleri için %1 sorunlu script okunamadı. + %2 python işleri için %1 sorunlu betik okunamadı. - + Boost.Python error in job "%1". Boost.Python iş hatası "%1". @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back &Geri - + &Next &Sonraki - - + + &Cancel &Vazgeç - + + + Cancel installation without changing the system. + Sistemi değiştirmeden kurulumu iptal edin. + + + Cancel installation? Yüklemeyi iptal et? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Yükleme işlemini gerçekten iptal etmek istiyor musunuz? Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. - + + &Yes + &Evet + + + + &No + &Hayır + + + + &Close + &Kapat + + + Continue with setup? Kuruluma devam et? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 sistem yükleyici %2 yüklemek için diskinizde değişiklik yapacak.<br/><strong>Bu değişiklikleri geri almak mümkün olmayacak.</strong> - + &Install now &Şimdi yükle - + Go &back Geri &git - - &Quit - &Çıkış + + &Done + &Tamam - + + The installation is complete. Close the installer. + Yükleme işi tamamlandı. Sistem yükleyiciyi kapatın. + + + Error Hata - + Installation Failed Kurulum Başarısız @@ -299,22 +313,22 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CalamaresPython::Helper - + Unknown exception type Bilinmeyen Özel Durum Tipi - + unparseable Python error Python hata ayıklaması - + unparseable Python traceback Python geri çekme ayıklaması - + Unfetchable Python error. Okunamayan Python hatası. @@ -322,12 +336,12 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CalamaresWindow - + %1 Installer %1 Yükleniyor - + Show debug information Hata ayıklama bilgisini göster @@ -335,12 +349,12 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CheckFileSystemJob - + Checking file system on partition %1. Bölüm üzerindeki dosya sistemi kontrol ediliyor %1. - + The file system check on partition %1 failed. Bölüm üzerinde dosya sistemi kontrolü başarısız oldu %1. @@ -348,7 +362,7 @@ Yükleyiciden çıkınca tüm değişiklikler kaybedilecek. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> Bu bilgisayara %1 yüklemek için minimum gereksinimler karşılanamadı. Kurulum devam edemiyor. <a href="#detaylar">Detaylar...</a> @@ -360,17 +374,17 @@ Kurulum devam edemiyor. <a href="#detaylar">Detaylar...</a> Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. - + This program will ask you some questions and set up %2 on your computer. Bu program size bazı sorular soracak ve bilgisayarınıza %2 kuracak. - + For best results, please ensure that this computer: En iyi sonucu elde etmek için bilgisayarınızın aşağıdaki gereksinimleri karşıladığından emin olunuz: - + System requirements Sistem gereksinimleri @@ -383,102 +397,110 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Biçim - + After: Sonra: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>Elle bölümleme</strong><br/>Bölümler oluşturabilir ve boyutlandırabilirsiniz. - + Boot loader location: Önyükleyici konumu: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 %2MB küçülecek ve %4 için %3MB bir disk bölümü oluşturacak. - + Select storage de&vice: Depolama ay&gıtı seç: - - - - + + + + Current: Geçerli: - + + Reuse %1 as home partition for %2. + +%2 ev bölümü olarak %1 yeniden kullanılsın. + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>Küçültmek için bir bölüm seçip alttaki çubuğu sürükleyerek boyutlandır</strong> - + <strong>Select a partition to install on</strong> <strong>Yükleyeceğin disk bölümünü seç</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. Bu sistemde EFI disk bölümü bulunamadı. Lütfen geri dönün ve %1 kurmak için gelişmiş kurulum seçeneğini kullanın. - + The EFI system partition at %1 will be used for starting %2. %1 EFI sistem bölümü %2 başlatmak için kullanılacaktır. - + EFI system partition: EFI sistem bölümü: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde yüklü herhangi bir işletim sistemi tespit etmedik. Ne yapmak istersiniz?<br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>Diski sil</strong><br/>Seçili depolama bölümündeki mevcut veriler şu anda <font color="red">silinecektir.</font> - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde %1 vardır. Ne yapmak istersiniz?<br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>Yanına yükleyin</strong><br/>Sistem yükleyici disk bölümünü küçülterek %1 için yer açacak. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - <strong>Disk bölümü üzerine yaz</strong><br/>Disk bölümü üzerinde %1 ile yaz. + <strong>Varolan bir disk bölümüne kur</strong><br/>Varolan bir disk bölümü üzerine %1 kur. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde bir işletim sistemi yüklü. Ne yapmak istersiniz? <br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. Bu depolama aygıtı üzerinde birden fazla işletim sistemi var. Ne yapmak istersiniz? <br/>Yaptığınız değişiklikler disk bölümü üzerine uygulanmadan önce gözden geçirme fırsatınız olacak. @@ -486,17 +508,17 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. ClearMountsJob - + Clear mounts for partitioning operations on %1 %1 bölümleme işlemleri için sorunsuz bağla - + Clearing mounts for partitioning operations on %1. %1 bölümleme işlemleri için bağlama noktaları temizleniyor. - + Cleared all mounts for %1 %1 için tüm bağlı bölümler ayrıldı @@ -504,22 +526,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. ClearTempMountsJob - + Clear all temporary mounts. Tüm geçici bağları temizleyin. - + Clearing all temporary mounts. Geçici olarak bağlananlar temizleniyor. - + Cannot get list of temporary mounts. Geçici bağların listesi alınamadı. - + Cleared all temporary mounts. Tüm geçici bağlar temizlendi. @@ -532,60 +554,70 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Yeni Bölüm Oluştur - + + MiB + MB + + + Partition &Type: Bölüm &Tip: - + &Primary &Birincil - + E&xtended U&zatılmış - + Fi&le System: D&osya Sistemi: - + Flags: Bayraklar: - + &Mount Point: &Bağlama Noktası: - + Si&ze: Bo&yut: - - MB - MB + + En&crypt + Şif&rele - + Logical Mantıksal - + Primary Birincil - + GPT GPT + + + Mountpoint already in use. Please select another one. + Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. + CreatePartitionJob @@ -689,67 +721,67 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. CreateUserJob - + Create user %1 %1 Kullanıcısı oluşturuluyor... - + Create user <strong>%1</strong>. <strong>%1</strong> kullanıcı oluştur. - + Creating user %1. %1 Kullanıcısı oluşturuluyor... - + Sudoers dir is not writable. Sudoers dosyası yazılabilir değil. - + Cannot create sudoers file for writing. sudoers dosyası oluşturulamadı ve yazılamadı. - + Cannot chmod sudoers file. Sudoers dosya izinleri ayarlanamadı. - + Cannot open groups file for reading. groups dosyası okunamadı. - + Cannot create user %1. %1 Kullanıcısı oluşturulamadı... - + useradd terminated with error code %1. useradd komutu şu hata ile çöktü %1. - - Cannot set full name for user %1. - %1 Kullanıcısı için tam isim ayarlanmadı. + + Cannot add user %1 to groups: %2. + %1 Kullanıcısı şu gruba eklenemedi: %2. - - chfn terminated with error code %1. - chfn komutu şu hata ile çöktü %1. + + usermod terminated with error code %1. + usermod %1 hata koduyla çöktü. - + Cannot set home directory ownership for user %1. %1 Kullanıcısı için ev dizini sahipliği ayarlanamadı. - + chown terminated with error code %1. chown %1 hata koduyla sonlandırıldı. @@ -795,7 +827,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. Seçili depolama aygıtında bir <strong>bölümleme tablosu</strong> oluştur.<br><br>Bölümleme tablosu oluşturmanın tek yolu aygıt üzerindeki bölümleri silmek, verileri yoketmek ve yeni bölümleme tablosu oluşturmaktır.<br>Sistem yükleyici aksi bir seçeneğe başvurmaz iseniz geçerli bölümlemeyi koruyacaktır.<br>Emin değilseniz, modern sistemler için GPT tercih edebilirsiniz. @@ -833,6 +865,32 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.%1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + %1 aygıtına Dracut için LUKS yapılandırmasını yaz + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Dracut için LUKS yapılandırma işlemi atlanıyor: "/" diski şifrelenemedi + + + + Failed to open %1 + %1 Açılamadı + + + + DummyCppJob + + + Dummy C++ Job + Dummy C++ Job + + EditExistingPartitionDialog @@ -871,50 +929,88 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Bo&yut: - + + MiB + MB + + + Fi&le System: D&osya Sistemi: - + Flags: Bayraklar: + + + Mountpoint already in use. Please select another one. + Bağlama noktası zaten kullanımda. Lütfen diğerini seçiniz. + + + + EncryptWidget + + + Form + Biçim + + + + En&crypt system + Sistemi Şif&rele + + + + Passphrase + Parola + + + + Confirm passphrase + Parolayı doğrula + + + + Please enter the same passphrase in both boxes. + Her iki kutuya da aynı parolayı giriniz. + FillGlobalStorageJob - + Set partition information Bölüm bilgilendirmesini ayarla - + Install %1 on <strong>new</strong> %2 system partition. %2 <strong>yeni</strong> sistem diskine %1 yükle. - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. %2 <strong>yeni</strong> disk bölümünü <strong>%1</strong> ile ayarlayıp bağla. - + Install %2 on %3 system partition <strong>%1</strong>. %3 <strong>%1</strong> sistem diskine %2 yükle. - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. %3 diskine<strong>%1</strong> ile <strong>%2</strong> bağlama noktası ayarla. - + Install boot loader on <strong>%1</strong>. - <strong>%1</strong> üzerine sistem yükleyici kur. + <strong>%1</strong> üzerine sistem ön yükleyiciyi kur. - + Setting up mount points. Bağlama noktalarını ayarla. @@ -932,58 +1028,73 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.&Şimdi yeniden başlat - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>Tüm işlem tamamlandı.</h1><br/>%1 bilgisayarınıza yüklendi<br/>Yeni kurduğunuz sistemi kullanmak için yeniden başlatabilir veya %2 Çalışan sistem ile devam edebilirsiniz. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>Yükleme Başarısız</h1><br/>%1 bilgisayarınıza yüklenemedi.<br/>Hata mesajı çıktısı: %2. + FinishedViewStep - + Finish - Kurulum Tamamlanıyor + Kurulum Tamam + + + + Installation Complete + Kurulum Tamamlandı + + + + The installation of %1 is complete. + Kurulum %1 oranında tamamlandı. FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. %1 Bölümü biçimle (dosya sistemi: %2 boyut: %3) %4 üzerinde. - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. <strong>%1</strong> diskine <strong>%2</strong> dosya sistemi ile <strong>%3MB</strong> bölüm oluştur. - + Formatting partition %1 with file system %2. %1 disk bölümü %2 dosya sistemi ile biçimlendiriliyor. - + The installer failed to format partition %1 on disk '%2'. Yükleyici %1 bölümünü '%2' diski üzerinde biçimlendiremedi. - + Could not open device '%1'. '%1' aygıtı açılamadı. - + Could not open partition table. Bölüm tablosu açılamadı. - + The installer failed to create file system on partition %1. Yükleyici %1 bölümünde dosya sistemi oluşturamadı. - + The installer failed to update partition table on disk '%1'. Yükleyici '%1' diskinde bölümleme tablosunu güncelleyemedi. @@ -1021,12 +1132,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. KeyboardPage - + Set keyboard model to %1.<br/> %1 Klavye düzeni olarak seçildi.<br/> - + Set keyboard layout to %1/%2. Alt klavye türevi olarak %1/%2 seçildi. @@ -1034,7 +1145,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. KeyboardViewStep - + Keyboard Klavye Düzeni @@ -1042,15 +1153,25 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. LCLocaleDialog - + System locale setting Sistem yerel ayarları - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. Sistem yerel ayarı, bazı uçbirim, kullanıcı ayarlamaları ve başkaca dil seçeneklerini belirler ve etkiler. <br/>Varsayılan geçerli ayarlar <strong>%1</strong>. + + + &Cancel + &Vazgeç + + + + &OK + &TAMAM + LicensePage @@ -1133,41 +1254,52 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. LocalePage - - - The system locale is set to %1. - Sistem yereli %1 olarak ayarlandı. + + The system language will be set to %1. + Sistem dili %1 olarak ayarlanacak. - + + The numbers and dates locale will be set to %1. + Sayılar ve günler için sistem yereli %1 olarak ayarlanacak. + + + Region: Bölge: - + Zone: Şehir: - + + &Change... &Değiştir... - + Set timezone to %1/%2.<br/> - Bölge ve zaman dilimi olarak %1/%2 ayarlandı.<br/> + Bölge ve zaman dilimi %1/%2 olarak ayarlandı.<br/> + + + + %1 (%2) + Language (Country) + %1 (%2) LocaleViewStep - + Loading location data... Yerel verileri yükleniyor... - + Location Sistem Yereli @@ -1221,6 +1353,32 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.%1 kopyalanıp geri alınırken aygıt açılamadı. + + NetInstallPage + + + Name + İsim + + + + Description + Açıklama + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + Ağ Üzerinden Kurulum. (Devre Dışı: Paket listeleri alınamıyor, ağ bağlantısını kontrol ediniz) + + + + NetInstallViewStep + + + Package selection + Paket seçimi + + Page_Keyboard @@ -1257,7 +1415,6 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Giriş için hangi adı kullanmak istersiniz? - @@ -1343,7 +1500,12 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.%1 için yeni disk bölümü - + + New partition + Yeni disk bölümü + + + %1 %2 %1 %2 @@ -1363,22 +1525,22 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Yeni bölüm - + Name İsim - + File System Dosya Sistemi - + Mount Point Bağlama Noktası - + Size Boyut @@ -1401,32 +1563,32 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.&Tüm Değişiklikleri Geri Al - + New Partition &Table Yeni Bölüm &Tablo - + &Create &Oluştur - + &Edit &Düzenle - + &Delete &Sil - + Install boot &loader on: Şuraya ön &yükleyici kur: - + Are you sure you want to create a new partition table on %1? %1 tablosunda yeni bölüm oluşturmaya devam etmek istiyor musunuz? @@ -1434,90 +1596,101 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. PartitionViewStep - + Gathering system information... Sistem bilgileri toplanıyor... - + Partitions Disk Bölümleme - + Install %1 <strong>alongside</strong> another operating system. Diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk and install %1. Diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition with %1. %1 ile disk bölümünün üzerine <strong>yaz</strong>. - + <strong>Manual</strong> partitioning. <strong>Manuel</strong> bölümleme. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). <strong>%2</strong> (%3) diskindeki diğer işletim sisteminin <strong>yanına</strong> %1 yükle. - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>%2</strong> (%3) diski <strong>sil</strong> ve %1 yükle. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. <strong>%2</strong> (%3) disk bölümünün %1 ile <strong>üzerine yaz</strong>. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). <strong>%1</strong> (%2) disk bölümünü <strong>manuel</strong> bölümle. - + Disk <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) - + Current: Geçerli: - + After: Sonra: - + No EFI system partition configured EFI sistem bölümü yapılandırılmamış - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. %1 başlatmak için bir EFI sistem bölümü gereklidir.<br/><br/>EFI sistem bölümünü yapılandırmak için geri dönün ve seçim yapın veya FAT32 dosya sistemi ile <strong>esp</strong> etiketiyle <strong>%2</strong> noktasına bağlayın.<br/><br/>Bir EFI sistem bölümü kurmadan devam edebilirsiniz fakat işletim sistemi başlatılamayabilir. - + EFI system partition flag not set EFI sistem bölümü bayrağı ayarlanmadı - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. %1 başlatmak için bir EFI sistem bölümü gereklidir.<br/><br/>Bir bağlama noktası <strong>%2</strong> olarak yapılandırıldı fakat <strong>esp</strong>bayrağı ayarlanmadı.<br/>Bayrağı ayarlamak için, geri dönün ve bölümü düzenleyin.<br/><br/>Sen bayrağı ayarlamadan devam edebilirsin fakat işletim sistemi başlatılamayabilir. + + + Boot partition not encrypted + Önyükleme yani boot diski şifrelenmedi + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + Ayrı bir önyükleme yani boot disk bölümü, şifrenmiş bir kök bölüm ile birlikte ayarlandı, fakat önyükleme bölümü şifrelenmedi.<br/><br/>Bu tip kurulumun güvenlik endişeleri vardır, çünkü önemli sistem dosyaları şifrelenmemiş bir bölümde saklanır.<br/>İsterseniz kuruluma devam edebilirsiniz, fakat dosya sistemi kilidi daha sonra sistem başlatılırken açılacak.<br/> +Önyükleme bölümünü şifrelemek için geri dönün ve bölüm oluşturma penceresinde <strong>Şifreleme</strong>seçeneği ile yeniden oluşturun. + QObject @@ -1533,20 +1706,25 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.Varsayılan - + unknown bilinmeyen - + extended uzatılmış - + unformatted biçimlenmemiş + + + swap + Swap-Takas + Unpartitioned space or unknown partition table @@ -1566,64 +1744,64 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.%1 kurulacak diski seçin.<br/><font color="red">Uyarı: </font>Bu işlem seçili disk üzerindeki tüm dosyaları silecek. - + The selected item does not appear to be a valid partition. Seçili nesne, geçerli bir disk bölümü olarak görünmüyor. - + %1 cannot be installed on empty space. Please select an existing partition. %1 tanımlanmamış boş bir alana kurulamaz. Lütfen geçerli bir disk bölümü seçin. - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 uzatılmış bir disk bölümüne kurulamaz. Geçerli bir, birincil disk ya da mantıksal disk bölümü seçiniz. - + %1 cannot be installed on this partition. %1 bu disk bölümüne yüklenemedi. - + Data partition (%1) Veri diski (%1) - + Unknown system partition (%1) Bilinmeyen sistem bölümü (%1) - + %1 system partition (%2) %1 sistem bölümü (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>disk bölümü %2 için %1 daha küçük. Lütfen, en az %3 GB kapasiteli bir disk bölümü seçiniz. - + <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/>Bu sistemde EFI disk bölümü bulamadı. Lütfen geri dönün ve %1 kurmak için gelişmiş kurulum seçeneğini kullanın. - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%2 üzerine %1 kuracak.<br/><font color="red">Uyarı: </font>%2 diskindeki tüm veriler kaybedilecek. - + The EFI system partition at %1 will be used for starting %2. %1 EFI sistem bölümü %2 başlatmak için kullanılacaktır. - + EFI system partition: EFI sistem bölümü: @@ -1631,56 +1809,61 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. RequirementsChecker - + Gathering system information... Sistem bilgileri toplanıyor... - + has at least %1 GB available drive space En az %1 GB disk alanı olduğundan... - + There is not enough drive space. At least %1 GB is required. Yeterli disk alanı mevcut değil. En az %1 GB disk alanı gereklidir. - + has at least %1 GB working memory En az %1 GB bellek bulunduğundan... - + The system does not have enough working memory. At least %1 GB is required. Yeterli ram bellek gereksinimi karşılanamıyor. En az %1 GB ram bellek gereklidir. - + is plugged in to a power source Bir güç kaynağına takılı olduğundan... - + The system is not plugged in to a power source. Sistem güç kaynağına bağlı değil. - + is connected to the Internet İnternete bağlı olduğundan... - + The system is not connected to the Internet. Sistem internete bağlı değil. - + The installer is not running with administrator rights. Sistem yükleyici yönetici haklarına sahip olmadan çalışmıyor. + + + The screen is too small to display the installer. + Ekran, sistem yükleyiciyi görüntülemek için çok küçük. + ResizeFileSystemJob @@ -1775,71 +1958,127 @@ Sistem güç kaynağına bağlı değil. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 Klavye düzeni %1 olarak, alt türevi %2-%3 olarak ayarlandı. - + Failed to write keyboard configuration for the virtual console. Uçbirim için klavye yapılandırmasını kaydetmek başarısız oldu. - - + + + Failed to write to %1 %1 üzerine kaydedilemedi - + Failed to write keyboard configuration for X11. X11 için klavye yapılandırmaları kaydedilemedi. + + + Failed to write keyboard configuration to existing /etc/default directory. + /etc/default dizine klavye yapılandırması yazılamadı. + SetPartFlagsJob - + Set flags on partition %1. %1 bölüm bayrağını ayarla. - + + Set flags on %1MB %2 partition. + %1MB %2 Disk bölümüne bayrak ayarla. + + + + Set flags on new partition. + Yeni disk bölümüne bayrak ayarla. + + + Clear flags on partition <strong>%1</strong>. <strong>%1</strong> bölüm bayrağını kaldır. - + + Clear flags on %1MB <strong>%2</strong> partition. + %1MB <strong>%2</strong> disk bölümünden bayrakları temizle. + + + + Clear flags on new partition. + Yeni disk bölümünden bayrakları temizle. + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. Bayrak bölüm <strong>%1</strong> olarak <strong>%2</strong>. - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + %1MB <strong>%2</strong> disk bölüm bayrağı <strong>%3</strong> olarak belirlendi. + + + + Flag new partition as <strong>%1</strong>. + Yeni disk bölümü <strong>%1</strong> olarak belirlendi. + + + Clearing flags on partition <strong>%1</strong>. <strong>%1</strong> bölümünden bayraklar kaldırılıyor. - + + Clearing flags on %1MB <strong>%2</strong> partition. + %1MB <strong>%2</strong> disk bölümünden bayraklar temizleniyor. + + + + Clearing flags on new partition. + Yeni disk bölümünden bayraklar temizleniyor. + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. <strong>%2</strong> bayrakları <strong>%1</strong> bölümüne ayarlandı. - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + <strong>%3</strong> bayrağı %1MB <strong>%2</strong> disk bölümüne ayarlanıyor. + + + + Setting flags <strong>%1</strong> on new partition. + Yeni disk bölümüne <strong>%1</strong> bayrağı ayarlanıyor. + + + The installer failed to set flags on partition %1. Yükleyici %1 bölüm bayraklarını ayarlamakta başarısız oldu. - + Could not open device '%1'. '%1' aygıtı açılamadı. - + Could not open partition table on device '%1'. '%1' aygıtında bölümleme tablosu açılamadı. - + Could not find partition '%1'. '%1' bölümü bulunamadı. @@ -1860,32 +2099,42 @@ Sistem güç kaynağına bağlı değil. SetPasswordJob - + Set password for user %1 %1 Kullanıcı için parola ayarla - + Setting password for user %1. %1 Kullanıcısı için parola ayarlanıyor. - + Bad destination system path. Hedef sistem yolu bozuk. - + rootMountPoint is %1 rootBağlamaNoktası %1 - + + Cannot disable root account. + root hesap devre dışı bırakılamaz. + + + + passwd terminated with error code %1. + passwd %1 hata kodu ile sonlandı. + + + Cannot set password for user %1. %1 Kullanıcısı için parola ayarlanamadı. - + usermod terminated with error code %1. usermod %1 hata koduyla çöktü. @@ -1918,12 +2167,12 @@ Sistem güç kaynağına bağlı değil. Link oluşturulamadı, hedef: %1; link adı: %2 - + Cannot set timezone, Bölge ve zaman dilimi ayarlanmadı, - + Cannot open /etc/timezone for writing /etc/timezone açılamadığından düzenlenemedi @@ -1947,33 +2196,33 @@ Sistem güç kaynağına bağlı değil. UsersPage - + Your username is too long. Kullanıcı adınız çok uzun. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. Kullanıcı adınız geçersiz karakterler içeriyor. Sadece küçük harfleri ve sayıları kullanabilirsiniz. - + Your hostname is too short. Makine adınız çok kısa. - + Your hostname is too long. Makine adınız çok uzun. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. Makine adınız geçersiz karakterler içeriyor. Sadece küçük harfleri ve sayıları ve tire işaretini kullanabilirsiniz. - - + + Your passwords do not match! Parolanız eşleşmiyor! @@ -1983,7 +2232,7 @@ Sistem güç kaynağına bağlı değil. Users - Kullanıcı Seçenekleri + Kullanıcı Tercihleri @@ -2019,22 +2268,27 @@ Sistem güç kaynağına bağlı değil. &Hakkında - + <h1>Welcome to the %1 installer.</h1> <h1>%1 Sistem Yükleyiciye Hoşgeldiniz.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>%1 Calamares Sistem Yükleyici .</h1> + + + About %1 installer %1 sistem yükleyici hakkında - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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/>Telif Hakkı 2014-2015 Teo Mrnjavac <teo@kde.org><br/>Teşekkürler: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> Gelişim sponsoru: <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>%3 sürüm</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkürler: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg ve<a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri takımı</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> gelişim sponsoru <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım. - + %1 support %1 destek @@ -2042,7 +2296,7 @@ Sistem güç kaynağına bağlı değil. WelcomeViewStep - + Welcome Hoşgeldiniz diff --git a/lang/calamares_uk.ts b/lang/calamares_uk.ts index dd97187e8..a67caae8a 100644 --- a/lang/calamares_uk.ts +++ b/lang/calamares_uk.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - Оберіть розділ для зменьшення: - - - - Allocate drive space by dragging the divider below: - Виділіть місце на диску, перетягнувши роздільник нижче - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 Установник - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_ur.ts b/lang/calamares_ur.ts index c8406fcfb..744e43ced 100644 --- a/lang/calamares_ur.ts +++ b/lang/calamares_ur.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - - - - - Allocate drive space by dragging the divider below: - - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - - - - - 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: - - - 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. @@ -101,7 +68,28 @@ - + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + Debug information @@ -194,32 +182,32 @@ Output: 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". @@ -227,64 +215,90 @@ Output: Calamares::ViewManager - + &Back - + &Next - - + + &Cancel - + + + Cancel installation without changing the system. + + + + Cancel installation? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - + + &Yes + + + + + &No + + + + + &Close + + + + Continue with setup? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> - + &Install now - + Go &back - - &Quit + + &Done - + + The installation is complete. Close the installer. + + + + Error - + Installation Failed @@ -292,22 +306,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type - + unparseable Python error - + unparseable Python traceback - + Unfetchable Python error. @@ -315,12 +329,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer - + Show debug information @@ -328,12 +342,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. - + The file system check on partition %1 failed. @@ -341,7 +355,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> @@ -351,17 +365,17 @@ The installer will quit and all changes will be lost. - + This program will ask you some questions and set up %2 on your computer. - + For best results, please ensure that this computer: - + System requirements @@ -374,102 +388,109 @@ The installer will quit and all changes will be lost. - + After: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Boot loader location: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + Select storage de&vice: - - - - + + + + Current: - + + Reuse %1 as home partition for %2. + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + <strong>Select a partition to install on</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - + The EFI system partition at %1 will be used for starting %2. - + EFI system partition: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. @@ -477,17 +498,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 - + Clearing mounts for partitioning operations on %1. - + Cleared all mounts for %1 @@ -495,22 +516,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. - + Clearing all temporary mounts. - + Cannot get list of temporary mounts. - + Cleared all temporary mounts. @@ -523,60 +544,70 @@ The installer will quit and all changes will be lost. - + + MiB + + + + Partition &Type: - + &Primary - + E&xtended - + Fi&le System: - + Flags: - + &Mount Point: - + Si&ze: - - MB + + En&crypt - + Logical - + Primary - + GPT + + + Mountpoint already in use. Please select another one. + + CreatePartitionJob @@ -680,67 +711,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 - + Create user <strong>%1</strong>. - + Creating user %1. - + Sudoers dir is not writable. - + Cannot create sudoers file for writing. - + Cannot chmod sudoers file. - + Cannot open groups file for reading. - + Cannot create user %1. - + useradd terminated with error code %1. - - Cannot set full name for user %1. + + Cannot add user %1 to groups: %2. - - chfn terminated with error code %1. + + usermod terminated with error code %1. - + Cannot set home directory ownership for user %1. - + chown terminated with error code %1. @@ -786,7 +817,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. @@ -824,6 +855,32 @@ The installer will quit and all changes will be lost. + + 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 @@ -862,50 +919,88 @@ The installer will quit and all changes will be lost. - + + 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. @@ -923,58 +1018,73 @@ The installer will quit and all changes will be lost. - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + FinishedViewStep - + Finish + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. - + Format <strong>%3MB</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'. - + Could not open device '%1'. - + Could not open partition table. - + The installer failed to create file system on partition %1. - + The installer failed to update partition table on disk '%1'. @@ -1012,12 +1122,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> - + Set keyboard layout to %1/%2. @@ -1025,7 +1135,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard @@ -1033,15 +1143,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. + + + &Cancel + + + + + &OK + + LicensePage @@ -1124,41 +1244,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. + + The system language will be set to %1. - + + The numbers and dates locale will be set to %1. + + + + Region: - + Zone: - + + &Change... - + Set timezone to %1/%2.<br/> + + + %1 (%2) + Language (Country) + + LocaleViewStep - + Loading location data... - + Location @@ -1212,6 +1343,32 @@ The installer will quit and all changes will be lost. + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + Page_Keyboard @@ -1248,7 +1405,6 @@ The installer will quit and all changes will be lost. - @@ -1334,7 +1490,12 @@ The installer will quit and all changes will be lost. - + + New partition + + + + %1 %2 @@ -1354,22 +1515,22 @@ The installer will quit and all changes will be lost. - + Name - + File System - + Mount Point - + Size @@ -1392,32 +1553,32 @@ The installer will quit and all changes will be lost. - + New Partition &Table - + &Create - + &Edit - + &Delete - + Install boot &loader on: - + Are you sure you want to create a new partition table on %1? @@ -1425,90 +1586,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... - + Partitions - + Install %1 <strong>alongside</strong> another operating system. - + <strong>Erase</strong> disk and install %1. - + <strong>Replace</strong> a partition with %1. - + <strong>Manual</strong> partitioning. - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - + Disk <strong>%1</strong> (%2) - + Current: - + After: - + No EFI system partition configured - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + EFI system partition flag not set - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + QObject @@ -1524,20 +1695,25 @@ The installer will quit and all changes will be lost. - + unknown - + extended - + unformatted + + + swap + + Unpartitioned space or unknown partition table @@ -1557,64 +1733,64 @@ The installer will quit and all changes will be lost. - + 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: @@ -1622,55 +1798,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... - + has at least %1 GB available drive space - + There is not enough drive space. At least %1 GB is required. - + has at least %1 GB working memory - + The system does not have enough working memory. At least %1 GB is required. - + is plugged in to a power source - + The system is not plugged in to a power source. - + is connected to the Internet - + The system is not connected to the Internet. - + The installer is not running with administrator rights. + + + The screen is too small to display the installer. + + ResizeFileSystemJob @@ -1765,71 +1946,127 @@ The installer will quit and all changes will be lost. 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + Clear flags on partition <strong>%1</strong>. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. + + Clear flags on %1MB <strong>%2</strong> partition. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + The installer failed to set flags on partition %1. - + Could not open device '%1'. - + Could not open partition table on device '%1'. - + Could not find partition '%1'. @@ -1850,32 +2087,42 @@ The installer will quit and all changes will be lost. 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. @@ -1908,12 +2155,12 @@ The installer will quit and all changes will be lost. - + Cannot set timezone, - + Cannot open /etc/timezone for writing @@ -1937,33 +2184,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. - + Your hostname is too short. - + Your hostname is too long. - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. - - + + Your passwords do not match! @@ -2009,22 +2256,27 @@ The installer will quit and all changes will be lost. - + <h1>Welcome to the %1 installer.</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + About %1 installer - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support @@ -2032,7 +2284,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome diff --git a/lang/calamares_uz.ts b/lang/calamares_uz.ts new file mode 100644 index 000000000..aa9eb1029 --- /dev/null +++ b/lang/calamares_uz.ts @@ -0,0 +1,2292 @@ + + + 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::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Install + + + + + Calamares::JobThread + + + Done + + + + + Calamares::ProcessJob + + + Run command %1 %2 + + + + + Running command %1 %2 + + + + + External command crashed + + + + + Command %1 crashed. +Output: +%2 + + + + + External command failed to start + + + + + Command %1 failed to start. + + + + + Internal error when starting command + + + + + Bad parameters for process job call. + + + + + External command failed to finish + + + + + Command %1 failed to finish in %2s. +Output: +%3 + + + + + External command finished with errors + + + + + Command %1 finished with exit code %2. +Output: +%3 + + + + + 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::ViewManager + + + &Back + + + + + &Next + + + + + + &Cancel + + + + + + Cancel installation without changing the system. + + + + + Cancel installation? + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + &Yes + + + + + &No + + + + + &Close + + + + + Continue with setup? + + + + + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> + + + + + &Install now + + + + + Go &back + + + + + &Done + + + + + The installation is complete. Close the installer. + + + + + Error + + + + + Installation Failed + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresWindow + + + %1 Installer + + + + + Show debug information + + + + + CheckFileSystemJob + + + Checking file system on partition %1. + + + + + The file system check on partition %1 failed. + + + + + CheckerWidget + + + 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 installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ChoicePage + + + Form + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Boot loader location: + + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. + + + + + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. + + + + + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. + + + + + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. + + + + + 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. + + + + + CreatePartitionDialog + + + Create a Partition + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + Flags: + + + + + &Mount Point: + + + + + Si&ze: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MB</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'. + + + + + Could not open device '%1'. + + + + + Could not open partition table. + + + + + The installer failed to create file system on partition %1. + + + + + The installer failed to update partition table 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. + + + + + Could not open device %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. + + + + + Cannot create user %1. + + + + + useradd terminated with error code %1. + + + + + Cannot add user %1 to groups: %2. + + + + + usermod terminated with error code %1. + + + + + Cannot set home directory ownership for user %1. + + + + + chown terminated with error code %1. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + Partition (%1) and device (%2) do not match. + + + + + Could not open device %1. + + + + + Could not open partition table. + + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + 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. + + + + + DeviceModel + + + %1 - %2 (%3) + + + + + 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 installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Installation Complete + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + + + + + Format <strong>%3MB</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'. + + + + + Could not open device '%1'. + + + + + Could not open partition table. + + + + + The installer failed to create file system on partition %1. + + + + + The installer failed to update partition table on disk '%1'. + + + + + InteractiveTerminalPage + + + + + Konsole not installed + + + + + + + Please install the 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. + + + + + 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 + + + + + I accept the terms and conditions above. + + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + <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> + + + + + <a href="%1">view license agreement</a> + + + + + LicenseViewStep + + + License + + + + + LocalePage + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + Set timezone to %1/%2.<br/> + + + + + %1 (%2) + Language (Country) + + + + + LocaleViewStep + + + Loading location data... + + + + + Location + + + + + MoveFileSystemJob + + + Move file system of partition %1. + + + + + Could not open file system on partition %1 for moving. + + + + + Could not create target for moving file system on partition %1. + + + + + Moving of partition %1 failed, changes have been rolled back. + + + + + Moving of partition %1 failed. Roll back of the changes have failed. + + + + + Updating boot sector after the moving of partition %1 failed. + + + + + The logical sector sizes in the source and target for copying are not the same. This is currently unsupported. + + + + + Source and target for copying do not overlap: Rollback is not required. + + + + + + Could not open device %1 to rollback copying. + + + + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + NetInstallViewStep + + + Package selection + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + What name do you want to use to log in? + + + + + + + font-weight: normal + + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + + + Choose a password to keep your account safe. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small> + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + 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 + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + &Create + + + + + &Edit + + + + + &Delete + + + + + Install boot &loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + EFI system partition flag not set + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + Boot partition not encrypted + + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + + + + + QObject + + + Default Keyboard Model + + + + + + Default + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Unpartitioned space or unknown partition table + + + + + 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: + + + + + RequirementsChecker + + + Gathering system information... + + + + + has at least %1 GB available drive space + + + + + There is not enough drive space. At least %1 GB is required. + + + + + has at least %1 GB working memory + + + + + The system does not have enough working memory. At least %1 GB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + The installer is not running with administrator rights. + + + + + The screen is too small to display the installer. + + + + + ResizeFileSystemJob + + + Resize file system on partition %1. + + + + + Parted failed to resize filesystem. + + + + + Failed to resize filesystem. + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + + + + + Resizing %2MB partition %1 to %3MB. + + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + Could not open device '%1'. + + + + + 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 %1MB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <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 %1MB <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 %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + Could not open device '%1'. + + + + + Could not open partition table on device '%1'. + + + + + Could not find partition '%1'. + + + + + SetPartGeometryJob + + + Update geometry of partition %1. + + + + + Failed to change the geometry of the partition. + + + + + 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 + + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + UsersPage + + + Your username is too long. + + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + WelcomePage + + + Form + + + + + &Language: + + + + + &Release notes + + + + + &Known issues + + + + + &Support + + + + + &About + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + 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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + + + + %1 support + + + + + WelcomeViewStep + + + Welcome + + + + \ No newline at end of file diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index c9757aee3..f2894938e 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - 选择要缩小的分区: - - - - Allocate drive space by dragging the divider below: - 拖动下方的分隔来调整分区空间: - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - 在此操作后,带有 %4 的分区 <strong>%1</strong> 将缩小到 %2MB,而后将为 %5 创建一个 %3MB 大小的分区。 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - 在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 - - - - The EFI system partition at %1 will be used for starting %2. - 将使用 %1 处的 EFI 系统分区启动 %2。 - - - - EFI system partition: - EFI 系统分区: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. 这个系统的<strong>引导环境</strong>。<br><br>较旧的 x86 系统只支持 <strong>BIOS</strong>。<br>现代的系统则通常使用 <strong>EFI</strong>,但若引导时使用了兼容模式,也可以显示为 BIOS。 - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. 这个系统从 <strong>EFI</strong> 引导环境启动。<br><br>目前市面上大多数的民用设备都使用 EFI,并同时与之使用 GPT 分区表。<br>要从 EFI 环境引导的话,本安装程序必须部署一个引导器(如 <strong>GRUB</strong> 或 <strong>systemd-boot</strong>)到 <strong>EFI 系统分区</strong>。这个步骤是自动的,除非您选择手动分区——此时您必须自行选择或创建。 - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. 这个系统从 <strong>BIOS</strong> 引导环境启动。<br><br> 要从 BIOS 环境引导,本安装程序必须安装引导器(如 <strong>GRUB</strong>),一般而言要么安装在分区的开头,要么就是在靠进分区表开头的 <strong>主引导记录</strong>(推荐)中。这个步骤是自动的,除非您选择手动分区——此时您必须自行配置。 @@ -102,7 +69,28 @@ 模块 - + + Type: + 类型: + + + + + none + + + + + Interface: + 接口: + + + + Tools + 工具 + + + Debug information 调试信息 @@ -201,32 +189,32 @@ Output: Calamares::PythonJob - + Running %1 operation. 正在运行 %1 个操作。 - + Bad working directory path 错误的工作目录路径 - + Working directory %1 for python job %2 is not readable. 用于 python 任务 %2 的工作目录 %1 不可读。 - + Bad main script file 错误的主脚本文件 - + Main script file %1 for python job %2 is not readable. 用于 python 任务 %2 的主脚本文件 %1 不可读。 - + Boost.Python error in job "%1". 任务“%1”出现 Boost.Python 错误。 @@ -234,65 +222,91 @@ Output: Calamares::ViewManager - + &Back 后退(&B) - + &Next 下一步(&N) - - + + &Cancel 取消(&C) - + + + Cancel installation without changing the system. + 取消安装,并不做任何更改。 + + + Cancel installation? 取消安装? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 确定要取消当前的安装吗? 安装程序将退出,所有修改都会丢失。 - + + &Yes + &是 + + + + &No + &否 + + + + &Close + &关闭 + + + Continue with setup? 要继续安装吗? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安装程序将在您的磁盘上做出变更以安装 %2。<br/><strong>您将无法复原这些变更。</strong> - + &Install now 现在安装 (&I) - + Go &back 返回 (&B) - - &Quit - 退出(&Q) + + &Done + &完成 - + + The installation is complete. Close the installer. + 安装过程已完毕。请关闭安装器。 + + + Error 错误 - + Installation Failed 安装失败 @@ -300,22 +314,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type 未知异常类型 - + unparseable Python error 无法解析的 Python 错误 - + unparseable Python traceback 无法解析的 Python 回溯 - + Unfetchable Python error. 无法获取的 Python 错误。 @@ -323,12 +337,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 安装程序 - + Show debug information 显示调试信息 @@ -336,12 +350,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. 正在检查分区 %1 的文件系统。 - + The file system check on partition %1 failed. 检查分区 %1 上的文件系统失败。 @@ -349,7 +363,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> 此电脑未满足安装 %1 的最低需求。<br/>安装无法继续。<a href="#details">详细信息...</a> @@ -359,17 +373,17 @@ The installer will quit and all changes will be lost. 此电脑未满足一些安装 %1 的推荐需求。<br/>可以继续安装,但一些功能可能会被停用。 - + This program will ask you some questions and set up %2 on your computer. 本程序将会问您一些问题并在您的电脑上安装及设置 %2 。 - + For best results, please ensure that this computer: 为了更好的体验,请确定这台电脑: - + System requirements 系统需求 @@ -382,102 +396,109 @@ The installer will quit and all changes will be lost. 表单 - + After: 之后: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>手动分区</strong><br/>您可以自行创建或重新调整分区大小。 - + Boot loader location: 引导程序位置: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 将会被缩减到 %2 MB,同时将为 %4 创建空间为 %3MB 的新分区。 - + Select storage de&vice: 选择存储器(&V): - - - - + + + + Current: 当前: - + + Reuse %1 as home partition for %2. + 将 %1 重用为 %2 的家分区。 + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>选择要缩小的分区,然后拖动底栏改变大小</strong> - + <strong>Select a partition to install on</strong> <strong>选择要安装到的分区</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. 在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 - + The EFI system partition at %1 will be used for starting %2. %1 处的 EFI 系统分区将被用来启动 %2。 - + EFI system partition: EFI 系统分区: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上似乎还没有操作系统。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>抹除磁盘</strong><br/>这将会<font color="red">删除</font>目前选定的存储器上所有的数据。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有 %1 了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>并存安装</strong><br/>安装程序将会缩小一个分区,为 %1 腾出空间。 - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>取代一个分区</strong><br/>以 %1 <strong>替代</strong>一个分区。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有一个操作系统了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 这个存储器上已经有多个操作系统了。您想要怎么做?<br/>在任何变更应用到存储器上前,您都可以重新查看并确认您的选择。 @@ -485,17 +506,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 清理挂载了的分区以在 %1 进行分区操作 - + Clearing mounts for partitioning operations on %1. 正在清理挂载了的分区以在 %1 进行分区操作。 - + Cleared all mounts for %1 已清除 %1 的所有挂载点 @@ -503,22 +524,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. 清除所有临时挂载点。 - + Clearing all temporary mounts. 正在清除所有临时挂载点。 - + Cannot get list of temporary mounts. 无法获取临时挂载点列表。 - + Cleared all temporary mounts. 所有临时挂载点都已经清除。 @@ -531,60 +552,70 @@ The installer will quit and all changes will be lost. 创建分区 - + + MiB + MiB + + + Partition &Type: 分区类型(&T): - + &Primary 主分区(&P) - + E&xtended 扩展分区(&E) - + Fi&le System: 文件系统 (&L): - + Flags: 标记: - + &Mount Point: 挂载点(&M): - + Si&ze: 大小(&Z): - - MB - MB + + En&crypt + 加密(&C) - + Logical 逻辑分区 - + Primary 主分区 - + GPT GPT + + + Mountpoint already in use. Please select another one. + 挂载点已被占用。请选择另一个。 + CreatePartitionJob @@ -688,67 +719,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 创建用户 %1 - + Create user <strong>%1</strong>. 创建用户 <strong>%1</strong>。 - + Creating user %1. 正在创建用户 %1。 - + Sudoers dir is not writable. Sudoers 目录不可写。 - + Cannot create sudoers file for writing. 无法创建要写入的 sudoers 文件。 - + Cannot chmod sudoers file. 无法修改 sudoers 文件权限。 - + Cannot open groups file for reading. 无法打开要读取的 groups 文件。 - + Cannot create user %1. 无法创建用户 %1。 - + useradd terminated with error code %1. useradd 以错误代码 %1 中止。 - - Cannot set full name for user %1. - 无法设置用户 %1 的全名。 + + Cannot add user %1 to groups: %2. + 无法将用户 %1 加入到群组:%2. - - chfn terminated with error code %1. - chfn 以错误代码 %1 中止。 + + usermod terminated with error code %1. + usermod 终止,错误代码 %1. - + Cannot set home directory ownership for user %1. 无法设置用户 %1 的主文件夹所有者。 - + chown terminated with error code %1. chown 以错误代码 %1 中止。 @@ -794,7 +825,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. 目前选定存储器的<strong>分区表</strong>类型。<br><br>变更分区表类型的唯一方法就是抹除再重新从头建立分区表,这会破坏在该存储器上所有的数据。<br>除非您特别选择,否则本安装程序将会保留目前的分区表。<br>若不确定,在现代的系统上,建议使用 GPT。 @@ -833,6 +864,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + 将 Dracut 的 LUKS 配置写入到 %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + Dracut 的“/”分区未加密,因而跳过写入 LUKS 配置 + + + + Failed to open %1 + 无法打开 %1 + + + + DummyCppJob + + + Dummy C++ Job + 虚设 C++ 任务 + + EditExistingPartitionDialog @@ -871,50 +928,88 @@ The installer will quit and all changes will be lost. 尺寸 (&Z): - + + MiB + MiB + + + Fi&le System: 文件系统 (&L): - + 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. 在 <strong>新的</strong>系统分区 %2 上安装 %1。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. 设置 <strong>新的</strong> 含挂载点 <strong>%1</strong> 的 %2 分区。 - + Install %2 on %3 system partition <strong>%1</strong>. 在 %3 系统割区 <strong>%1</strong> 上安装 %2。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. 为分区 %3 <strong>%1</strong> 设置挂载点 <strong>%2</strong>。 - + Install boot loader on <strong>%1</strong>. 在 <strong>%1</strong>上安装引导程序。 - + Setting up mount points. 正在设置挂载点。 @@ -932,58 +1027,73 @@ The installer will quit and all changes will be lost. 现在重启(&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>一切都结束了。</h1><br/>%1 已安装在您的电脑上了。<br/>您现在可能会想要重新启动到您的新系统中,或是继续使用 %2 Live 环境。 + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>安装失败</h1><br/>%1 未在你的电脑上安装。<br/>错误信息:%2。 + FinishedViewStep - + Finish 结束 + + + Installation Complete + + + + + The installation of %1 is complete. + + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. 格式化在 %4 的分区 %1 (文件系统:%2,大小:%3 MB)。 - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. 以文件系统 <strong>%2</strong> 格式化 <strong>%3MB</strong> 的分区 <strong>%1</strong>。 - + Formatting partition %1 with file system %2. 正在使用 %2 文件系统格式化分区 %1。 - + The installer failed to format partition %1 on disk '%2'. 安装程序格式化磁盘“%2”上的分区 %1 失败。 - + Could not open device '%1'. 无法打开设备“%1”。 - + Could not open partition table. 无法打开分区表。 - + The installer failed to create file system on partition %1. 安装程序于分区 %1 创建文件系统失败。 - + The installer failed to update partition table on disk '%1'. 安装程序于磁盘“%1”更新分区表失败。 @@ -1021,12 +1131,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 设置键盘型号为 %1。<br/> - + Set keyboard layout to %1/%2. 设置键盘布局为 %1/%2。 @@ -1034,7 +1144,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard 键盘 @@ -1042,15 +1152,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting 系统语区设置 - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. 系统语言区域设置会影响部份命令行用户界面的语言及字符集。<br/>目前的设置为 <strong>%1</strong>。 + + + &Cancel + + + + + &OK + + LicensePage @@ -1133,41 +1253,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - 系统地域已设定为 %1。 + + The system language will be set to %1. + 系统语言将设置为 %1。 - + + The numbers and dates locale will be set to %1. + 数字和日期地域将设置为 %1。 + + + Region: 地区: - + Zone: 区域: - + + &Change... 更改 (&C) ... - + Set timezone to %1/%2.<br/> 设置时区为 %1/%2。<br/> + + + %1 (%2) + Language (Country) + %1(%2) + LocaleViewStep - + Loading location data... 加载位置数据... - + Location 位置 @@ -1221,6 +1352,32 @@ The installer will quit and all changes will be lost. 无法打开设备 %1 来回滚复制。 + + NetInstallPage + + + Name + 名称 + + + + Description + 描述 + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + 网络安装。(已禁用:无法获取软件包列表,请检查网络连接) + + + + NetInstallViewStep + + + Package selection + 软件包选择 + + Page_Keyboard @@ -1257,7 +1414,6 @@ The installer will quit and all changes will be lost. 您想要使用的登录用户名是? - @@ -1343,7 +1499,12 @@ The installer will quit and all changes will be lost. %1 的新分区 - + + New partition + 新建分区 + + + %1 %2 %1 %2 @@ -1363,22 +1524,22 @@ The installer will quit and all changes will be lost. 新建分区 - + Name 名称 - + File System 文件系统 - + Mount Point 挂载点 - + Size 大小 @@ -1401,32 +1562,32 @@ The installer will quit and all changes will be lost. 撤销所有修改(&R) - + New Partition &Table 新建分区表(&T) - + &Create 创建(&C) - + &Edit 编辑(&E) - + &Delete 删除(&D) - + Install boot &loader on: 安装引导程序于(&L): - + Are you sure you want to create a new partition table on %1? 您是否确定要在 %1 上创建新分区表? @@ -1434,89 +1595,99 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 正在收集系统信息... - + Partitions 分区 - + Install %1 <strong>alongside</strong> another operating system. 将 %1 安装在其他操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁盘并安装 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>替代</strong>一个分区。 - + <strong>Manual</strong> partitioning. <strong>手动</strong>分区 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 将 %1 安装在磁盘 <strong>%2</strong> (%3) 上的另一个操作系统<strong>旁边</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁盘 <strong>%2</strong> (%3) 并且安装 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>替代</strong> 一个在磁盘 <strong>%2</strong> (%3) 上的分区。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁盘 <strong>%1</strong> (%2) 上<strong>手动</strong>分区。 - + Disk <strong>%1</strong> (%2) 磁盘 <strong>%1</strong> (%2) - + Current: 当前: - + After: 之后: - + No EFI system partition configured 未配置 EFI 系统分区 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + 必须有 EFI 系统分区才能启动 %1 。<br/><br/>要配置 EFI 系统分区,后退一步,然后创建或选中一个 FAT32 分区并为之设置 <strong>esp</strong> 标记及挂载点 <strong>%2</strong>。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 - + EFI system partition flag not set 未设置 EFI 系统分区标记 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + 必须有 EFI 系统分区才能启动 %1 。<br/><br/>已有挂载点为 <strong>%2</strong> 的分区,但是未设置 <strong>esp</strong> 标记。<br/>要设置此标记,后退并编辑分区。<br/><br/>你可以不创建 EFI 系统分区并继续安装,但是你的系统可能无法启动。 + + + + Boot partition not encrypted + 引导分区未加密 + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + 您尝试用单独的引导分区配合已加密的根分区使用,但引导分区未加密。<br/><br/>这种配置方式可能存在安全隐患,因为重要的系统文件存储在了未加密的分区上。<br/>您可以继续保持此配置,但是系统解密将在系统启动时而不是引导时进行。<br/>要加密引导分区,请返回上一步并重新创建此分区,并在分区创建窗口选中 <strong>加密</strong> 选项。 @@ -1533,20 +1704,25 @@ The installer will quit and all changes will be lost. 默认 - + unknown 未知 - + extended 扩展分区 - + unformatted 未格式化 + + + swap + 临时存储空间 + Unpartitioned space or unknown partition table @@ -1566,64 +1742,64 @@ The installer will quit and all changes will be lost. <b>选择要安装 %1 的地方。</b><br/><font color="red">警告:</font>这将会删除所有已选取的分区上的文件。 - + The selected item does not appear to be a valid partition. 选中项似乎不是有效分区。 - + %1 cannot be installed on empty space. Please select an existing partition. 无法在空白空间中安装 %1。请选取一个存在的分区。 - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. 无法在拓展分区上安装 %1。请选取一个存在的主要或逻辑分区。 - + %1 cannot be installed on this partition. 无法安装 %1 到此分区。 - + Data partition (%1) 数据分区 (%1) - + Unknown system partition (%1) 未知系统分区 (%1) - + %1 system partition (%2) %1 系统分区 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>分区 %1 对 %2 来说太小了。请选取一个容量至少有 %3 GiB 的分区。 - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>在此系统上找不到任何 EFI 系统分区。请后退到上一步并使用手动分区配置 %1。 - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>即将安装 %1 到 %2 上。<br/><font color="red">警告: </font>分区 %2 上的所有数据都将丢失。 - + The EFI system partition at %1 will be used for starting %2. 将使用 %1 处的 EFI 系统分区启动 %2。 - + EFI system partition: EFI 系统分区: @@ -1631,55 +1807,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... 正在收集系统信息 ... - + has at least %1 GB available drive space 至少 %1 GB 可用磁盘空间 - + There is not enough drive space. At least %1 GB is required. 没有足够的磁盘空间。至少需要 %1 GB。 - + has at least %1 GB working memory 至少 %1 GB 可用内存 - + The system does not have enough working memory. At least %1 GB is required. 系统没有足够的内存。至少需要 %1 GB。 - + is plugged in to a power source 已连接到电源 - + The system is not plugged in to a power source. 系统未连接到电源。 - + is connected to the Internet 已连接到互联网 - + The system is not connected to the Internet. 系统未连接到互联网。 - + The installer is not running with administrator rights. 安装器未以管理员权限运行 + + + The screen is too small to display the installer. + 屏幕不能完整显示安装器。 + ResizeFileSystemJob @@ -1774,71 +1955,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 将键盘型号设置为 %1,布局设置为 %2-%3 - + Failed to write keyboard configuration for the virtual console. 无法将键盘配置写入到虚拟控制台。 - - + + + Failed to write to %1 写入到 %1 失败 - + Failed to write keyboard configuration for X11. 无法为 X11 写入键盘配置。 + + + Failed to write keyboard configuration to existing /etc/default directory. + 无法将键盘配置写入到现有的 /etc/default 目录。 + SetPartFlagsJob - + Set flags on partition %1. 设置分区 %1 的标记. - + + Set flags on %1MB %2 partition. + 设置 %1MB %2 分区的标记. + + + + Set flags on new partition. + 设置新分区的标记. + + + Clear flags on partition <strong>%1</strong>. 清空分区 <strong>%1</strong> 上的标记. - - Flag partition <strong>%1</strong> as <strong>%2</strong>. - - - - - Clearing flags on partition <strong>%1</strong>. - + + Clear flags on %1MB <strong>%2</strong> partition. + 删除 %1MB <strong>%2</strong> 分区的标记. - Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Clear flags on new partition. + 删除新分区的标记. + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + 将分区 <strong>%2</strong> 标记为 <strong>%1</strong>。 + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + 将 %1MB <strong>%2</strong> 分区标记为 <strong>%3</strong>. + Flag new partition as <strong>%1</strong>. + 将新分区标记为 <strong>%1</strong>. + + + + Clearing flags on partition <strong>%1</strong>. + 正在清理分区 <strong>%1</strong> 上的标记。 + + + + Clearing flags on %1MB <strong>%2</strong> partition. + 正在删除 %1MB <strong>%2</strong> 分区的标记. + + + + Clearing flags on new partition. + 正在删除新分区的标记. + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + 正在为分区 <strong>%1</strong> 设置标记 <strong>%2</strong>。 + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + 正在将 %1MB <strong>%2</strong> 分区标记为 <strong>%3</strong>. + + + + Setting flags <strong>%1</strong> on new partition. + 正在将新分区标记为 <strong>%1</strong>. + + + The installer failed to set flags on partition %1. 安装程序没有成功设置分区 %1 的标记. - + Could not open device '%1'. 无法打开设备 '%1'. - + Could not open partition table on device '%1'. 无法打开设备 '%1' 的分区表。 - + Could not find partition '%1'. 无法找到分区 '%1'。 @@ -1859,32 +2096,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 设置用户 %1 的密码 - + Setting password for user %1. 正在为用户 %1 设置密码。 - + Bad destination system path. 非法的目标系统路径。 - + rootMountPoint is %1 根挂载点为 %1 - + + Cannot disable root account. + 无法禁用 root 帐号。 + + + + passwd terminated with error code %1. + passwd 以错误代码 %1 终止。 + + + Cannot set password for user %1. 无法设置用户 %1 的密码。 - + usermod terminated with error code %1. usermod 以错误代码 %1 中止。 @@ -1917,12 +2164,12 @@ The installer will quit and all changes will be lost. 链接创建失败,目标:%1,链接名称:%2 - + Cannot set timezone, 无法设置时区, - + Cannot open /etc/timezone for writing 无法打开要写入的 /etc/timezone @@ -1946,33 +2193,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. 用户名太长。 - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. 您的用户名含有无效的字符。只能使用小写字母和数字。 - + Your hostname is too short. 主机名太短。 - + Your hostname is too long. 主机名太长。 - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. 您的主机名称含有无效的字符。只能使用字母、数字和短横。 - - + + Your passwords do not match! 密码不匹配! @@ -2018,22 +2265,27 @@ The installer will quit and all changes will be lost. 关于(&A) - + <h1>Welcome to the %1 installer.</h1> - <h1>欢迎来到 %1 安装程序。</h1> + <h1>欢迎使用 %1 安装程序。</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>欢迎使用 Calamares 安装程序 - %1。</h1> + + + About %1 installer 关于 %1 安装程序 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>为 %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac <teo@kde.org><br/>感谢:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini 和 Rohan Garg。<br/><br/><a href="http://calamares.io/">Calamares</a> 开发由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - 解放软件 赞助。 + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>于 %3</strong><br/><br/>版权 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>版权 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>鸣谢: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 和 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻译团队</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> 开发赞助来自 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + %1 support %1 的支持信息 @@ -2041,7 +2293,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome 欢迎 diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts index 173d36fda..04de28cf1 100644 --- a/lang/calamares_zh_TW.ts +++ b/lang/calamares_zh_TW.ts @@ -1,51 +1,18 @@ - - AlongsidePage - - - Choose partition to shrink: - 請選擇要縮減的磁區: - - - - Allocate drive space by dragging the divider below: - 拖曳以下的分界線以分配裝置空間 - - - - With this operation, the partition <strong>%1</strong> which contains %4 will be shrunk to %2MB and a new %3MB partition will be created for %5. - 將會執行以下操作:縮減原容量為 %4 的分割區 <strong>%1</strong> 為 %2MB 並新建一個新的 %3MB 分割區以容納 %5 。 - - - - An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - 在這個系統上找不到任何的 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 - - - - The EFI system partition at %1 will be used for starting %2. - 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 - - - - EFI system partition: - EFI 系統分割區: - - BootInfoWidget - + The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現代的系統則通常使用 <strong>EFI</strong>,但若開機環境是以相容模式執行,其也可能顯示為 BIOS。 - + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. 這個系統以 <strong>EFI</strong> 開機環境啟動。<br><br>要設定從 EFI 環境開機,本安裝程式必須部署一個開機載入器應用程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>上。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行選取或建立它。 - + This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. 這個系統以 <strong>BIOS</strong> 開機環境開始。<br><br>要從 BIOS 環境開機開機,本安裝程式必須安裝開機載入器,像是 <strong>GRUB</strong>,且通常不是安裝在分割區的開頭就是在靠進分割表開頭的 <strong>主開機記錄</strong>(推薦)。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行設定它。 @@ -101,7 +68,28 @@ 模組 - + + Type: + 類型: + + + + + none + + + + + Interface: + 介面: + + + + Tools + 工具 + + + Debug information 除錯資訊 @@ -200,32 +188,32 @@ Output: Calamares::PythonJob - + Running %1 operation. 正在執行 %1 操作。 - + Bad working directory path 不良的工作目錄路徑 - + Working directory %1 for python job %2 is not readable. Python 行程 %2 作用中的目錄 %1 不具讀取權限。 - + Bad main script file 錯誤的主要腳本檔 - + Main script file %1 for python job %2 is not readable. Python 行程 %2 的主要腳本檔 %1 無法讀取。 - + Boost.Python error in job "%1". 行程 %1 中 Boost.Python 錯誤。 @@ -233,65 +221,91 @@ Output: Calamares::ViewManager - + &Back 返回 (&B) - + &Next 下一步 (&N) - - + + &Cancel 取消(&C) - + + + Cancel installation without changing the system. + 不變更系統並取消安裝。 + + + Cancel installation? 取消安裝? - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. 您真的想要取消目前的安裝程序嗎? 安裝程式將會退出且所有變動將會遺失。 - + + &Yes + 是(&Y) + + + + &No + 否(&N) + + + + &Close + 關閉(&C) + + + Continue with setup? 繼續安裝? - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 安裝程式將在您的磁碟上做出變更以安裝 %2。<br/><strong>您將無法復原這些變更。</strong> - + &Install now 現在安裝 (&I) - + Go &back 上一步 (&B) - - &Quit - 離開 (&Q) + + &Done + 完成(&D) - + + The installation is complete. Close the installer. + 安裝完成。關閉安裝程式。 + + + Error 錯誤 - + Installation Failed 安裝失敗 @@ -299,22 +313,22 @@ The installer will quit and all changes will be lost. CalamaresPython::Helper - + Unknown exception type 未知的例外型別 - + unparseable Python error 無法解析的 Python 錯誤 - + unparseable Python traceback 無法解析的 Python 回溯紀錄 - + Unfetchable Python error. 無法讀取的 Python 錯誤。 @@ -322,12 +336,12 @@ The installer will quit and all changes will be lost. CalamaresWindow - + %1 Installer %1 安裝程式 - + Show debug information 顯示除錯資訊 @@ -335,12 +349,12 @@ The installer will quit and all changes will be lost. CheckFileSystemJob - + Checking file system on partition %1. 正在檢查分割區 %1 上的檔案系統。 - + The file system check on partition %1 failed. 在分割區 %1 上的檔案系統檢查失敗。 @@ -348,7 +362,7 @@ The installer will quit and all changes will be lost. CheckerWidget - + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> 此電腦未滿足安裝 %1 的最低配備。<br/>安裝無法繼續。<a href="#details">詳細資訊...</a> @@ -358,17 +372,17 @@ The installer will quit and all changes will be lost. 此電腦未滿足一些安裝 %1 的推薦需求。<br/>安裝可以繼續,但部份功能可能會被停用。 - + This program will ask you some questions and set up %2 on your computer. 本程式將會問您一些問題並在您的電腦上安裝及設定 %2 。 - + For best results, please ensure that this computer: 為了得到最佳的結果,請確保此電腦: - + System requirements 系統需求 @@ -381,102 +395,109 @@ The installer will quit and all changes will be lost. 表單 - + After: 之後: - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. <strong>手動分割</strong><br/>您可以自行建立或重新調整分割區大小。 - + Boot loader location: 開機載入器位置: - + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. %1 將會被縮減容量到 %2MB 而一個新的 %3MB 分割區將會被建立為 %4。 - + Select storage de&vice: 選取儲存裝置(&V): - - - - + + + + Current: 目前: - + + Reuse %1 as home partition for %2. + 重新使用 %1 作為 %2 的家目錄分割區。 + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> <strong>選取要縮減的分割區,然後拖曳底部條狀物來調整大小</strong> - + <strong>Select a partition to install on</strong> <strong>選取分割區以安裝在其上</strong> - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. 在這個系統上找不到任何的 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 - + The EFI system partition at %1 will be used for starting %2. 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 - + EFI system partition: EFI 系統分割區: - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上似乎還沒有作業系統。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. <strong>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置上所有的資料。 - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有 %1 了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. <strong>並存安裝</strong><br/>安裝程式將會縮減一個分割區以讓出空間給 %1。 - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. <strong>取代一個分割區</strong><br/>用 %1 取代一個分割區。 - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有一個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. 這個儲存裝置上已經有多個作業系統了。您想要怎麼做?<br/>在任何變更套用到儲存裝置上前,您都可以重新檢視並確認您的選擇。 @@ -484,17 +505,17 @@ The installer will quit and all changes will be lost. ClearMountsJob - + Clear mounts for partitioning operations on %1 為了準備分割區操作而完全卸載 %1 - + Clearing mounts for partitioning operations on %1. 正在為了準備分割區操作而完全卸載 %1 - + Cleared all mounts for %1 已清除所有與 %1 相關的掛載 @@ -502,22 +523,22 @@ The installer will quit and all changes will be lost. ClearTempMountsJob - + Clear all temporary mounts. 清除所有暫時掛載。 - + Clearing all temporary mounts. 正在清除所有暫時掛載。 - + Cannot get list of temporary mounts. 無法取得暫時掛載的列表。 - + Cleared all temporary mounts. 已清除所有暫時掛載。 @@ -530,60 +551,70 @@ The installer will quit and all changes will be lost. 建立一個分割區 - + + MiB + MiB + + + Partition &Type: 分割區與類型 (&T): - + &Primary 主要分割區 (&P) - + E&xtended 延伸分割區 (&x) - + Fi&le System: 檔案系統 (&I): - + Flags: 旗標: - + &Mount Point: 掛載點 (&M): - + Si&ze: 容量大小 (&z) : - - MB - MB + + En&crypt + 加密(&C) - + Logical 邏輯磁區 - + Primary 主要磁區 - + GPT GPT + + + Mountpoint already in use. Please select another one. + 掛載點使用中。請選擇其他的。 + CreatePartitionJob @@ -687,67 +718,67 @@ The installer will quit and all changes will be lost. CreateUserJob - + Create user %1 建立使用者 %1 - + Create user <strong>%1</strong>. 建立使用者 <strong>%1</strong>。 - + Creating user %1. 正在建立使用者 %1。 - + Sudoers dir is not writable. Sudoers 目錄不可寫入。 - + Cannot create sudoers file for writing. 無法建立要寫入的 sudoers 檔案。 - + Cannot chmod sudoers file. 無法修改 sudoers 檔案權限。 - + Cannot open groups file for reading. 無法開啟要讀取的 groups 檔案。 - + Cannot create user %1. 無法建立使用者 %1 。 - + useradd terminated with error code %1. useradd 以錯誤代碼 %1 終止。 - - Cannot set full name for user %1. - 無法設定使用者 %1 的全名。 + + Cannot add user %1 to groups: %2. + 無法將使用者 %1 加入至群組:%2。 - - chfn terminated with error code %1. - chfn 以錯誤代碼 %1 終止。 + + usermod terminated with error code %1. + usermod 以錯誤代碼 %1 終止。 - + Cannot set home directory ownership for user %1. 無法將使用者 %1 設定為家目錄的擁有者。 - + chown terminated with error code %1. chown 以錯誤代碼 %1 終止。 @@ -793,7 +824,7 @@ The installer will quit and all changes will be lost. DeviceInfoWidget - + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. 選定的儲存裝置上的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置上所有的資料。<br>除非您特別選擇,否則本安裝程式將會保留目前的分割表。<br>若不確定,在現代的系統上,建議使用 GPT。 @@ -831,6 +862,32 @@ The installer will quit and all changes will be lost. %1 - %2 (%3) + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + 為 Dracut 寫入 LUKS 設定到 %1 + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + 跳過為 Dracut 寫入 LUKS 設定:"/" 分割區未加密 + + + + Failed to open %1 + 開啟 %1 失敗 + + + + DummyCppJob + + + Dummy C++ Job + 虛設 C++ 排程 + + EditExistingPartitionDialog @@ -869,50 +926,88 @@ The installer will quit and all changes will be lost. 容量大小 (&Z) : - + + MiB + MiB + + + Fi&le System: 檔案系統 (&I): - + Flags: 旗標: + + + Mountpoint already in use. Please select another one. + 掛載點使用中。請選擇其他的。 + + + + EncryptWidget + + + Form + 形式 + + + + En&crypt system + 加密系統(&C) + + + + Passphrase + 通關密語 + + + + Confirm passphrase + 確認通關密語 + + + + Please enter the same passphrase in both boxes. + 請在兩個框框中輸入相同的通關密語。 + FillGlobalStorageJob - + Set partition information 設定分割區資訊 - + Install %1 on <strong>new</strong> %2 system partition. 在 <strong>新的</strong>系統分割區 %2 上安裝 %1。 - + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. 設定 <strong>新的</strong> 不含掛載點 <strong>%1</strong> 的 %2 分割區。 - + Install %2 on %3 system partition <strong>%1</strong>. 在 %3 系統分割區 <strong>%1</strong> 上安裝 %2。 - + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. 為分割區 %3 <strong>%1</strong> 設定掛載點 <strong>%2</strong>。 - + Install boot loader on <strong>%1</strong>. 安裝開機載入器於 <strong>%1</strong>。 - + Setting up mount points. 正在設定掛載點。 @@ -930,58 +1025,73 @@ The installer will quit and all changes will be lost. 現在重新啟動 (&R) - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. <h1>都完成了。</h1><br/>%1 已經安裝在您的電腦上了。<br/>您現在可能會想要重新啟動到您的新系統中,或是繼續使用 %2 Live 環境。 + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + <h1>安裝失敗</h1><br/>%1 並未安裝到您的電腦上。<br/>錯誤訊息為:%2。 + FinishedViewStep - + Finish 完成 + + + Installation Complete + 安裝完成 + + + + The installation of %1 is complete. + %1 的安裝已完成。 + FormatPartitionJob - + Format partition %1 (file system: %2, size: %3 MB) on %4. 格式化在 %4 的分割區 %1 (檔案系統: %2 ,大小: %3 MB)。 - + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. 以檔案系統 <strong>%2</strong> 格式化 <strong>%3MB</strong> 的分割區 <strong>%1</strong>。 - + Formatting partition %1 with file system %2. 正在以 %2 檔案系統格式化分割區 %1。 - + The installer failed to format partition %1 on disk '%2'. 安裝程式格式化在磁碟 '%2' 上的分割區 %1 失敗。 - + Could not open device '%1'. 無法開啟裝置 '%1'。 - + Could not open partition table. 無法開啟分割區表格。 - + The installer failed to create file system on partition %1. 安裝程式在分割區 %1 上建立檔案系統失敗。 - + The installer failed to update partition table on disk '%1'. 安裝程式在磁碟 '%1' 上更新分割區表格失敗。 @@ -1019,12 +1129,12 @@ The installer will quit and all changes will be lost. KeyboardPage - + Set keyboard model to %1.<br/> 設定鍵盤型號為 %1 。<br/> - + Set keyboard layout to %1/%2. 設定鍵盤佈局為 %1/%2 。 @@ -1032,7 +1142,7 @@ The installer will quit and all changes will be lost. KeyboardViewStep - + Keyboard 鍵盤 @@ -1040,15 +1150,25 @@ The installer will quit and all changes will be lost. LCLocaleDialog - + System locale setting 系統語系設定 - + The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. 系統語系設定會影響部份命令列使用者介面的語言及字元集。<br/>目前的設定為 <strong>%1</strong>。 + + + &Cancel + 取消(&C) + + + + &OK + 確定(&O) + LicensePage @@ -1131,41 +1251,52 @@ The installer will quit and all changes will be lost. LocalePage - - - The system locale is set to %1. - 系統語系設定為 %1。 + + The system language will be set to %1. + 系統語言將會設定為 %1。 - + + The numbers and dates locale will be set to %1. + 數字與日期語系將會被設定為 %1。 + + + Region: 地區 - + Zone: 時區 - + + &Change... 變更...(&C) - + Set timezone to %1/%2.<br/> 設定時區為 %1/%2 。<br/> + + + %1 (%2) + Language (Country) + %1 (%2) + LocaleViewStep - + Loading location data... 讀取位置資料 ... - + Location 位置 @@ -1219,6 +1350,32 @@ The installer will quit and all changes will be lost. 無法開啟裝置 %1 以恢復所作的複製。 + + NetInstallPage + + + Name + 名稱 + + + + Description + 描述 + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + 網路安裝。(已停用:無法擷取軟體包清單,請檢查您的網路連線) + + + + NetInstallViewStep + + + Package selection + 軟體包選擇 + + Page_Keyboard @@ -1247,7 +1404,7 @@ The installer will quit and all changes will be lost. What is your name? - 尊姓大名? + 該如何稱呼您? @@ -1255,7 +1412,6 @@ The installer will quit and all changes will be lost. 您想使用何種登入名稱? - @@ -1341,7 +1497,12 @@ The installer will quit and all changes will be lost. %1 的新分割區 - + + New partition + 新分割區 + + + %1 %2 %1 %2 @@ -1361,22 +1522,22 @@ The installer will quit and all changes will be lost. 新分割區 - + Name 名稱 - + File System 檔案系統 - + Mount Point 掛載點 - + Size 大小 @@ -1399,32 +1560,32 @@ The installer will quit and all changes will be lost. 將所有變更恢復原狀 (&R) - + New Partition &Table 新的分割表格 (&T) - + &Create 新增 (&C) - + &Edit 編輯 (&E) - + &Delete 刪除 (&D) - + Install boot &loader on: 安裝開機載入器在(&L): - + Are you sure you want to create a new partition table on %1? 您是否確定要在 %1 上建立一個新的分割區表格? @@ -1432,90 +1593,100 @@ The installer will quit and all changes will be lost. PartitionViewStep - + Gathering system information... 蒐集系統資訊中... - + Partitions 分割區 - + Install %1 <strong>alongside</strong> another operating system. 將 %1 安裝在其他作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk and install %1. <strong>抹除</strong>磁碟並安裝 %1。 - + <strong>Replace</strong> a partition with %1. 以 %1 <strong>取代</strong>一個分割區。 - + <strong>Manual</strong> partitioning. <strong>手動</strong>分割 - + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). 將 %1 安裝在磁碟 <strong>%2</strong> (%3) 上的另一個作業系統<strong>旁邊</strong>。 - + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. <strong>抹除</strong> 磁碟 <strong>%2</strong> (%3) 並且安裝 %1。 - + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. 以 %1 <strong>取代</strong> 一個在磁碟 <strong>%2</strong> (%3) 上的分割區。 - + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). 在磁碟 <strong>%1</strong> (%2) 上<strong>手動</strong>分割。 - + Disk <strong>%1</strong> (%2) 磁碟 <strong>%1</strong> (%2) - + Current: 目前: - + After: 之後: - + No EFI system partition configured 未設定 EFI 系統分割區 - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. 需要一個 EFI 系統分割區以啟動 %1。<br/><br/>要設定 EFI 系統分割區,回到上一步並選取或建立一個包含啟用的 <strong>esp</strong> 旗標以及掛載點 <strong>%2</strong> 的 FAT32 檔案系統。<br/><br/>您也可以不設定 EFI 系統分割區並繼續,但是您的系統可能會啟動失敗。 - + EFI system partition flag not set EFI 系統分割區旗標未設定 - + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. 需要一個 EFI 系統分割區以啟動 %1。<br/><br/>有一個掛載點設定為 <strong>%2</strong> 但未設定 <strong>esp</strong> 旗標的分割區。<br/>要設定此旗標,回到上一步並編輯分割區。<br/><br/>您也可以不設定旗標而繼續,但您的系統可能會啟動失敗。 + + + Boot partition not encrypted + 開機分割區未加密 + + + + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. + 單獨的開機分割區會與加密的根分割區一起設定,但是開機分割區並不會被加密。<br/><br/>這種設定可能會造成安全性問題,因為系統檔案放在未加密的分割區中。<br/>若您想要,您可以繼續,但是檔案系統的解鎖會在系統啟動後才發生。<br/>要加密開機分割區,回到上一頁並重新建立它,在分割區建立視窗中選取<strong>加密</strong>。 + QObject @@ -1531,20 +1702,25 @@ The installer will quit and all changes will be lost. 預設值 - + unknown 未知 - + extended 延伸分割區 - + unformatted 未格式化 + + + swap + swap + Unpartitioned space or unknown partition table @@ -1564,64 +1740,64 @@ The installer will quit and all changes will be lost. 選取要在哪裡安裝 %1。<br/><font color="red">警告:</font>這將會刪除所有在選定分割區中的檔案。 - + The selected item does not appear to be a valid partition. 選定的項目似乎不是一個有效的分割區。 - + %1 cannot be installed on empty space. Please select an existing partition. %1 無法在空白的空間中安裝。請選取一個存在的分割區。 - + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. %1 無法在延伸分割區上安裝。請選取一個存在的主要或邏輯分割區。 - + %1 cannot be installed on this partition. %1 無法在此分割區上安裝。 - + Data partition (%1) 資料分割區 (%1) - + Unknown system partition (%1) 未知的系統分割區 (%1) - + %1 system partition (%2) %1 系統分割區 (%2) - + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. <strong>%4</strong><br/><br/>分割區 %1 對 %2 來說太小了。請選取一個容量至少有 %3 GiB 的分割區。 - + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. <strong>%2</strong><br/><br/>在這個系統上找不到任何的 EFI 系統分割區。請回到上一步並使用手動分割以設定 %1。 - - - + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. <strong>%3</strong><br/><br/>%1 將會安裝在 %2 上。<br/><font color="red">警告: </font>所有在分割區 %2 上的資料都將會遺失。 - + The EFI system partition at %1 will be used for starting %2. 在 %1 的 EFI 系統分割區將會在開始 %2 時使用。 - + EFI system partition: EFI 系統分割區: @@ -1629,55 +1805,60 @@ The installer will quit and all changes will be lost. RequirementsChecker - + Gathering system information... 收集系統資訊中... - + has at least %1 GB available drive space 有至少 %1 GB 的可用磁碟空間 - + There is not enough drive space. At least %1 GB is required. 沒有足夠的磁碟空間。至少需要 %1 GB。 - + has at least %1 GB working memory 有至少 %1 GB 的可用記憶體 - + The system does not have enough working memory. At least %1 GB is required. 系統沒有足夠的記憶體。至少需要 %1 GB。 - + is plugged in to a power source 已插入外接電源 - + The system is not plugged in to a power source. 系統未插入外接電源。 - + is connected to the Internet 已連上網際網路 - + The system is not connected to the Internet. 系統未連上網際網路 - + The installer is not running with administrator rights. 安裝程式並未以管理員權限執行。 + + + The screen is too small to display the installer. + 螢幕太小了,沒辦法顯示安裝程式。 + ResizeFileSystemJob @@ -1772,71 +1953,127 @@ The installer will quit and all changes will be lost. SetKeyboardLayoutJob - + Set keyboard model to %1, layout to %2-%3 將鍵盤型號設定為 %1,佈局為 %2-%3 - + Failed to write keyboard configuration for the virtual console. 為虛擬終端機寫入鍵盤設定失敗。 - - + + + Failed to write to %1 寫入到 %1 失敗 - + Failed to write keyboard configuration for X11. 為 X11 寫入鍵盤設定失敗。 + + + Failed to write keyboard configuration to existing /etc/default directory. + 寫入鍵盤設定到已存在的 /etc/default 目錄失敗。 + SetPartFlagsJob - + Set flags on partition %1. 在分割區 %1 上設定旗標。 - + + Set flags on %1MB %2 partition. + 在 %1MB 的 %2 分割區上設定旗標。 + + + + Set flags on new partition. + 在新分割區上設定旗標。 + + + Clear flags on partition <strong>%1</strong>. 在分割區 <strong>%1</strong> 上清除旗標。 - + + Clear flags on %1MB <strong>%2</strong> partition. + 清除在 %1MB 的 <strong>%2</strong> 分割區上的旗標。 + + + + Clear flags on new partition. + 清除在新分割區上的旗標。 + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. 將分割區 <strong>%1</strong> 的旗標設定為 <strong>%2</strong>。 - + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + 將 %1MB 的 <strong>%2</strong> 分割區旗標設定為 <strong>%3</strong>。 + + + + Flag new partition as <strong>%1</strong>. + 將新割區旗標設定為 <strong>%1</strong>。 + + + Clearing flags on partition <strong>%1</strong>. 正在分割區 <strong>%1</strong> 上清除旗標。 - + + Clearing flags on %1MB <strong>%2</strong> partition. + 清除在 %1MB 的 <strong>%2</strong> 分割區上的旗標。 + + + + Clearing flags on new partition. + 清除在新分割區上的旗標。 + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. 正在分割區 <strong>%1</strong> 上設定旗標。 - + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + 正在 %1MB 的 <strong>%2</strong> 分割區上設定旗標 <strong>%3</strong>。 + + + + Setting flags <strong>%1</strong> on new partition. + 正在新分割區上設定旗標 <strong>%1</strong>。 + + + The installer failed to set flags on partition %1. 安裝程式在分割區 %1 上設定旗標失敗。 - + Could not open device '%1'. 無法開啟裝置「%1」。 - + Could not open partition table on device '%1'. 無法開啟在裝置「%1」上的分割區表格。 - + Could not find partition '%1'. 找不到分割區「%1」。 @@ -1857,32 +2094,42 @@ The installer will quit and all changes will be lost. SetPasswordJob - + Set password for user %1 為使用者 %1 設定密碼 - + Setting password for user %1. 正在為使用者 %1 設定密碼。 - + Bad destination system path. 非法的目標系統路徑。 - + rootMountPoint is %1 根掛載點為 %1 - + + Cannot disable root account. + 無法停用 root 帳號。 + + + + passwd terminated with error code %1. + passwd 以錯誤代碼 %1 終止。 + + + Cannot set password for user %1. 無法為使用者 %1 設定密碼。 - + usermod terminated with error code %1. usermod 以錯誤代碼 %1 終止。 @@ -1915,12 +2162,12 @@ The installer will quit and all changes will be lost. 連結建立失敗,目標:%1;連結名稱:%2 - + Cannot set timezone, 無法設定時區。 - + Cannot open /etc/timezone for writing 無法開啟要寫入的 /etc/timezone @@ -1944,33 +2191,33 @@ The installer will quit and all changes will be lost. UsersPage - + Your username is too long. 您的使用者名稱太長了。 - + Your username contains invalid characters. Only lowercase letters and numbers are allowed. 您的使用者名稱含有無效的字元。只能使用小寫字母及數字。 - + Your hostname is too short. 您的主機名稱太短了。 - + Your hostname is too long. 您的主機名稱太長了。 - + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. 您的主機名稱含有無效的字元。只能使用字母、數字及破折號。 - - + + Your passwords do not match! 密碼不符! @@ -2016,22 +2263,27 @@ The installer will quit and all changes will be lost. 關於(&A) - + <h1>Welcome to the %1 installer.</h1> <h1>歡迎使用 %1 安裝程式。</h1> - + + <h1>Welcome to the Calamares installer for %1.</h1> + <h1>歡迎使用 %1 的 Calamares 安裝程式。</h1> + + + About %1 installer 關於 %1 安裝程式 - - <h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini and Rohan Garg.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - <h1>%1</h1><br/><strong>%2<br/>為 %3</strong><br/><br/>Copyright 2014-2015 Teo Mrnjavac <teo@kde.org><br/>感謝:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Philip Müller, Pier Luigi Fiorini 及 Rohan Garg。<br/><br/><a href="http://calamares.io/">Calamares</a> 開發由 <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="http://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + <h1>%1</h1><br/><strong>%2<br/>為 %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/>感謝:Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 與 <a href="https://www.transifex.com/calamares/calamares/">Calamares 翻譯團隊</a>。<br/><br/><a href="http://calamares.io/">Calamares</a> 開發由 <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software 贊助。 - + %1 support %1 支援 @@ -2039,7 +2291,7 @@ The installer will quit and all changes will be lost. WelcomeViewStep - + Welcome 歡迎 diff --git a/lang/python.pot b/lang/python.pot new file mode 100644 index 000000000..ad66c1cab --- /dev/null +++ b/lang/python.pot @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: \n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generate machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Processing packages (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Installing one package." +msgstr[1] "Installing %(num)d packages." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Removing one package." +msgstr[1] "Removing %(num)d packages." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Install packages." diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo new file mode 100644 index 000000000..8a59291af Binary files /dev/null and b/lang/python/ar/LC_MESSAGES/python.mo differ diff --git a/lang/python/ar/LC_MESSAGES/python.po b/lang/python/ar/LC_MESSAGES/python.po new file mode 100644 index 000000000..bdabbf28e --- /dev/null +++ b/lang/python/ar/LC_MESSAGES/python.po @@ -0,0 +1,61 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo new file mode 100644 index 000000000..a4fa1fe81 Binary files /dev/null and b/lang/python/ast/LC_MESSAGES/python.mo differ diff --git a/lang/python/ast/LC_MESSAGES/python.po b/lang/python/ast/LC_MESSAGES/python.po new file mode 100644 index 000000000..c3eb56943 --- /dev/null +++ b/lang/python/ast/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: enolp , 2017\n" +"Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ast\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Xenerar machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Trabayu maniquín de python." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Pasu maniquín de python {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo new file mode 100644 index 000000000..470525ae3 Binary files /dev/null and b/lang/python/bg/LC_MESSAGES/python.mo differ diff --git a/lang/python/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po new file mode 100644 index 000000000..28b4fbb7c --- /dev/null +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo new file mode 100644 index 000000000..efd56d034 Binary files /dev/null and b/lang/python/ca/LC_MESSAGES/python.mo differ diff --git a/lang/python/ca/LC_MESSAGES/python.po b/lang/python/ca/LC_MESSAGES/python.po new file mode 100644 index 000000000..1ace6c80e --- /dev/null +++ b/lang/python/ca/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Davidmp , 2017\n" +"Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generació de l'id. de la màquina." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Tasca de python fictícia." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Pas de python fitctici {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Processant paquets (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Instal·lant un paquet." +msgstr[1] "Instal·lant %(num)d paquets." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Eliminant un paquet." +msgstr[1] "Eliminant %(num)d paquets." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instal·la els paquets." diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo new file mode 100644 index 000000000..f98f7f8ee Binary files /dev/null and b/lang/python/cs_CZ/LC_MESSAGES/python.mo differ diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.po b/lang/python/cs_CZ/LC_MESSAGES/python.po new file mode 100644 index 000000000..59616a830 --- /dev/null +++ b/lang/python/cs_CZ/LC_MESSAGES/python.po @@ -0,0 +1,56 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: pavelrz , 2017\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Vytvořit machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Testovací úloha python." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Testovací krok {} python." + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instalovat balíčky." diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo new file mode 100644 index 000000000..0521d0612 Binary files /dev/null and b/lang/python/da/LC_MESSAGES/python.mo differ diff --git a/lang/python/da/LC_MESSAGES/python.po b/lang/python/da/LC_MESSAGES/python.po new file mode 100644 index 000000000..830e045e6 --- /dev/null +++ b/lang/python/da/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Dan Johansen (Strit) , 2017\n" +"Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generere maskine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python-job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python-trin {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Forarbejder pakker (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Installerer én pakke." +msgstr[1] "Installer %(num)d pakker." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Fjerner én pakke." +msgstr[1] "Fjerne %(num)d pakker." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Installér pakker." diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo new file mode 100644 index 000000000..aff49a3d1 Binary files /dev/null and b/lang/python/de/LC_MESSAGES/python.mo differ diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po new file mode 100644 index 000000000..654da411b --- /dev/null +++ b/lang/python/de/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo new file mode 100644 index 000000000..c7d45e879 Binary files /dev/null and b/lang/python/el/LC_MESSAGES/python.mo differ diff --git a/lang/python/el/LC_MESSAGES/python.po b/lang/python/el/LC_MESSAGES/python.po new file mode 100644 index 000000000..924667c68 --- /dev/null +++ b/lang/python/el/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo new file mode 100644 index 000000000..b88e6d8f9 Binary files /dev/null and b/lang/python/en_GB/LC_MESSAGES/python.mo differ diff --git a/lang/python/en_GB/LC_MESSAGES/python.po b/lang/python/en_GB/LC_MESSAGES/python.po new file mode 100644 index 000000000..9ced5a414 --- /dev/null +++ b/lang/python/en_GB/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo new file mode 100644 index 000000000..9d1a6d89f Binary files /dev/null and b/lang/python/es/LC_MESSAGES/python.mo differ diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po new file mode 100644 index 000000000..440ead6b9 --- /dev/null +++ b/lang/python/es/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: strel , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generar identificación-de-maquina." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Tarea de python ficticia." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Paso {} de python ficticio" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Procesando paquetes (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Instalando un paquete." +msgstr[1] "Instalando %(num)d paquetes." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Eliminando un paquete." +msgstr[1] "Eliminando %(num)d paquetes." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instalar paquetes." diff --git a/lang/python/es_ES/LC_MESSAGES/python.mo b/lang/python/es_ES/LC_MESSAGES/python.mo new file mode 100644 index 000000000..35a601558 Binary files /dev/null and b/lang/python/es_ES/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_ES/LC_MESSAGES/python.po b/lang/python/es_ES/LC_MESSAGES/python.po new file mode 100644 index 000000000..a07d525c7 --- /dev/null +++ b/lang/python/es_ES/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/calamares/teams/20061/es_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_ES\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo new file mode 100644 index 000000000..73c58bb4a Binary files /dev/null and b/lang/python/es_MX/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po new file mode 100644 index 000000000..72deb57ed --- /dev/null +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo new file mode 100644 index 000000000..f3dd878be Binary files /dev/null and b/lang/python/es_PR/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_PR/LC_MESSAGES/python.po b/lang/python/es_PR/LC_MESSAGES/python.po new file mode 100644 index 000000000..14e075326 --- /dev/null +++ b/lang/python/es_PR/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_PR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo new file mode 100644 index 000000000..86e51fbf4 Binary files /dev/null and b/lang/python/et/LC_MESSAGES/python.mo differ diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po new file mode 100644 index 000000000..3ade2d753 --- /dev/null +++ b/lang/python/et/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo new file mode 100644 index 000000000..2b85ce42c Binary files /dev/null and b/lang/python/eu/LC_MESSAGES/python.mo differ diff --git a/lang/python/eu/LC_MESSAGES/python.po b/lang/python/eu/LC_MESSAGES/python.po new file mode 100644 index 000000000..2f4c71e36 --- /dev/null +++ b/lang/python/eu/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo new file mode 100644 index 000000000..be5db74c2 Binary files /dev/null and b/lang/python/fa/LC_MESSAGES/python.mo differ diff --git a/lang/python/fa/LC_MESSAGES/python.po b/lang/python/fa/LC_MESSAGES/python.po new file mode 100644 index 000000000..9da47f1c0 --- /dev/null +++ b/lang/python/fa/LC_MESSAGES/python.po @@ -0,0 +1,51 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo new file mode 100644 index 000000000..65215e4b3 Binary files /dev/null and b/lang/python/fi_FI/LC_MESSAGES/python.mo differ diff --git a/lang/python/fi_FI/LC_MESSAGES/python.po b/lang/python/fi_FI/LC_MESSAGES/python.po new file mode 100644 index 000000000..98225c0f8 --- /dev/null +++ b/lang/python/fi_FI/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo new file mode 100644 index 000000000..2c39ac029 Binary files /dev/null and b/lang/python/fr/LC_MESSAGES/python.mo differ diff --git a/lang/python/fr/LC_MESSAGES/python.po b/lang/python/fr/LC_MESSAGES/python.po new file mode 100644 index 000000000..f5af986a3 --- /dev/null +++ b/lang/python/fr/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo new file mode 100644 index 000000000..44c786167 Binary files /dev/null and b/lang/python/fr_CH/LC_MESSAGES/python.mo differ diff --git a/lang/python/fr_CH/LC_MESSAGES/python.po b/lang/python/fr_CH/LC_MESSAGES/python.po new file mode 100644 index 000000000..5c665d8ab --- /dev/null +++ b/lang/python/fr_CH/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CH\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo new file mode 100644 index 000000000..b221e3812 Binary files /dev/null and b/lang/python/gl/LC_MESSAGES/python.mo differ diff --git a/lang/python/gl/LC_MESSAGES/python.po b/lang/python/gl/LC_MESSAGES/python.po new file mode 100644 index 000000000..a326be4be --- /dev/null +++ b/lang/python/gl/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo new file mode 100644 index 000000000..e8861abe2 Binary files /dev/null and b/lang/python/gu/LC_MESSAGES/python.mo differ diff --git a/lang/python/gu/LC_MESSAGES/python.po b/lang/python/gu/LC_MESSAGES/python.po new file mode 100644 index 000000000..557a796e5 --- /dev/null +++ b/lang/python/gu/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo new file mode 100644 index 000000000..8db1c22da Binary files /dev/null and b/lang/python/he/LC_MESSAGES/python.mo differ diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po new file mode 100644 index 000000000..2c314f285 --- /dev/null +++ b/lang/python/he/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Eli Shleifer , 2017\n" +"Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "חולל מספר סידורי של המכונה." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "משימת דמה של Python." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "צעד דמה של Python {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "מעבד חבילות (%(count)d/%(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "מתקין חבילה אחת." +msgstr[1] "מתקין %(num)d חבילות." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "מסיר חבילה אחת." +msgstr[1] "מסיר %(num)d חבילות." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "התקן חבילות." diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo new file mode 100644 index 000000000..198aba348 Binary files /dev/null and b/lang/python/hi/LC_MESSAGES/python.mo differ diff --git a/lang/python/hi/LC_MESSAGES/python.po b/lang/python/hi/LC_MESSAGES/python.po new file mode 100644 index 000000000..e108c12ac --- /dev/null +++ b/lang/python/hi/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo new file mode 100644 index 000000000..4a4b060e1 Binary files /dev/null and b/lang/python/hr/LC_MESSAGES/python.mo differ diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po new file mode 100644 index 000000000..61a1b53a2 --- /dev/null +++ b/lang/python/hr/LC_MESSAGES/python.po @@ -0,0 +1,56 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Lovro Kudelić , 2017\n" +"Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generiraj ID računala." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Testni python posao." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Testni python korak {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Obrađujem pakete (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Instaliram paket." +msgstr[1] "Instaliram %(num)d pakete." +msgstr[2] "Instaliram %(num)d pakete." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Uklanjam paket." +msgstr[1] "Uklanjam %(num)d pakete." +msgstr[2] "Uklanjam %(num)d pakete." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instaliraj pakete." diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo new file mode 100644 index 000000000..62231eb3e Binary files /dev/null and b/lang/python/hu/LC_MESSAGES/python.mo differ diff --git a/lang/python/hu/LC_MESSAGES/python.po b/lang/python/hu/LC_MESSAGES/python.po new file mode 100644 index 000000000..955764b81 --- /dev/null +++ b/lang/python/hu/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: miku84 , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Számítógép azonosító generálása." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Hamis PythonQt Job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Hamis PythonQt {} lépés" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Csomagok feldolgozása (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Csomagok telepítése." diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo new file mode 100644 index 000000000..35b6cdcb0 Binary files /dev/null and b/lang/python/id/LC_MESSAGES/python.mo differ diff --git a/lang/python/id/LC_MESSAGES/python.po b/lang/python/id/LC_MESSAGES/python.po new file mode 100644 index 000000000..9f7d9418a --- /dev/null +++ b/lang/python/id/LC_MESSAGES/python.po @@ -0,0 +1,52 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Wantoyo , 2017\n" +"Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generate machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo new file mode 100644 index 000000000..26b8d0676 Binary files /dev/null and b/lang/python/is/LC_MESSAGES/python.mo differ diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po new file mode 100644 index 000000000..226a8deb3 --- /dev/null +++ b/lang/python/is/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Kristján Magnússon , 2017\n" +"Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generate machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Vinnslupakkar (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Setja upp einn pakka." +msgstr[1] "Setur upp %(num)d pakka." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Fjarlægi einn pakka." +msgstr[1] "Fjarlægi %(num)d pakka." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Setja upp pakka." diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo new file mode 100644 index 000000000..73aed3b46 Binary files /dev/null and b/lang/python/it_IT/LC_MESSAGES/python.mo differ diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po new file mode 100644 index 000000000..ff1f27430 --- /dev/null +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it_IT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo new file mode 100644 index 000000000..828391d79 Binary files /dev/null and b/lang/python/ja/LC_MESSAGES/python.mo differ diff --git a/lang/python/ja/LC_MESSAGES/python.po b/lang/python/ja/LC_MESSAGES/python.po new file mode 100644 index 000000000..8e24320fb --- /dev/null +++ b/lang/python/ja/LC_MESSAGES/python.po @@ -0,0 +1,52 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Takefumi Nagata , 2017\n" +"Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "machine-id の生成" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "パッケージの処理中 (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] " %(num)d パッケージのインストール中。" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] " %(num)d パッケージの削除中。" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "パッケージのインストール" diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo new file mode 100644 index 000000000..2b0afba0e Binary files /dev/null and b/lang/python/kk/LC_MESSAGES/python.mo differ diff --git a/lang/python/kk/LC_MESSAGES/python.po b/lang/python/kk/LC_MESSAGES/python.po new file mode 100644 index 000000000..e1ffbb3e9 --- /dev/null +++ b/lang/python/kk/LC_MESSAGES/python.po @@ -0,0 +1,51 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: kk\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo new file mode 100644 index 000000000..1a06a5e25 Binary files /dev/null and b/lang/python/lo/LC_MESSAGES/python.mo differ diff --git a/lang/python/lo/LC_MESSAGES/python.po b/lang/python/lo/LC_MESSAGES/python.po new file mode 100644 index 000000000..b11a51f76 --- /dev/null +++ b/lang/python/lo/LC_MESSAGES/python.po @@ -0,0 +1,51 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lo\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo new file mode 100644 index 000000000..421ec7f2f Binary files /dev/null and b/lang/python/lt/LC_MESSAGES/python.mo differ diff --git a/lang/python/lt/LC_MESSAGES/python.po b/lang/python/lt/LC_MESSAGES/python.po new file mode 100644 index 000000000..bda9e87c7 --- /dev/null +++ b/lang/python/lt/LC_MESSAGES/python.po @@ -0,0 +1,56 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Moo , 2017\n" +"Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generuoti machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Fiktyvi python užduotis." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Fiktyvus python žingsnis {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Apdorojami paketai (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Įdiegiamas %(num)d paketas." +msgstr[1] "Įdiegiami %(num)d paketai." +msgstr[2] "Įdiegiama %(num)d paketų." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Šalinamas %(num)d paketas." +msgstr[1] "Šalinami %(num)d paketai." +msgstr[2] "Šalinama %(num)d paketų." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Įdiegti paketus." diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo new file mode 100644 index 000000000..ada8d963f Binary files /dev/null and b/lang/python/mr/LC_MESSAGES/python.mo differ diff --git a/lang/python/mr/LC_MESSAGES/python.po b/lang/python/mr/LC_MESSAGES/python.po new file mode 100644 index 000000000..856d82b37 --- /dev/null +++ b/lang/python/mr/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo new file mode 100644 index 000000000..4a10eac44 Binary files /dev/null and b/lang/python/nb/LC_MESSAGES/python.mo differ diff --git a/lang/python/nb/LC_MESSAGES/python.po b/lang/python/nb/LC_MESSAGES/python.po new file mode 100644 index 000000000..40b2a710a --- /dev/null +++ b/lang/python/nb/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo new file mode 100644 index 000000000..3ecd47e74 Binary files /dev/null and b/lang/python/nl/LC_MESSAGES/python.mo differ diff --git a/lang/python/nl/LC_MESSAGES/python.po b/lang/python/nl/LC_MESSAGES/python.po new file mode 100644 index 000000000..5bf84848d --- /dev/null +++ b/lang/python/nl/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Adriaan de Groot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Genereer machine-id" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Voorbeeld Python-taak" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Voorbeeld Python-stap {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo new file mode 100644 index 000000000..fca89320a Binary files /dev/null and b/lang/python/pl/LC_MESSAGES/python.mo differ diff --git a/lang/python/pl/LC_MESSAGES/python.po b/lang/python/pl/LC_MESSAGES/python.po new file mode 100644 index 000000000..ec6e5bbd2 --- /dev/null +++ b/lang/python/pl/LC_MESSAGES/python.po @@ -0,0 +1,58 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: m4sk1n , 2017\n" +"Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Generuj machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Zadanie Dummy Python" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Krok dummy python {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Przetwarzanie pakietów (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Instalowanie jednego pakietu." +msgstr[1] "Instalowanie %(num)d pakietów." +msgstr[2] "Instalowanie %(num)d pakietów." +msgstr[3] "Instalowanie pakietów (%(num)d)." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Usuwanie jednego pakietu." +msgstr[1] "Usuwanie %(num)d pakietów." +msgstr[2] "Usuwanie %(num)d pakietów." +msgstr[3] "Usuwanie pakietów (%(num)d)." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Zainstaluj pakiety." diff --git a/lang/python/pl_PL/LC_MESSAGES/python.mo b/lang/python/pl_PL/LC_MESSAGES/python.mo new file mode 100644 index 000000000..fc4620205 Binary files /dev/null and b/lang/python/pl_PL/LC_MESSAGES/python.mo differ diff --git a/lang/python/pl_PL/LC_MESSAGES/python.po b/lang/python/pl_PL/LC_MESSAGES/python.po new file mode 100644 index 000000000..35261da58 --- /dev/null +++ b/lang/python/pl_PL/LC_MESSAGES/python.po @@ -0,0 +1,57 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Polish (Poland) (https://www.transifex.com/calamares/teams/20061/pl_PL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl_PL\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo new file mode 100644 index 000000000..e6c7bd3b9 Binary files /dev/null and b/lang/python/pt_BR/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po new file mode 100644 index 000000000..11ee94ba9 --- /dev/null +++ b/lang/python/pt_BR/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: André Marcelo Alvarenga , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Gerar machine-id." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Trabalho fictício python." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Etapa fictícia python {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Processando pacotes (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "Instalando um pacote." +msgstr[1] "Instalando %(num)d pacotes." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "Removendo um pacote." +msgstr[1] "Removendo %(num)d pacotes." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instalar pacotes." diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo new file mode 100644 index 000000000..d1d52a7f9 Binary files /dev/null and b/lang/python/pt_PT/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_PT/LC_MESSAGES/python.po b/lang/python/pt_PT/LC_MESSAGES/python.po new file mode 100644 index 000000000..485ecc10f --- /dev/null +++ b/lang/python/pt_PT/LC_MESSAGES/python.po @@ -0,0 +1,54 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ricardo Simões , 2017\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Gerar id-máquina" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Tarefa Dummy python." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Passo Dummy python {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "A processar pacotes (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "A instalar um pacote." +msgstr[1] "A instalar %(num)d pacotes." + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "A remover um pacote." +msgstr[1] "A remover %(num)d pacotes." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Instalar pacotes." diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo new file mode 100644 index 000000000..40d555edb Binary files /dev/null and b/lang/python/ro/LC_MESSAGES/python.mo differ diff --git a/lang/python/ro/LC_MESSAGES/python.po b/lang/python/ro/LC_MESSAGES/python.po new file mode 100644 index 000000000..5a2d0706b --- /dev/null +++ b/lang/python/ro/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo new file mode 100644 index 000000000..0faa2fe7c Binary files /dev/null and b/lang/python/ru/LC_MESSAGES/python.mo differ diff --git a/lang/python/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po new file mode 100644 index 000000000..215e7652d --- /dev/null +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -0,0 +1,57 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo new file mode 100644 index 000000000..405b02f88 Binary files /dev/null and b/lang/python/sk/LC_MESSAGES/python.mo differ diff --git a/lang/python/sk/LC_MESSAGES/python.po b/lang/python/sk/LC_MESSAGES/python.po new file mode 100644 index 000000000..edaf3ef4b --- /dev/null +++ b/lang/python/sk/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo new file mode 100644 index 000000000..615d4b0b7 Binary files /dev/null and b/lang/python/sl/LC_MESSAGES/python.mo differ diff --git a/lang/python/sl/LC_MESSAGES/python.po b/lang/python/sl/LC_MESSAGES/python.po new file mode 100644 index 000000000..75e1ce058 --- /dev/null +++ b/lang/python/sl/LC_MESSAGES/python.po @@ -0,0 +1,57 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo new file mode 100644 index 000000000..d6f9d392c Binary files /dev/null and b/lang/python/sr/LC_MESSAGES/python.mo differ diff --git a/lang/python/sr/LC_MESSAGES/python.po b/lang/python/sr/LC_MESSAGES/python.po new file mode 100644 index 000000000..3d7d8a376 --- /dev/null +++ b/lang/python/sr/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo new file mode 100644 index 000000000..ec7faf311 Binary files /dev/null and b/lang/python/sr@latin/LC_MESSAGES/python.mo differ diff --git a/lang/python/sr@latin/LC_MESSAGES/python.po b/lang/python/sr@latin/LC_MESSAGES/python.po new file mode 100644 index 000000000..2ec845ba1 --- /dev/null +++ b/lang/python/sr@latin/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo new file mode 100644 index 000000000..e27097ca7 Binary files /dev/null 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 new file mode 100644 index 000000000..961a8dd0d --- /dev/null +++ b/lang/python/sv/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo new file mode 100644 index 000000000..99aa63beb Binary files /dev/null and b/lang/python/th/LC_MESSAGES/python.mo differ diff --git a/lang/python/th/LC_MESSAGES/python.po b/lang/python/th/LC_MESSAGES/python.po new file mode 100644 index 000000000..da9c4a44e --- /dev/null +++ b/lang/python/th/LC_MESSAGES/python.po @@ -0,0 +1,51 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo new file mode 100644 index 000000000..046d5b5c9 Binary files /dev/null and b/lang/python/tr_TR/LC_MESSAGES/python.mo differ diff --git a/lang/python/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po new file mode 100644 index 000000000..9be847915 --- /dev/null +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -0,0 +1,52 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Demiray Muhterem , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "Makine kimliği oluştur." + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "Dummy python job." + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "Dummy python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "Paketler işleniyor (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "%(num)d paket yükleniyor" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "%(num)d paket kaldırılıyor." + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "Paketleri yükle" diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo new file mode 100644 index 000000000..d17a14087 Binary files /dev/null and b/lang/python/uk/LC_MESSAGES/python.mo differ diff --git a/lang/python/uk/LC_MESSAGES/python.po b/lang/python/uk/LC_MESSAGES/python.po new file mode 100644 index 000000000..c25e7e777 --- /dev/null +++ b/lang/python/uk/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo new file mode 100644 index 000000000..176215bcb Binary files /dev/null and b/lang/python/ur/LC_MESSAGES/python.mo differ diff --git a/lang/python/ur/LC_MESSAGES/python.po b/lang/python/ur/LC_MESSAGES/python.po new file mode 100644 index 000000000..58ff76786 --- /dev/null +++ b/lang/python/ur/LC_MESSAGES/python.po @@ -0,0 +1,53 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" +msgstr[1] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo new file mode 100644 index 000000000..037e2fa2a Binary files /dev/null and b/lang/python/uz/LC_MESSAGES/python.mo differ diff --git a/lang/python/uz/LC_MESSAGES/python.po b/lang/python/uz/LC_MESSAGES/python.po new file mode 100644 index 000000000..26cab9c97 --- /dev/null +++ b/lang/python/uz/LC_MESSAGES/python.po @@ -0,0 +1,51 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo new file mode 100644 index 000000000..7e0bff4f5 Binary files /dev/null and b/lang/python/zh_CN/LC_MESSAGES/python.mo differ diff --git a/lang/python/zh_CN/LC_MESSAGES/python.po b/lang/python/zh_CN/LC_MESSAGES/python.po new file mode 100644 index 000000000..2d918d9bb --- /dev/null +++ b/lang/python/zh_CN/LC_MESSAGES/python.po @@ -0,0 +1,52 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Mingcong Bai , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "生成 machine-id。" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "占位 Python 任务。" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "占位 Python 步骤 {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "" diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo new file mode 100644 index 000000000..2fb81f156 Binary files /dev/null and b/lang/python/zh_TW/LC_MESSAGES/python.mo differ diff --git a/lang/python/zh_TW/LC_MESSAGES/python.po b/lang/python/zh_TW/LC_MESSAGES/python.po new file mode 100644 index 000000000..2d1398174 --- /dev/null +++ b/lang/python/zh_TW/LC_MESSAGES/python.po @@ -0,0 +1,52 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Jeff Huang , 2017\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "生成 machine-id。" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "假的 python 工作。" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "假的 python step {}" + +#: src/modules/packages/main.py:59 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "正在處理軟體包 (%(count)d / %(total)d)" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "正在安裝 %(num)d 軟體包。" + +#: src/modules/packages/main.py:64 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "正在移除 %(num)d 軟體包。" + +#: src/modules/packages/main.py:68 +msgid "Install packages." +msgstr "安裝軟體包。" diff --git a/lang/translations.cmake b/lang/translations.cmake deleted file mode 100644 index dddad3149..000000000 --- a/lang/translations.cmake +++ /dev/null @@ -1,48 +0,0 @@ -macro(add_calamares_translations language) - list( APPEND CALAMARES_LANGUAGES ${ARGV} ) - - set( calamares_i18n_qrc_content "\n" ) - - # calamares and qt language files - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) - foreach( lang ${CALAMARES_LANGUAGES} ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}calamares_${lang}.qm\n" ) - if( NOT lang STREQUAL "en" AND EXISTS ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm ) - file( COPY ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm DESTINATION ${CMAKE_CURRENT_BINARY_DIR} ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}qt_${lang}.qm\n" ) - endif() - - # build explicitly enabled languages - list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/calamares_${lang}.ts" ) - endforeach() - - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) - set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}\n" ) - - file( WRITE ${CMAKE_BINARY_DIR}/lang/calamares_i18n.qrc "${calamares_i18n_qrc_content}" ) - - qt5_add_translation(QM_FILES ${TS_FILES}) - - ## HACK HACK HACK - around rcc limitations to allow out of source-tree building - set( trans_file calamares_i18n ) - set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) - set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) - set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) - - # Copy the QRC file to the output directory - add_custom_command( - OUTPUT ${trans_infile} - COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile} - MAIN_DEPENDENCY ${trans_srcfile} - ) - - # Run the resource compiler (rcc_options should already be set) - add_custom_command( - OUTPUT ${trans_outfile} - COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} - MAIN_DEPENDENCY ${trans_infile} - DEPENDS ${QM_FILES} - ) -endmacro() - diff --git a/man/calamares.8 b/man/calamares.8 new file mode 100644 index 000000000..028e616d1 --- /dev/null +++ b/man/calamares.8 @@ -0,0 +1,41 @@ +.TH CALAMARES "8" +.SH NAME +calamares \- distribution-independent system installer +.SH SYNOPSIS +.B calamares +[\fI\,options\/\fR] +.SH DESCRIPTION +.B calamares +is a distribution-independent system installer, with an advanced partitioning +feature for both manual and automated partitioning operations. It is the +first installer with an automated “Replace Partition” option, which makes it +easy to reuse a partition over and over for distribution testing. Calamares is +designed to be customizable by distribution maintainers without need for +cumbersome patching, thanks to third party branding and external modules +support. +.SH OPTIONS +.TP +\fB\-h\fR, \fB\-\-help\fR +Displays this help. +.TP +\fB\-v\fR, \fB\-\-version\fR +Displays version information. +.TP +\fB\-d\fR, \fB\-\-debug\fR +Verbose output for debugging purposes. +.TP +\fB\-c\fR, \fB\-\-config\fR +Configuration directory to use, for testing purposes. +.SH "SEE ALSO" +The +.B calamares +website: https://calamares.io +.SH "BUGS" +Please report any bugs to https://calamares.io/issues +.SH AUTHORS +.B calamares +is written by Teo Mrnjavac , +Adriaan de Groot and +an international group of contributors. +.LP +This man page is written by Jonathan Carter diff --git a/settings.conf b/settings.conf index d2bfd8f2f..9ae2e4383 100644 --- a/settings.conf +++ b/settings.conf @@ -61,14 +61,17 @@ modules-search: [ local ] sequence: - show: - welcome +# - dummypythonqt - locale - keyboard - partition - users - summary - exec: +# - dummycpp # - dummyprocess # - dummypython +# - dummypythonqt - partition - mount - unpackfs @@ -77,6 +80,10 @@ sequence: - locale - keyboard - localecfg +# - luksbootkeyfile +# - luksopenswaphookcfg +# - dracutlukscfg +# - plymouthcfg - initcpiocfg - initcpio - users diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 497d173a2..c29a866d8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,16 +1,20 @@ -include( ${PROJECT_BINARY_DIR}/CalamaresUse.cmake ) +include( CalamaresAddPlugin ) +include( CalamaresAddModuleSubdirectory ) +include( CalamaresAddLibrary ) +include( CalamaresAddBrandingSubdirectory ) -include_directories( ${CMAKE_CURRENT_BINARY_DIR}/libcalamares ) -include_directories( ${CMAKE_CURRENT_LIST_DIR}/libcalamares ) - -include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) -include_directories( ${CMAKE_CURRENT_LIST_DIR} ) +include_directories( + ${CMAKE_CURRENT_LIST_DIR} + ${CMAKE_CURRENT_LIST_DIR}/libcalamares + ${CMAKE_CURRENT_LIST_DIR}/libcalamaresui + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/libcalamares + ${CMAKE_CURRENT_BINARY_DIR}/libcalamaresui +) # library add_subdirectory( libcalamares ) -include_directories( ${CMAKE_CURRENT_BINARY_DIR}/libcalamaresui ) -include_directories( ${CMAKE_CURRENT_LIST_DIR}/libcalamaresui ) add_subdirectory( libcalamaresui ) # all things qml @@ -24,4 +28,3 @@ add_subdirectory( modules ) # branding components add_subdirectory( branding ) - diff --git a/src/branding/default/branding.desc b/src/branding/default/branding.desc index 4c14c9cae..c2d868c82 100644 --- a/src/branding/default/branding.desc +++ b/src/branding/default/branding.desc @@ -1,13 +1,24 @@ --- componentName: default +# This selects between different welcome texts. When false, uses +# the traditional "Welcome to the %1 installer.", and when true, +# uses "Welcome to the Calamares installer for %1." This allows +# to distinguish this installer from other installers for the +# same distribution. +welcomeStyleCalamares: false + +# Should the welcome image (productWelcome, below) be scaled +# up beyond its natural size? +welcomeExpandingLogo: true + strings: productName: Generic GNU/Linux shortProductName: Generic - version: 1.0 LTS - shortVersion: 1.0 - versionedName: Generic GNU/Linux 1.0 LTS "Rusty Trombone" - shortVersionedName: Generic 1.0 + version: 2017.8 LTS + shortVersion: 2017.8 + versionedName: Generic GNU/Linux 2017.8 LTS "Soapy Sousaphone" + shortVersionedName: Generic 2017.8 bootloaderEntryName: Generic productUrl: http://calamares.io/ supportUrl: http://calamares.io/bugs/ @@ -21,7 +32,16 @@ images: slideshow: "show.qml" +# Colors for text and background components. +# +# - sidebarBackground is the background of the sidebar +# - sidebarText is the (foreground) text color +# - sidebarTextHighlight sets the background of the selected (current) step. +# Optional, and defaults to the application palette. +# - sidebarSelect is the text color of the selected step. +# style: sidebarBackground: "#292F34" sidebarText: "#FFFFFF" sidebarTextSelect: "#292F34" + sidebarTextHighlight: "#D35400" diff --git a/src/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index bd7dcbdd7..f47a0a9f5 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -35,10 +35,8 @@ include( GNUInstallDirs ) qt5_wrap_ui( calamaresUi_H ${calamaresUi} ) -#qt_add_resources( calamaresRc "../../resources.qrc" ) - # Translations -include( ${CMAKE_SOURCE_DIR}/lang/translations.cmake ) +include( CalamaresAddTranslations ) add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) set( final_src ${calamaresUi_H} ${calamaresSources} ${calamaresRc} ${trans_outfile} ) @@ -58,14 +56,13 @@ if( WITH_KF5Crash ) ) endif() -qt5_use_modules( calamares_bin Core Widgets ) target_link_libraries( calamares_bin - ${LINK_LIBRARIES} - ${CALAMARES_LIBRARIES} - calamaresui - Qt5::Core - Qt5::Widgets - yaml-cpp + PRIVATE + ${CALAMARES_LIBRARIES} + calamaresui + Qt5::Core + Qt5::Widgets + ${LINK_LIBRARIES} ) install( TARGETS calamares_bin diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 952528903..6389a2806 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -86,7 +86,11 @@ CalamaresApplication::init() setWindowIcon( QIcon( Calamares::Branding::instance()-> imagePath( Calamares::Branding::ProductIcon ) ) ); + cDebug() << "STARTUP: initQmlPath, initSettings, initBranding done"; + initModuleManager(); //also shows main window + + cDebug() << "STARTUP: initModuleManager: module init started"; } @@ -328,7 +332,9 @@ CalamaresApplication::initModuleManager() void CalamaresApplication::initView() { + cDebug() << "STARTUP: initModuleManager: all modules init done"; initJobQueue(); + cDebug() << "STARTUP: initJobQueue done"; m_mainwindow = new CalamaresWindow(); //also creates ViewManager @@ -340,15 +346,19 @@ CalamaresApplication::initView() m_mainwindow->move( this->desktop()->availableGeometry().center() - m_mainwindow->rect().center() ); + + cDebug() << "STARTUP: CalamaresWindow created; loadModules started"; } void CalamaresApplication::initViewSteps() { + cDebug() << "STARTUP: loadModules for all modules done"; m_mainwindow->show(); ProgressTreeModel* m = new ProgressTreeModel( this ); ProgressTreeView::instance()->setModel( m ); + cDebug() << "STARTUP: Window now visible and ProgressTreeView populated"; } diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index 5aa33ed97..2c1cd1a09 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -32,6 +32,11 @@ namespace Calamares class ModuleManager; } + +/** + * @brief The CalamaresApplication class extends QApplication to handle + * Calamares startup and lifetime of main components. + */ class CalamaresApplication : public QApplication { Q_OBJECT @@ -39,12 +44,27 @@ public: CalamaresApplication( int& argc, char* argv[] ); virtual ~CalamaresApplication(); + /** + * @brief init handles the first part of Calamares application startup. + * After the main window shows up, the latter part of the startup sequence + * (including modules loading) happens asynchronously. + */ void init(); static CalamaresApplication* instance(); + /** + * @brief setDebug controls whether debug mode is enabled + */ void setDebug( bool enabled ); + + /** + * @brief isDebug returns true if running in debug mode, otherwise false. + */ bool isDebug(); + /** + * @brief mainWindow returns the Calamares application main window. + */ CalamaresWindow* mainWindow(); private slots: diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index 57f9286ae..eb3289083 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,16 +43,29 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) CALAMARES_RETRANSLATE( setWindowTitle( tr( "%1 Installer" ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ) ); + .arg( *Calamares::Branding::ProductName ) ); ) - setMinimumSize( 1010, 520 ); - QSize availableSize = qApp->desktop()->availableGeometry( this ).size(); - int w = qBound( 1010, CalamaresUtils::defaultFontHeight() * 60, availableSize.width() ); - int h = qBound( 520, CalamaresUtils::defaultFontHeight() * 36, availableSize.height() ); + using CalamaresUtils::windowMinimumHeight; + using CalamaresUtils::windowMinimumWidth; + using CalamaresUtils::windowPreferredHeight; + using CalamaresUtils::windowPreferredWidth; - cDebug() << "Proposed window size:" << w << h; + QSize availableSize = qApp->desktop()->availableGeometry( this ).size(); + + cDebug() << "Available size" << availableSize; + + if ( ( availableSize.width() < windowPreferredWidth ) || ( availableSize.height() < windowPreferredHeight ) ) + cDebug() << " Small screen detected."; + QSize minimumSize( qBound( windowMinimumWidth, availableSize.width(), windowPreferredWidth ), + qBound( windowMinimumHeight, availableSize.height(), windowPreferredHeight ) ); + setMinimumSize( minimumSize ); + + + int w = qBound( minimumSize.width(), CalamaresUtils::defaultFontHeight() * 60, availableSize.width() ); + int h = qBound( minimumSize.height(), CalamaresUtils::defaultFontHeight() * 36, availableSize.height() ); + + cDebug() << " Proposed window size:" << w << h; resize( w, h ); QBoxLayout* mainLayout = new QHBoxLayout; @@ -62,7 +76,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) QBoxLayout* sideLayout = new QVBoxLayout; sideBox->setLayout( sideLayout ); - sideBox->setFixedWidth( qMax( 190, CalamaresUtils::defaultFontHeight() * 12 ) ); + sideBox->setFixedWidth( qBound( 100, CalamaresUtils::defaultFontHeight() * 12, w < windowPreferredWidth ? 100 : 190 ) ); sideBox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); QHBoxLayout* logoLayout = new QHBoxLayout; @@ -117,9 +131,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) else { if ( m_debugWindow ) - { m_debugWindow->deleteLater(); - } } } ); } @@ -127,7 +139,20 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) CalamaresUtils::unmarginLayout( sideLayout ); CalamaresUtils::unmarginLayout( mainLayout ); - Calamares::ViewManager* vm = new Calamares::ViewManager( this ); + Calamares::ViewManager* vm = Calamares::ViewManager::instance( this ); + connect( vm, &Calamares::ViewManager::enlarge, this, &CalamaresWindow::enlarge ); mainLayout->addWidget( vm->centralWidget() ); } + +void +CalamaresWindow::enlarge( QSize enlarge ) +{ + auto mainGeometry = this->geometry(); + QSize availableSize = qApp->desktop()->availableGeometry( this ).size(); + + auto h = qBound( 0, mainGeometry.height() + enlarge.height(), availableSize.height() ); + auto w = this->size().width(); + + resize( w, h ); +} diff --git a/src/calamares/CalamaresWindow.h b/src/calamares/CalamaresWindow.h index 6ea9602a5..00f790f5a 100644 --- a/src/calamares/CalamaresWindow.h +++ b/src/calamares/CalamaresWindow.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,6 +28,9 @@ namespace Calamares class DebugWindow; } +/** + * @brief The CalamaresWindow class represents the main window of the Calamares UI. + */ class CalamaresWindow : public QWidget { Q_OBJECT @@ -34,6 +38,14 @@ public: CalamaresWindow( QWidget* parent = nullptr ); virtual ~CalamaresWindow() {} +public slots: + /** + * This asks the main window to grow by @p enlarge pixels, to accomodate + * larger-than-expected window contents. The enlargement may be silently + * ignored. + */ + void enlarge( QSize enlarge ); + private: QPointer< Calamares::DebugWindow > m_debugWindow; }; diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index 01dfbb9e0..534474337 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -23,6 +23,7 @@ #include "kdsingleapplicationguard/kdsingleapplicationguard.h" #include "utils/CalamaresUtils.h" #include "utils/Logger.h" +#include "CalamaresConfig.h" #ifdef WITH_KCRASH #include diff --git a/src/calamares/progresstree/ProgressTreeDelegate.cpp b/src/calamares/progresstree/ProgressTreeDelegate.cpp index 4b2ab65bb..34835c8fa 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.cpp +++ b/src/calamares/progresstree/ProgressTreeDelegate.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,9 +64,7 @@ ProgressTreeDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { - bool isFirstLevel = !index.parent().isValid(); - - QStyleOptionViewItemV4 opt = option; + QStyleOptionViewItem opt = option; painter->save(); @@ -104,7 +103,12 @@ ProgressTreeDelegate::paintViewStep( QPainter* painter, { painter->setPen( Calamares::Branding::instance()-> styleString( Calamares::Branding::SidebarTextSelect ) ); - painter->setBrush( APP->mainWindow()->palette().background() ); + QString textHighlight = Calamares::Branding::instance()-> + styleString( Calamares::Branding::SidebarTextHighlight ); + if ( textHighlight.isEmpty() ) + painter->setBrush( APP->mainWindow()->palette().background() ); + else + painter->setBrush( QColor( textHighlight ) ); } painter->fillRect( option.rect, painter->brush().color() ); diff --git a/src/calamares/progresstree/ProgressTreeDelegate.h b/src/calamares/progresstree/ProgressTreeDelegate.h index b3f6d4ab2..ed3aae9de 100644 --- a/src/calamares/progresstree/ProgressTreeDelegate.h +++ b/src/calamares/progresstree/ProgressTreeDelegate.h @@ -21,6 +21,12 @@ #include + +/** + * @brief The ProgressTreeDelegate class customizes the look and feel of the + * ProgressTreeView elements. + * @see ProgressTreeView + */ class ProgressTreeDelegate : public QStyledItemDelegate { Q_OBJECT diff --git a/src/calamares/progresstree/ProgressTreeItem.h b/src/calamares/progresstree/ProgressTreeItem.h index 66c07863a..bfce062a7 100644 --- a/src/calamares/progresstree/ProgressTreeItem.h +++ b/src/calamares/progresstree/ProgressTreeItem.h @@ -22,6 +22,12 @@ #include #include + +/** + * @brief The ProgressTreeItem class represents an item in the + * ProgressTreeModel/ProgressTreeView. + * Each item generally represents a ViewStep. + */ class ProgressTreeItem { public: diff --git a/src/calamares/progresstree/ProgressTreeModel.cpp b/src/calamares/progresstree/ProgressTreeModel.cpp index 530b42796..50a1b6e50 100644 --- a/src/calamares/progresstree/ProgressTreeModel.cpp +++ b/src/calamares/progresstree/ProgressTreeModel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -96,6 +97,10 @@ ProgressTreeModel::data( const QModelIndex& index, int role ) const QVariant ProgressTreeModel::headerData( int section, Qt::Orientation orientation, int role ) const { + Q_UNUSED( section ); + Q_UNUSED( orientation ); + Q_UNUSED( role ); + return QVariant(); } @@ -132,7 +137,8 @@ ProgressTreeModel::setupModelData() m_rootItem = new ProgressTreeRoot(); const Calamares::ViewManager* vm = Calamares::ViewManager::instance(); - foreach ( const Calamares::ViewStep* step, vm->viewSteps() ) + const auto steps = vm->viewSteps(); + for ( const Calamares::ViewStep* step : steps ) { m_rootItem->appendChild( new ViewStepItem( step, m_rootItem ) ); } @@ -145,12 +151,11 @@ ProgressTreeModel::indexFromItem( ProgressTreeItem* item ) if ( !item || !item->parent() ) return QModelIndex(); - // Reconstructs a QModelIndex from a ProgressTreeItem that is somewhere in the tree. - // Traverses the item to the root node, then rebuilds the qmodeindices from there + // Traverses the item to the root node, then rebuilds the qmodelindices from there // back down; each int is the row of that item in the parent. /** - * In this diagram, if the \param item is G, childIndexList will contain [0, 2, 0] + * In this diagram, if the item is G, childIndexList will contain [0, 2, 0] * * A * D diff --git a/src/calamares/progresstree/ProgressTreeModel.h b/src/calamares/progresstree/ProgressTreeModel.h index 39ec64a3e..80ce6dc6b 100644 --- a/src/calamares/progresstree/ProgressTreeModel.h +++ b/src/calamares/progresstree/ProgressTreeModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +25,10 @@ class ProgressTreeRoot; class ProgressTreeItem; + +/** + * @brief The ProgressTreeModel class implements a model for the ProgressTreeView. + */ class ProgressTreeModel : public QAbstractItemModel { Q_OBJECT @@ -35,7 +40,7 @@ public: }; explicit ProgressTreeModel( QObject* parent = nullptr ); - virtual ~ProgressTreeModel(); + virtual ~ProgressTreeModel() override; // Reimplemented from QAbstractItemModel Qt::ItemFlags flags( const QModelIndex& index ) const override; diff --git a/src/calamares/progresstree/ProgressTreeView.h b/src/calamares/progresstree/ProgressTreeView.h index b908449c2..11738b193 100644 --- a/src/calamares/progresstree/ProgressTreeView.h +++ b/src/calamares/progresstree/ProgressTreeView.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,15 +24,23 @@ class ProgressTreeDelegate; +/** + * @brief The ProgressTreeView class is a modified QTreeView which displays the + * available view steps and the user's progress through them. + * @note singleton, only access through ProgressTreeView::instance(). + */ class ProgressTreeView : public QTreeView { Q_OBJECT public: static ProgressTreeView* instance(); - explicit ProgressTreeView( QWidget* parent = 0 ); - virtual ~ProgressTreeView(); + explicit ProgressTreeView( QWidget* parent = nullptr ); + virtual ~ProgressTreeView() override; + /** + * @brief setModel assigns a model to this view. + */ void setModel( QAbstractItemModel* model ) override; private: diff --git a/src/calamares/progresstree/ViewStepItem.cpp b/src/calamares/progresstree/ViewStepItem.cpp index d2fff08ca..b54fa07eb 100644 --- a/src/calamares/progresstree/ViewStepItem.cpp +++ b/src/calamares/progresstree/ViewStepItem.cpp @@ -46,6 +46,7 @@ void ViewStepItem::appendChild( ProgressTreeItem* item ) { Q_ASSERT( false ); + Q_UNUSED( item ); } diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 966ca9c7d..d52e60bfa 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -1,9 +1,11 @@ -project( libcalamares ) +project( libcalamares CXX ) -add_definitions( ${QT_DEFINITIONS} ) -add_definitions( -DQT_SHARED ) -add_definitions( -DQT_SHAREDPOINTER_TRACK_POINTERS ) -add_definitions( -DDLLEXPORT_PRO ) +add_definitions( + ${QT_DEFINITIONS} + -DQT_SHARED + -DQT_SHAREDPOINTER_TRACK_POINTERS + -DDLLEXPORT_PRO +) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/CalamaresConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/CalamaresConfig.h ) @@ -11,30 +13,32 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../calamares/CalamaresVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/CalamaresVersion.h ) set( libSources + CppJob.cpp GlobalStorage.cpp Job.cpp JobQueue.cpp ProcessJob.cpp - +) +set( utilsSources + utils/CalamaresUtils.cpp + utils/CalamaresUtilsSystem.cpp + utils/Logger.cpp + utils/PluginFactory.cpp + utils/Retranslator.cpp +) +set( kdsagSources kdsingleapplicationguard/kdsingleapplicationguard.cpp kdsingleapplicationguard/kdsharedmemorylocker.cpp kdsingleapplicationguard/kdtoolsglobal.cpp kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp - - utils/CalamaresUtils.cpp - utils/CalamaresUtilsSystem.cpp - utils/Logger.cpp - utils/Retranslator.cpp ) +mark_thirdparty_code( ${kdsagSources} ) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} - - ${QT_INCLUDE_DIR} ) - if( WITH_PYTHON ) set( libSources ${libSources} @@ -42,6 +46,9 @@ if( WITH_PYTHON ) PythonJob.cpp PythonJobApi.cpp ) + set_source_files_properties( PythonJob.cpp + PROPERTIES COMPILE_FLAGS "${SUPPRESS_BOOST_WARNINGS}" + ) include_directories(${PYTHON_INCLUDE_DIRS}) link_directories(${PYTHON_LIBRARIES}) @@ -56,8 +63,22 @@ if( WITH_PYTHON ) ) endif() +if( WITH_PYTHONQT ) + include_directories(${PYTHON_INCLUDE_DIRS}) + link_directories(${PYTHON_LIBRARIES}) -add_library( calamares SHARED ${libSources} ) + include_directories(${PYTHONQT_INCLUDE_DIR}) + link_directories(${PYTHONQT_LIBRARY}) + + set( OPTIONAL_PRIVATE_LIBRARIES + ${OPTIONAL_PRIVATE_LIBRARIES} + ${PYTHON_LIBRARIES} + ${PYTHONQT_LIBRARY} + ) +endif() + + +add_library( calamares SHARED ${libSources} ${kdsagSources} ${utilsSources} ) set_target_properties( calamares PROPERTIES AUTOMOC TRUE @@ -65,17 +86,9 @@ set_target_properties( calamares SOVERSION ${CALAMARES_VERSION_SHORT} ) -qt5_use_modules( calamares Core ) - - target_link_libraries( calamares - LINK_PRIVATE - # internal deps, if any - ${OPTIONAL_PRIVATE_LIBRARIES} - - LINK_PUBLIC - # External deps - Qt5::Core + LINK_PRIVATE ${OPTIONAL_PRIVATE_LIBRARIES} + LINK_PUBLIC Qt5::Core ) install( TARGETS calamares diff --git a/src/libcalamares/CalamaresConfig.h.in b/src/libcalamares/CalamaresConfig.h.in index 7b909e520..cafbe9276 100644 --- a/src/libcalamares/CalamaresConfig.h.in +++ b/src/libcalamares/CalamaresConfig.h.in @@ -10,10 +10,12 @@ //cmakedefines for CMake variables (e.g. for optdepends) go here #cmakedefine WITH_PYTHON -#cmakedefine WITH_KF5Crash +#cmakedefine WITH_KF5Crash #ifdef WITH_KF5Crash #define WITH_KCRASH #endif +#cmakedefine WITH_PYTHONQT + #endif // CALAMARESCONFIG_H diff --git a/src/libcalamares/CppJob.cpp b/src/libcalamares/CppJob.cpp new file mode 100644 index 000000000..73868799a --- /dev/null +++ b/src/libcalamares/CppJob.cpp @@ -0,0 +1,47 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * Copyright 2016, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "CppJob.h" + +namespace Calamares +{ + +CppJob::CppJob( QObject* parent ) + : Job( parent ) +{} + + +CppJob::~CppJob() +{} + + +void +CppJob::setModuleInstanceKey( const QString& instanceKey ) +{ + m_instanceKey = instanceKey; +} + + +void +CppJob::setConfigurationMap( const QVariantMap& configurationMap ) +{ + Q_UNUSED( configurationMap ); +} + +} diff --git a/src/libcalamares/CppJob.h b/src/libcalamares/CppJob.h new file mode 100644 index 000000000..a6e67355f --- /dev/null +++ b/src/libcalamares/CppJob.h @@ -0,0 +1,51 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2016, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARES_CPPJOB_H +#define CALAMARES_CPPJOB_H + +#include +#include + +#include "DllMacro.h" +#include "Typedefs.h" +#include "Job.h" + +namespace Calamares +{ + +class DLLEXPORT CppJob : public Job +{ + Q_OBJECT +public: + explicit CppJob( QObject* parent = nullptr ); + virtual ~CppJob(); + + void setModuleInstanceKey( const QString& instanceKey ); + QString moduleInstanceKey() const { return m_instanceKey; } + + virtual void setConfigurationMap( const QVariantMap& configurationMap ); + +protected: + QString m_instanceKey; +}; + +} + +#endif // CALAMARES_CPPJOB_H diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 69edafa07..36405ce87 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,10 +18,14 @@ */ #include "GlobalStorage.h" +#include "JobQueue.h" + +#include "utils/Logger.h" #ifdef WITH_PYTHON #include "PythonHelper.h" + #undef slots #include #include @@ -80,6 +85,15 @@ GlobalStorage::value( const QString& key ) const return m.value( key ); } +void +GlobalStorage::debugDump() const +{ + for ( auto it = m.cbegin(); it != m.cend(); ++it ) + { + cDebug() << it.key() << '\t' << it.value(); + } +} + } // namespace Calamares #ifdef WITH_PYTHON @@ -87,9 +101,22 @@ GlobalStorage::value( const QString& key ) const namespace CalamaresPython { +Calamares::GlobalStorage* GlobalStoragePythonWrapper::s_gs_instance = nullptr; + +// The special handling for nullptr is only for the testing +// script for the python bindings, which passes in None; +// normal use will have a GlobalStorage from JobQueue::instance() +// passed in. Testing use will leak the allocated GlobalStorage +// object, but that's OK for testing. GlobalStoragePythonWrapper::GlobalStoragePythonWrapper( Calamares::GlobalStorage* gs ) - : m_gs( gs ) -{} + : m_gs( gs ? gs : s_gs_instance ) +{ + if (!m_gs) + { + s_gs_instance = new Calamares::GlobalStorage; + m_gs = s_gs_instance; + } +} bool GlobalStoragePythonWrapper::contains( const std::string& key ) const @@ -113,12 +140,12 @@ GlobalStoragePythonWrapper::insert( const std::string& key, CalamaresPython::variantFromPyObject( value ) ); } - bp::list GlobalStoragePythonWrapper::keys() const { bp::list pyList; - foreach( const QString& key, m_gs->keys() ) + const auto keys = m_gs->keys(); + for ( const QString& key : keys ) pyList.append( key.toStdString() ); return pyList; } diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index 20af3978c..0ff56ac62 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,6 +58,8 @@ public: int remove( const QString& key ); QVariant value( const QString& key ) const; + void debugDump() const; + signals: void changed(); @@ -83,8 +86,15 @@ public: boost::python::list keys() const; int remove( const std::string& key ); boost::python::api::object value( const std::string& key ) const; + + // This is a helper for scripts that do not go through + // the JobQueue (i.e. the module testpython script), + // which allocate their own (singleton) GlobalStorage. + static Calamares::GlobalStorage* globalStorageInstance() { return s_gs_instance; } + private: Calamares::GlobalStorage* m_gs; + static Calamares::GlobalStorage* s_gs_instance; // See globalStorageInstance() }; } // namespace CalamaresPython diff --git a/src/libcalamares/Job.cpp b/src/libcalamares/Job.cpp index bf9229f7c..26ee94464 100644 --- a/src/libcalamares/Job.cpp +++ b/src/libcalamares/Job.cpp @@ -21,6 +21,12 @@ namespace Calamares { +JobResult::JobResult( JobResult&& rhs ) : + m_ok( rhs.m_ok ) + , m_message( std::move( rhs.m_message ) ) + , m_details( std::move( rhs.m_details ) ) +{ +} JobResult::operator bool() const { @@ -55,7 +61,6 @@ JobResult::setDetails( const QString& details ) m_details = details; } - JobResult JobResult::ok() { diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index e632ec885..218abb72b 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -29,37 +29,36 @@ namespace Calamares { class DLLEXPORT JobResult { public: - operator bool() const; + JobResult( const JobResult& rhs ) = delete; + JobResult( JobResult&& rhs ); - QString message() const; - void setMessage( const QString& message ); + virtual ~JobResult() {} - QString details() const; - void setDetails( const QString& details ); + virtual operator bool() const; + + virtual QString message() const; + virtual void setMessage( const QString& message ); + + virtual QString details() const; + virtual void setDetails( const QString& details ); static JobResult ok(); static JobResult error( const QString& message, const QString& details = QString() ); +protected: + explicit JobResult( bool ok, const QString& message, const QString& details ); + private: bool m_ok; QString m_message; QString m_details; - - JobResult( bool ok, const QString& message, const QString& details ); }; class DLLEXPORT Job : public QObject { Q_OBJECT public: - enum State - { - Pending = 0, - Running, - Finished - }; - explicit Job( QObject* parent = nullptr ); virtual ~Job(); diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h index ba6e650f6..43fdf254e 100644 --- a/src/libcalamares/ProcessJob.h +++ b/src/libcalamares/ProcessJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,7 +33,7 @@ public: bool runInChroot = false, int secondsTimeout = 30, QObject* parent = nullptr ); - virtual ~ProcessJob(); + virtual ~ProcessJob() override; QString prettyName() const override; QString prettyStatusMessage() const override; diff --git a/src/libcalamares/PythonHelper.cpp b/src/libcalamares/PythonHelper.cpp index 53a34a9fc..14a63f4d3 100644 --- a/src/libcalamares/PythonHelper.cpp +++ b/src/libcalamares/PythonHelper.cpp @@ -29,7 +29,8 @@ namespace bp = boost::python; -namespace CalamaresPython { +namespace CalamaresPython +{ boost::python::object @@ -40,6 +41,9 @@ variantToPyObject( const QVariant& variant ) case QVariant::Map: return variantMapToPyDict( variant.toMap() ); + case QVariant::Hash: + return variantHashToPyDict( variant.toHash() ); + case QVariant::List: case QVariant::StringList: return variantListToPyList( variant.toList() ); @@ -93,10 +97,8 @@ boost::python::list variantListToPyList( const QVariantList& variantList ) { bp::list pyList; - foreach ( const QVariant& variant, variantList ) - { + for ( const QVariant& variant : variantList ) pyList.append( variantToPyObject( variant ) ); - } return pyList; } @@ -106,9 +108,7 @@ variantListFromPyList( const boost::python::list& pyList ) { QVariantList list; for ( int i = 0; i < bp::len( pyList ); ++i ) - { list.append( variantFromPyObject( pyList[ i ] ) ); - } return list; } @@ -118,9 +118,7 @@ variantMapToPyDict( const QVariantMap& variantMap ) { bp::dict pyDict; for ( auto it = variantMap.constBegin(); it != variantMap.constEnd(); ++it ) - { pyDict[ it.key().toStdString() ] = variantToPyObject( it.value() ); - } return pyDict; } @@ -148,6 +146,40 @@ variantMapFromPyDict( const boost::python::dict& pyDict ) return map; } +boost::python::dict +variantHashToPyDict( const QVariantHash& variantHash ) +{ + bp::dict pyDict; + for ( auto it = variantHash.constBegin(); it != variantHash.constEnd(); ++it ) + pyDict[ it.key().toStdString() ] = variantToPyObject( it.value() ); + return pyDict; +} + + +QVariantHash +variantHashFromPyDict( const boost::python::dict& pyDict ) +{ + QVariantHash hash; + bp::list keys = pyDict.keys(); + for ( int i = 0; i < bp::len( keys ); ++i ) + { + bp::extract< std::string > extracted_key( keys[ i ] ); + if ( !extracted_key.check() ) + { + cDebug() << "Key invalid, map might be incomplete."; + continue; + } + + std::string key = extracted_key; + + bp::object obj = pyDict[ key ]; + + hash.insert( QString::fromStdString( key ), variantFromPyObject( obj ) ); + } + return hash; +} + + Helper* Helper::s_instance = nullptr; @@ -157,7 +189,8 @@ Helper::Helper( QObject* parent ) // Let's make extra sure we only call Py_Initialize once if ( !s_instance ) { - Py_Initialize(); + if ( !Py_IsInitialized() ) + Py_Initialize(); m_mainModule = bp::import( "__main__" ); m_mainNamespace = m_mainModule.attr( "__dict__" ); @@ -165,20 +198,16 @@ Helper::Helper( QObject* parent ) // If we're running from the build dir QFileInfo fi( QDir::current().absoluteFilePath( "libcalamares.so" ) ); if ( fi.exists() && fi.isReadable() ) - { m_pythonPaths.append( fi.dir().absolutePath() ); - } QDir calaPythonPath( CalamaresUtils::systemLibDir().absolutePath() + QDir::separator() + "calamares" ); if ( calaPythonPath.exists() && - calaPythonPath.isReadable() ) + calaPythonPath.isReadable() ) { QFileInfo fi( calaPythonPath.absoluteFilePath( "libcalamares.so" ) ); if ( fi.exists() && fi.isReadable() ) - { m_pythonPaths.append( fi.dir().absolutePath() ); - } } @@ -287,4 +316,4 @@ Helper::handleLastError() } -} // namespace Calamares +} // namespace CalamaresPython diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h index 631e596f5..a77ab80b2 100644 --- a/src/libcalamares/PythonHelper.h +++ b/src/libcalamares/PythonHelper.h @@ -28,7 +28,8 @@ #include #include -namespace CalamaresPython { +namespace CalamaresPython +{ boost::python::object variantToPyObject( const QVariant& variant ); QVariant variantFromPyObject( const boost::python::object& pyObject ); @@ -39,6 +40,9 @@ QVariantList variantListFromPyList( const boost::python::list& pyList boost::python::dict variantMapToPyDict( const QVariantMap& variantMap ); QVariantMap variantMapFromPyDict( const boost::python::dict& pyDict ); +boost::python::dict variantHashToPyDict( const QVariantHash& variantHash ); +QVariantHash variantHashFromPyDict( const boost::python::dict& pyDict ); + class Helper : public QObject { diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index d6913ecd3..1a8a9701a 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -206,6 +206,28 @@ BOOST_PYTHON_MODULE( libcalamares ) "subprocess.CalledProcessError if something went wrong." ) ); + bp::def( + "obscure", + &CalamaresPython::obscure, + bp::args( "s" ), + "Simple string obfuscation function based on KStringHandler::obscure.\n" + "Returns a string, generated using a simple symmetric encryption.\n" + "Applying the function to a string obscured by this function will result " + "in the original string." + ); + + + bp::def( + "gettext_languages", + &CalamaresPython::gettext_languages, + "Returns list of languages (most to least-specific) for gettext." + ); + + bp::def( + "gettext_path", + &CalamaresPython::gettext_path, + "Returns path for gettext search." + ); } @@ -219,6 +241,7 @@ PythonJob::PythonJob( const QString& scriptFile, : Job( parent ) , m_scriptFile( scriptFile ) , m_workingPath( workingPath ) + , m_description() , m_configurationMap( moduleConfiguration ) { } @@ -238,8 +261,11 @@ PythonJob::prettyName() const QString PythonJob::prettyStatusMessage() const { - return tr( "Running %1 operation." ) - .arg( QDir( m_workingPath ).dirName() ); + if ( m_description.isEmpty() ) + return tr( "Running %1 operation." ) + .arg( QDir( m_workingPath ).dirName() ); + else + return m_description; } @@ -284,6 +310,37 @@ PythonJob::exec() scriptNamespace ); bp::object entryPoint = scriptNamespace[ "run" ]; + bp::object prettyNameFunc = bp::getattr(scriptNamespace, "pretty_name", bp::object()); + + cDebug() << "Job file" << scriptFI.absoluteFilePath(); + if ( !prettyNameFunc.is_none() ) + { + bp::extract< std::string > prettyNameResult( prettyNameFunc() ); + if ( prettyNameResult.check() ) + { + m_description = QString::fromStdString( prettyNameResult() ).trimmed(); + } + if ( !m_description.isEmpty() ) + { + cDebug() << "Job" << prettyName() << "(func) ->" << m_description; + emit progress( 0 ); + } + } + + if ( m_description.isEmpty() ) + { + bp::extract< std::string > entryPoint_doc_attr(entryPoint.attr( "__doc__" ) ); + + if ( entryPoint_doc_attr.check() ) + { + m_description = QString::fromStdString( entryPoint_doc_attr() ).trimmed(); + auto i_newline = m_description.indexOf('\n'); + if ( i_newline > 0 ) + m_description.truncate( i_newline ); + cDebug() << "Job" << prettyName() << "(doc) ->" << m_description; + emit progress( 0 ); + } + } bp::object runResult = entryPoint(); diff --git a/src/libcalamares/PythonJob.h b/src/libcalamares/PythonJob.h index 9bc9ddb0b..2f0dbee07 100644 --- a/src/libcalamares/PythonJob.h +++ b/src/libcalamares/PythonJob.h @@ -39,7 +39,7 @@ public: const QString& workingPath, const QVariantMap& moduleConfiguration = QVariantMap(), QObject* parent = nullptr ); - virtual ~PythonJob(); + virtual ~PythonJob() override; QString prettyName() const override; QString prettyStatusMessage() const override; @@ -53,6 +53,7 @@ private: CalamaresPython::Helper* helper(); QString m_scriptFile; QString m_workingPath; + QString m_description; QVariantMap m_configurationMap; }; diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index 9203330ec..595f53a76 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,8 +22,14 @@ #include "PythonHelper.h" #include "utils/Logger.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/CalamaresUtils.h" +#include "GlobalStorage.h" +#include "JobQueue.h" + +#include #include +#include #undef slots #include @@ -39,50 +46,50 @@ mount( const std::string& device_path, const std::string& options ) { return CalamaresUtils::System::instance()-> - mount( QString::fromStdString( device_path ), - QString::fromStdString( mount_point ), - QString::fromStdString( filesystem_name ), - QString::fromStdString( options ) ); + mount( QString::fromStdString( device_path ), + QString::fromStdString( mount_point ), + QString::fromStdString( filesystem_name ), + QString::fromStdString( options ) ); } int target_env_call( const std::string& command, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { return CalamaresUtils::System::instance()-> - targetEnvCall( QString::fromStdString( command ), - QString(), - QString::fromStdString( stdin ), - timeout ); + targetEnvCall( QString::fromStdString( command ), + QString(), + QString::fromStdString( stdin ), + timeout ); } int target_env_call( const bp::list& args, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { QStringList list; for ( int i = 0; i < bp::len( args ); ++i ) { list.append( QString::fromStdString( - bp::extract< std::string >( args[ i ] ) ) ); + bp::extract< std::string >( args[ i ] ) ) ); } return CalamaresUtils::System::instance()-> - targetEnvCall( list, - QString(), - QString::fromStdString( stdin ), - timeout ); + targetEnvCall( list, + QString(), + QString::fromStdString( stdin ), + timeout ); } int check_target_env_call( const std::string& command, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { int ec = target_env_call( command, stdin, timeout ); return _handle_check_target_env_call_error( ec, QString::fromStdString( command ) ); @@ -91,8 +98,8 @@ check_target_env_call( const std::string& command, int check_target_env_call( const bp::list& args, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { int ec = target_env_call( args, stdin, timeout ); if ( !ec ) @@ -102,7 +109,7 @@ check_target_env_call( const bp::list& args, for ( int i = 0; i < bp::len( args ); ++i ) { failedCmdList.append( QString::fromStdString( - bp::extract< std::string >( args[ i ] ) ) ); + bp::extract< std::string >( args[ i ] ) ) ); } return _handle_check_target_env_call_error( ec, failedCmdList.join( ' ' ) ); @@ -111,8 +118,8 @@ check_target_env_call( const bp::list& args, std::string check_target_env_output( const std::string& command, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { QString output; int ec = CalamaresUtils::System::instance()-> @@ -128,15 +135,15 @@ check_target_env_output( const std::string& command, std::string check_target_env_output( const bp::list& args, - const std::string& stdin, - int timeout ) + const std::string& stdin, + int timeout ) { QString output; QStringList list; for ( int i = 0; i < bp::len( args ); ++i ) { list.append( QString::fromStdString( - bp::extract< std::string >( args[ i ] ) ) ); + bp::extract< std::string >( args[ i ] ) ) ); } int ec = CalamaresUtils::System::instance()-> @@ -158,8 +165,8 @@ _handle_check_target_env_call_error( int ec, const QString& cmd ) QString raise = QString( "import subprocess\n" "raise subprocess.CalledProcessError(%1,\"%2\")" ) - .arg( ec ) - .arg( cmd ); + .arg( ec ) + .arg( cmd ); bp::exec( raise.toStdString().c_str() ); bp::throw_error_already_set(); return ec; @@ -176,7 +183,8 @@ debug( const std::string& s ) PythonJobInterface::PythonJobInterface( Calamares::PythonJob* parent ) : m_parent( parent ) { - moduleName = QDir( m_parent->m_workingPath ).dirName().toStdString(); + auto moduleDir = QDir( m_parent->m_workingPath ); + moduleName = moduleDir.dirName().toStdString(); prettyName = m_parent->prettyName().toStdString(); workingPath = m_parent->m_workingPath.toStdString(); configuration = CalamaresPython::variantMapToPyDict( m_parent->m_configurationMap ); @@ -190,4 +198,98 @@ PythonJobInterface::setprogress( qreal progress ) m_parent->emitProgress( progress ); } + +std::string +obscure( const std::string& string ) +{ + return CalamaresUtils::obscure( QString::fromStdString( string ) ).toStdString(); +} + +static QStringList +_gettext_languages() +{ + QStringList languages; + + // There are two ways that Python jobs can be initialised: + // - through JobQueue, in which case that has an instance which holds + // a GlobalStorage object, or + // - through the Python test-script, which initialises its + // own GlobalStoragePythonWrapper, which then holds a + // GlobalStorage object for all of Python. + Calamares::JobQueue* jq = Calamares::JobQueue::instance(); + Calamares::GlobalStorage* gs = jq ? jq->globalStorage() : CalamaresPython::GlobalStoragePythonWrapper::globalStorageInstance(); + + QVariant localeConf_ = gs->value( "localeConf" ); + if ( localeConf_.canConvert< QVariantMap >() ) + { + QVariant lang_ = localeConf_.value< QVariantMap >()[ "LANG" ]; + if ( lang_.canConvert< QString >() ) + { + QString lang = lang_.value< QString >(); + languages.append( lang ); + if ( lang.indexOf( '.' ) > 0 ) + { + lang.truncate( lang.indexOf( '.' ) ); + languages.append( lang ); + } + if ( lang.indexOf( '_' ) > 0 ) + { + lang.truncate( lang.indexOf( '_' ) ); + languages.append( lang ); + } + } + } + return languages; +} + +bp::list +gettext_languages() +{ + bp::list pyList; + for ( auto lang : _gettext_languages() ) + pyList.append( lang.toStdString() ); + return pyList; +} + +static void +_add_localedirs( QStringList& pathList, const QString& candidate ) +{ + if ( !candidate.isEmpty() && !pathList.contains( candidate ) ) + { + pathList.prepend( candidate ); + if ( QDir( candidate ).cd( "lang" ) ) + pathList.prepend( candidate + "/lang" ); + } +} + +bp::object +gettext_path() +{ + // TODO: distinguish between -d runs and normal runs + // TODO: can we detect DESTDIR-installs? + QStringList candidatePaths = QStandardPaths::locateAll( QStandardPaths::GenericDataLocation, "locale", QStandardPaths::LocateDirectory ); + QString extra = QCoreApplication::applicationDirPath(); + _add_localedirs( candidatePaths, extra ); // Often /usr/local/bin + if ( !extra.isEmpty() ) + { + QDir d( extra ); + if ( d.cd( "../share/locale" ) ) // Often /usr/local/bin/../share/locale -> /usr/local/share/locale + _add_localedirs( candidatePaths, d.canonicalPath() ); + } + _add_localedirs( candidatePaths, QDir().canonicalPath() ); // . + + cDebug() << "Standard paths" << candidatePaths; + + for ( auto lang : _gettext_languages() ) + for ( auto localedir : candidatePaths ) + { + QDir ldir( localedir ); + cDebug() << "Checking" << lang << "in" < === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -58,11 +59,16 @@ std::string check_target_env_output( const boost::python::list& args, const std::string& stdin = std::string(), int timeout = 0 ); +std::string obscure( const std::string& string ); -inline int _handle_check_target_env_call_error( int ec, const QString& cmd ); +boost::python::object gettext_path(); + +boost::python::list gettext_languages(); void debug( const std::string& s ); +inline int _handle_check_target_env_call_error( int ec, const QString& cmd ); + class PythonJobInterface { public: diff --git a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp b/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp index cd76f8811..ea8ccce33 100644 --- a/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp +++ b/src/libcalamares/kdsingleapplicationguard/kdsingleapplicationguard.cpp @@ -390,7 +390,7 @@ void ProcessInfo::setArguments( const QStringList & arguments ) return; size_t totalsize = MarkerSize; - Q_FOREACH( const QString& arg, arguments ) + for ( const QString& arg : arguments ) { const QByteArray utf8 = arg.toUtf8(); totalsize += utf8.size() + MarkerSize; @@ -406,7 +406,7 @@ void ProcessInfo::setArguments( const QStringList & arguments ) char* const commandline = this->commandline + reinterpret_cast(reg->commandLines); int argpos = 0; - Q_FOREACH( const QString & arg, arguments ) + for ( const QString & arg : arguments ) { const QByteArray utf8 = arg.toUtf8(); const int required = MarkerSize + utf8.size() + MarkerSize ; @@ -723,7 +723,7 @@ void KDSingleApplicationGuard::Private::create( const QStringList & arguments ) const QString name = QCoreApplication::applicationName(); if ( name.isEmpty() ) { - qWarning( "KDSingleApplicationGuard: QCoreApplication::applicationName must not be emty" ); + qWarning( "KDSingleApplicationGuard: QCoreApplication::applicationName must not be empty" ); return; } diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index 6cb66dfea..db748ec94 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2013-2015, Teo Mrnjavac + * Copyright 2013-2016, Teo Mrnjavac * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser @@ -47,7 +47,7 @@ static bool s_isAppDataDirOverridden = false; static QTranslator* s_brandingTranslator = nullptr; static QTranslator* s_translator = nullptr; -static QTranslator* s_qtTranslator = nullptr; +static QString s_translatorLocaleName; static bool @@ -206,24 +206,14 @@ installTranslator( const QLocale& locale, QCoreApplication::installTranslator( translator ); s_translator = translator; - // Qt translations - translator = new QTranslator( parent ); - if ( translator->load( QString( ":/lang/qt_" ) + localeName ) ) - { - qDebug() << "Translation: Qt: Using system locale:" << localeName; - } - else - { - qDebug() << "Translation: Qt: Using default locale, system locale one not found:" << localeName; - } + s_translatorLocaleName = localeName; +} - if ( s_qtTranslator ) - { - QCoreApplication::removeTranslator( s_qtTranslator ); - delete s_qtTranslator; - } - QCoreApplication::installTranslator( translator ); - s_qtTranslator = translator; + +QString +translatorLocaleName() +{ + return s_translatorLocaleName; } @@ -273,7 +263,7 @@ removeDiacritics( const QString& string ) }; QString output; - foreach ( QChar c, string ) + for ( const QChar &c : string ) { int i = diacriticLetters.indexOf( c ); if ( i < 0 ) @@ -332,7 +322,7 @@ obscure( const QString& string ) void crash() { - volatile int* a = (int*)(NULL); + volatile int* a = nullptr; *a = 1; } diff --git a/src/libcalamares/utils/CalamaresUtils.h b/src/libcalamares/utils/CalamaresUtils.h index 1de5c24e6..66650ff57 100644 --- a/src/libcalamares/utils/CalamaresUtils.h +++ b/src/libcalamares/utils/CalamaresUtils.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2013-2015, Teo Mrnjavac + * Copyright 2013-2016, Teo Mrnjavac * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser @@ -33,16 +33,43 @@ class QDir; class QObject; +/** + * @brief The CalamaresUtils namespace contains utility functions. + */ namespace CalamaresUtils { DLLEXPORT QDir qmlModulesDir(); + + /** + * @brief appDataDir returns the directory with common application data. + * Defaults to CMAKE_INSTALL_FULL_DATADIR (usually /usr/share/calamares). + */ DLLEXPORT QDir appDataDir(); + + /** + * @brief appLogDir returns the directory for Calamares logs. + * Defaults to QStandardPaths::CacheLocation (usually ~/.cache/Calamares). + */ DLLEXPORT QDir appLogDir(); + + /** + * @brief systemLibDir returns the system's lib directory. + * Defaults to CMAKE_INSTALL_FULL_LIBDIR (usually /usr/lib64 or /usr/lib). + */ DLLEXPORT QDir systemLibDir(); + + /** + * @brief installTranslator changes the application language. + * @param locale the new locale. + * @param brandingTranslationsPrefix the branding path prefix, from Calamares::Branding. + * @param parent the parent QObject. + */ DLLEXPORT void installTranslator( const QLocale& locale, const QString& brandingTranslationsPrefix, QObject* parent ); + DLLEXPORT QString translatorLocaleName(); + /** * Override app data dir. Only for testing purposes. */ @@ -51,10 +78,24 @@ namespace CalamaresUtils DLLEXPORT void setQmlModulesDir( const QDir& dir ); + /** + * @brief removeDiacritics replaces letters with diacritics and ligatures with + * alternative forms and digraphs. + * @param string the string to transform. + * @return the output string with plain characters. + */ DLLEXPORT QString removeDiacritics( const QString& string ); + /** + * @brief obscure is a bidirectional obfuscation function, from KStringHandler. + * @param string the input string. + * @return the obfuscated string. + */ DLLEXPORT QString obscure( const QString& string ); + /** + * @brief crash makes Calamares crash immediately. + */ DLLEXPORT void crash(); } diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index 176771e36..656a57c10 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,6 +27,15 @@ #include #include +#ifdef Q_OS_LINUX +#include +#endif + +#ifdef Q_OS_FREEBSD +#include +#include +#endif + namespace CalamaresUtils { @@ -195,8 +205,14 @@ System::targetEnvOutput( const QStringList& args, return -1; } - cLog() << "Finished. Exit code:" << process.exitCode(); - return process.exitCode(); + auto r = process.exitCode(); + cLog() << "Finished. Exit code:" << r; + if ( r != 0 ) + { + cLog() << "Target cmd" << args; + cLog() << "Target out" << output; + } + return r; } @@ -215,50 +231,29 @@ System::targetEnvOutput( const QString& command, } -qint64 -System::getPhysicalMemoryB() -{ - QProcess p; - p.start( "dmidecode", { "-t", "17" } ); - p.waitForFinished(); - QStringList lines = QString::fromLocal8Bit( p.readAllStandardOutput() ).split( '\n' ); - lines = lines.filter( QRegularExpression( "^\\W*Size:\\W\\d*\\WMB" ) ); - if ( !lines.isEmpty() ) - return 0; - - qint64 availableRamMb = 0; - foreach( const QString& line, lines ) - { - bool ok = false; - availableRamMb += line.simplified() - .split( ' ' ) - .value( 1 ) - .toInt( &ok ); - if ( !ok ) - return 0; - } - qint64 availableRam = availableRamMb * 1024 * 1024; - return availableRam; -} - - -qint64 +QPair System::getTotalMemoryB() { - // A line in meminfo looks like this, with {print $2} we grab the second column. - // MemTotal: 8133432 kB +#ifdef Q_OS_LINUX + struct sysinfo i; + int r = sysinfo( &i ); - QProcess p; - p.start( "awk", { "/MemTotal/ {print $2}", "/proc/meminfo" } ); - p.waitForFinished(); - QString memoryLine = p.readAllStandardOutput().simplified(); + if (r) + return qMakePair(0, 0.0); - bool ok = false; - qint64 availableRam = memoryLine.toLongLong( &ok ) * 1024; - if ( !ok ) - return 0; + return qMakePair(quint64( i.mem_unit ) * quint64( i.totalram ), 1.1); +#elif defined( Q_OS_FREEBSD ) + unsigned long memsize; + size_t s = sizeof(memsize); - return availableRam; + int r = sysctlbyname("vm.kmem_size", &memsize, &s, NULL, 0); + if (r) + return qMakePair(0, 0.0); + + return qMakePair(memsize, 1.01); +#else + return qMakePair(0, 0.0); // Unsupported +#endif } diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h index c5e99744b..1ccdfb516 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.h +++ b/src/libcalamares/utils/CalamaresUtilsSystem.h @@ -26,10 +26,20 @@ namespace CalamaresUtils { +/** + * @brief The System class is a singleton with utility functions that perform + * system-specific operations. + */ class DLLEXPORT System : public QObject { Q_OBJECT public: + /** + * @brief System the constructor. Only call this once in a Calamares instance. + * @param doChroot set to true if all external commands should run in the + * target system chroot, otherwise false to run everything on the current system. + * @param parent the QObject parent. + */ explicit System( bool doChroot, QObject* parent = nullptr ); virtual ~System(); @@ -37,6 +47,10 @@ public: /** * Runs the mount utility with the specified parameters. + * @param devicePath the path of the partition to mount. + * @param mountPoint the full path of the target mount point. + * @param filesystemName the name of the filesystem (optional). + * @param options any additional options as passed to mount -o (optional). * @returns the program's exit code, or: * -1 = QProcess crash * -2 = QProcess cannot start @@ -49,6 +63,13 @@ public: /** * Runs the specified command in the chroot of the target system. + * @param args the call with arguments, as a string list. + * @param workingPath the current working directory for the QProcess + * call (optional). + * @param stdInput the input string to send to the running process as + * standard input (optional). + * @param timeoutSec the timeout after which the process will be + * killed (optional, default is 0 i.e. no timeout). * @returns the program's exit code, or: * -1 = QProcess crash * -2 = QProcess cannot start @@ -77,9 +98,21 @@ public: const QString& stdInput = QString(), int timeoutSec = 0 ); - DLLEXPORT qint64 getPhysicalMemoryB(); //Better guess, doesn't work in VirualBox - - DLLEXPORT qint64 getTotalMemoryB(); //Always underguessed, but always works on Linux + /** + * @brief getTotalMemoryB returns the total main memory, in bytes. + * + * Since it is difficult to get the RAM memory size exactly -- either + * by reading information from the DIMMs, which may fail on virtual hosts + * or from asking the kernel, which doesn't report some memory areas -- + * this returns a pair of guessed-size (in bytes) and a "guesstimate factor" + * which says how good the guess is. Generally, assume the *real* memory + * available is size * guesstimate. + * + * If nothing can be found, returns a 0 size and 0 guesstimate. + * + * @return size, guesstimate-factor + */ + DLLEXPORT QPair getTotalMemoryB(); private: static System* s_instance; diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 4acafa1cf..7caf2a18c 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -2,6 +2,7 @@ * * Copyright 2010-2011, Christian Muehlhaeuser * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,9 +39,9 @@ using namespace std; -ofstream logfile; -static int s_threshold = -1; -QMutex s_mutex; +static ofstream logfile; +static unsigned int s_threshold = 0; +static QMutex s_mutex; namespace Logger { @@ -48,20 +49,22 @@ namespace Logger static void log( const char* msg, unsigned int debugLevel, bool toDisk = true ) { - if ( s_threshold < 0 ) + if ( !s_threshold ) { if ( qApp->arguments().contains( "--debug" ) || qApp->arguments().contains( "-d" ) ) s_threshold = LOGVERBOSE; else - #ifdef QT_NO_DEBUG +#ifdef QT_NO_DEBUG s_threshold = RELEASE_LEVEL_THRESHOLD; - #else +#else s_threshold = DEBUG_LEVEL_THRESHOLD; - #endif +#endif + // Comparison is < threshold, below + ++s_threshold; } - if ( toDisk || (int)debugLevel <= s_threshold ) + if ( toDisk || debugLevel < s_threshold ) { QMutexLocker lock( &s_mutex ); @@ -77,7 +80,7 @@ log( const char* msg, unsigned int debugLevel, bool toDisk = true ) logfile.flush(); } - if ( debugLevel <= LOGEXTRA || (int)debugLevel <= s_threshold ) + if ( debugLevel <= LOGEXTRA || debugLevel < s_threshold ) { QMutexLocker lock( &s_mutex ); @@ -95,6 +98,8 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QS { static QMutex s_mutex; + Q_UNUSED( context ); + QByteArray ba = msg.toUtf8(); const char* message = ba.constData(); @@ -105,14 +110,12 @@ CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QS log( message, LOGVERBOSE ); break; + case QtInfoMsg: + log( message, 1 ); + break; + case QtCriticalMsg: - log( message, 0 ); - break; - case QtWarningMsg: - log( message, 0 ); - break; - case QtFatalMsg: log( message, 0 ); break; @@ -172,3 +175,6 @@ CLog::~CLog() log( m_msg.toUtf8().data(), m_debugLevel ); } +Logger::CDebug::~CDebug() +{ +} diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index 466ba7be5..0cf4b4ad3 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -2,6 +2,7 @@ * * Copyright 2010-2011, Christian Muehlhaeuser * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,9 +49,10 @@ namespace Logger CDebug( unsigned int debugLevel = LOGDEBUG ) : CLog( debugLevel ) { } + virtual ~CDebug(); }; - DLLEXPORT void CalamaresLogHandler( QtMsgType type, const char* msg ); + DLLEXPORT void CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QString& msg ); DLLEXPORT void setupLogfile(); DLLEXPORT QString logFile(); } diff --git a/src/libcalamares/utils/PluginFactory.cpp b/src/libcalamares/utils/PluginFactory.cpp new file mode 100644 index 000000000..b1c3a0793 --- /dev/null +++ b/src/libcalamares/utils/PluginFactory.cpp @@ -0,0 +1,131 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot + * + * Based on KPluginFactory from KCoreAddons, KDE project + * Copyright 2007, Matthias Kretz + * Copyright 2007, Bernhard Loos + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PluginFactory.h" +#include "PluginFactory_p.h" + +#include +#include + +Q_GLOBAL_STATIC( QObjectCleanupHandler, factorycleanup ) + +extern int kLibraryDebugArea(); + +namespace Calamares +{ + +PluginFactory::PluginFactory() + : d_ptr( new PluginFactoryPrivate ) +{ + Q_D( PluginFactory ); + d->q_ptr = this; + + factorycleanup()->add( this ); +} + +PluginFactory::PluginFactory( PluginFactoryPrivate& d ) + : d_ptr( &d ) +{ + factorycleanup()->add( this ); +} + +PluginFactory::~PluginFactory() +{ + delete d_ptr; +} + +void PluginFactory::doRegisterPlugin( const QString& keyword, const QMetaObject* metaObject, CreateInstanceFunction instanceFunction ) +{ + Q_D( PluginFactory ); + + Q_ASSERT( metaObject ); + + // we allow different interfaces to be registered without keyword + if ( !keyword.isEmpty() ) + { + if ( d->createInstanceHash.contains( keyword ) ) + qWarning() << "A plugin with the keyword" << keyword << "was already registered. A keyword must be unique!"; + d->createInstanceHash.insert( keyword, PluginFactoryPrivate::Plugin( metaObject, instanceFunction ) ); + } + else + { + const QList clashes( d->createInstanceHash.values( keyword ) ); + const QMetaObject* superClass = metaObject->superClass(); + if ( superClass ) + { + for ( const PluginFactoryPrivate::Plugin& plugin : clashes ) + { + for ( const QMetaObject* otherSuper = plugin.first->superClass(); otherSuper; + otherSuper = otherSuper->superClass() ) + { + if ( superClass == otherSuper ) + qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; + } + } + } + for ( const PluginFactoryPrivate::Plugin& plugin : clashes ) + { + superClass = plugin.first->superClass(); + if ( superClass ) + { + for ( const QMetaObject* otherSuper = metaObject->superClass(); otherSuper; + otherSuper = otherSuper->superClass() ) + { + if ( superClass == otherSuper ) + qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; + } + } + } + d->createInstanceHash.insertMulti( keyword, PluginFactoryPrivate::Plugin( metaObject, instanceFunction ) ); + } +} + +QObject* PluginFactory::create( const char* iface, QWidget* parentWidget, QObject* parent, const QString& keyword ) +{ + Q_D( PluginFactory ); + + QObject* obj = nullptr; + + const QList candidates( d->createInstanceHash.values( keyword ) ); + // for !keyword.isEmpty() candidates.count() is 0 or 1 + + for ( const PluginFactoryPrivate::Plugin& plugin : candidates ) + { + for ( const QMetaObject* current = plugin.first; current; current = current->superClass() ) + { + if ( 0 == qstrcmp( iface, current->className() ) ) + { + if ( obj ) + qWarning() << "ambiguous interface requested from a DSO containing more than one plugin"; + obj = plugin.second( parentWidget, parent ); + break; + } + } + } + + if ( obj ) + emit objectCreated( obj ); + return obj; +} + +} diff --git a/src/libcalamaresui/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h similarity index 82% rename from src/libcalamaresui/utils/PluginFactory.h rename to src/libcalamares/utils/PluginFactory.h index a77d9594f..55c44249c 100644 --- a/src/libcalamaresui/utils/PluginFactory.h +++ b/src/libcalamares/utils/PluginFactory.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Based on KPluginFactory from KCoreAddons, KDE project * Copyright 2007, Matthias Kretz @@ -23,7 +24,7 @@ #ifndef CALAMARESPLUGINFACTORY_H #define CALAMARESPLUGINFACTORY_H -#include "UiDllMacro.h" +#include "DllMacro.h" #include #include @@ -193,13 +194,13 @@ namespace Calamares * } * \endcode * - * \author Matthias Kretz - * \author Bernhard Loos + * \author Matthias Kretz + * \author Bernhard Loos */ -class UIDLLEXPORT PluginFactory : public QObject +class DLLEXPORT PluginFactory : public QObject { Q_OBJECT - Q_DECLARE_PRIVATE(PluginFactory) + Q_DECLARE_PRIVATE( PluginFactory ) public: /** * This constructor creates a factory for a plugin. @@ -222,7 +223,7 @@ public: * \returns A pointer to the created object is returned, or 0 if an error occurred. */ template - T *create(QObject *parent = 0); + T* create( QObject* parent = nullptr ); /** * Use this method to create an object. It will try to create an object which inherits @@ -235,34 +236,35 @@ public: * \returns A pointer to the created object is returned, or 0 if an error occurred. */ template - T *create(const QString &keyword, QObject *parent = 0); + T* create( const QString& keyword, QObject* parent = nullptr ); Q_SIGNALS: - void objectCreated(QObject *object); + void objectCreated( QObject* object ); protected: /** * Function pointer type to a function that instantiates a plugin. */ - typedef QObject *(*CreateInstanceFunction)(QWidget *, QObject *); + typedef QObject* ( *CreateInstanceFunction )( QWidget*, QObject* ); /** * This is used to detect the arguments need for the constructor of plugin classes. * You can inherit it, if you want to add new classes and still keep support for the old ones. */ template - struct InheritanceChecker { - CreateInstanceFunction createInstanceFunction(QWidget *) + struct InheritanceChecker + { + CreateInstanceFunction createInstanceFunction( QWidget* ) { return &createInstance; } - CreateInstanceFunction createInstanceFunction(...) + CreateInstanceFunction createInstanceFunction( ... ) { return &createInstance; } }; - explicit PluginFactory(PluginFactoryPrivate &dd); + explicit PluginFactory( PluginFactoryPrivate& dd ); /** * Registers a plugin with the factory. Call this function from the constructor of the @@ -292,14 +294,14 @@ protected: * \endcode */ template - void registerPlugin(const QString &keyword = QString(), - CreateInstanceFunction instanceFunction - = InheritanceChecker().createInstanceFunction(reinterpret_cast(0))) + void registerPlugin( const QString& keyword = QString(), + CreateInstanceFunction instanceFunction + = InheritanceChecker().createInstanceFunction( reinterpret_cast( 0 ) ) ) { - doRegisterPlugin(keyword, &T::staticMetaObject, instanceFunction); + doRegisterPlugin( keyword, &T::staticMetaObject, instanceFunction ); } - PluginFactoryPrivate *const d_ptr; + PluginFactoryPrivate* const d_ptr; /** * This function is called when the factory asked to create an Object. @@ -311,60 +313,58 @@ protected: * was requested. E.g. for KCModule plugins this string will be "KCModule". * \param parentWidget Only used if the requested plugin is a KPart. * \param parent The parent object for the plugin object. - * \param args A plugin specific list of arbitrary arguments. * \param keyword A string that uniquely identifies the plugin. If a KService is used this * keyword is read from the X-KDE-PluginKeyword entry in the .desktop file. */ - virtual QObject *create(const char *iface, QWidget *parentWidget, QObject *parent, const QString &keyword); + virtual QObject* create( const char* iface, QWidget* parentWidget, QObject* parent, const QString& keyword ); template - static QObject *createInstance(QWidget *parentWidget, QObject *parent) + static QObject* createInstance( QWidget* parentWidget, QObject* parent ) { - Q_UNUSED(parentWidget); - ParentType *p = 0; - if (parent) { - p = qobject_cast(parent); - Q_ASSERT(p); + Q_UNUSED( parentWidget ); + ParentType* p = nullptr; + if ( parent ) + { + p = qobject_cast( parent ); + Q_ASSERT( p ); } - return new impl(p); + return new impl( p ); } private: - void doRegisterPlugin(const QString &keyword, const QMetaObject *metaObject, CreateInstanceFunction instanceFunction); + void doRegisterPlugin( const QString& keyword, const QMetaObject* metaObject, CreateInstanceFunction instanceFunction ); }; template -inline T *PluginFactory::create(QObject *parent) +inline T* PluginFactory::create( QObject* parent ) { - QObject *o = create(T::staticMetaObject.className(), - parent && parent->isWidgetType() ? reinterpret_cast(parent) : 0, - parent, - QString()); + QObject* o = create( T::staticMetaObject.className(), + parent && parent->isWidgetType() ? reinterpret_cast( parent ) : nullptr, + parent, + QString() ); - T *t = qobject_cast(o); - if (!t) { + T* t = qobject_cast( o ); + if ( !t ) delete o; - } return t; } template -inline T *PluginFactory::create(const QString &keyword, QObject *parent) +inline T* PluginFactory::create( const QString& keyword, QObject* parent ) { - QObject *o = create(T::staticMetaObject.className(), - parent && parent->isWidgetType() ? reinterpret_cast(parent) : 0, - parent, - keyword); + QObject* o = create( T::staticMetaObject.className(), + parent && parent->isWidgetType() ? reinterpret_cast( parent ) : nullptr, + parent, + keyword ); - T *t = qobject_cast(o); - if (!t) { + T* t = qobject_cast( o ); + if ( !t ) delete o; - } return t; } } -Q_DECLARE_INTERFACE(Calamares::PluginFactory, CalamaresPluginFactory_iid) +Q_DECLARE_INTERFACE( Calamares::PluginFactory, CalamaresPluginFactory_iid ) #endif // CALAMARESPLUGINFACTORY_H diff --git a/src/libcalamaresui/utils/PluginFactory_p.h b/src/libcalamares/utils/PluginFactory_p.h similarity index 100% rename from src/libcalamaresui/utils/PluginFactory_p.h rename to src/libcalamares/utils/PluginFactory_p.h diff --git a/src/libcalamares/utils/Retranslator.cpp b/src/libcalamares/utils/Retranslator.cpp index d0aa03e83..1f4982937 100644 --- a/src/libcalamares/utils/Retranslator.cpp +++ b/src/libcalamares/utils/Retranslator.cpp @@ -29,7 +29,7 @@ Retranslator::attachRetranslator( QObject* parent, std::function< void ( void ) > retranslateFunc ) { Retranslator* r = nullptr; - foreach ( QObject* child, parent->children() ) + for ( QObject* child : parent->children() ) { r = qobject_cast< Retranslator* >( child ); if ( r ) diff --git a/src/libcalamares/utils/Units.h b/src/libcalamares/utils/Units.h new file mode 100644 index 000000000..391d67194 --- /dev/null +++ b/src/libcalamares/utils/Units.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef LIBCALAMARES_UTILS_UNITS_H +#define LIBCALAMARES_UTILS_UNITS_H + +#include + +namespace CalamaresUtils +{ + +/** User defined literals, 1_MiB is 1 MibiByte (= 2^20 bytes) */ +constexpr qint64 operator ""_MiB( unsigned long long m ) +{ + return qint64(m) * 1024 * 1024; +} + +/** User defined literals, 1_GiB is 1 GibiByte (= 2^30 bytes) */ +constexpr qint64 operator ""_GiB( unsigned long long m ) +{ + return operator ""_MiB(m) * 1024; +} + +constexpr qint64 MiBtoBytes( unsigned long long m ) +{ + return operator ""_MiB( m ); +} + +constexpr qint64 GiBtoBytes( unsigned long long m ) +{ + return operator ""_GiB( m ); +} + +constexpr qint64 MiBToBytes( double m ) +{ + return qint64(m * 1024 * 1024); +} + +constexpr qint64 GiBtoBytes( double m ) +{ + return qint64(m * 1024 * 1024 * 1024); +} + +constexpr int BytesToMiB( qint64 b ) +{ + return int( b / 1024 / 1024 ); +} + +} // namespace +#endif diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index b6cf09321..6d559c6fb 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,7 +45,7 @@ Branding::instance() } -QStringList Branding::s_stringEntryStrings = +const QStringList Branding::s_stringEntryStrings = { "productName", "version", @@ -60,18 +61,19 @@ QStringList Branding::s_stringEntryStrings = }; -QStringList Branding::s_imageEntryStrings = +const QStringList Branding::s_imageEntryStrings = { "productLogo", "productIcon", "productWelcome" }; -QStringList Branding::s_styleEntryStrings = +const QStringList Branding::s_styleEntryStrings = { "sidebarBackground", "sidebarText", - "sidebarTextSelect" + "sidebarTextSelect", + "sidebarTextHighlight" }; @@ -79,6 +81,9 @@ Branding::Branding( const QString& brandingFilePath, QObject* parent ) : QObject( parent ) , m_descriptorPath( brandingFilePath ) + , m_componentName() + , m_welcomeStyleCalamares( false ) + , m_welcomeExpandingLogo( true ) { cDebug() << "Using Calamares branding file at" << brandingFilePath; QFile file( brandingFilePath ); @@ -105,6 +110,9 @@ Branding::Branding( const QString& brandingFilePath, if ( !doc[ "strings" ].IsMap() ) bail( "Syntax error in strings map." ); + m_welcomeStyleCalamares = doc[ "welcomeStyleCalamares" ].as< bool >( false ); + m_welcomeExpandingLogo = doc[ "welcomeExpandingLogo" ].as< bool >( true ); + QVariantMap strings = CalamaresUtils::yamlMapToVariant( doc[ "strings" ] ).toMap(); m_strings.clear(); @@ -171,7 +179,7 @@ Branding::Branding( const QString& brandingFilePath, } catch ( YAML::Exception& e ) { - cDebug() << "WARNING: YAML parser error " << e.what(); + cDebug() << "WARNING: YAML parser error " << e.what() << "in" << file.fileName(); } QDir translationsDir( componentDir.filePath( "lang" ) ); @@ -188,7 +196,14 @@ Branding::Branding( const QString& brandingFilePath, } s_instance = this; - cDebug() << "Loaded branding component" << m_componentName; + if ( m_componentName.isEmpty() ) + { + cDebug() << "WARNING: failed to load component from" << brandingFilePath; + } + else + { + cDebug() << "Loaded branding component" << m_componentName; + } } @@ -263,12 +278,11 @@ Branding::slideshowPath() const return m_slideshowPath; } - void Branding::setGlobals( GlobalStorage* globalStorage ) const { QVariantMap brandingMap; - foreach ( const QString& key, s_stringEntryStrings ) + for ( const QString& key : s_stringEntryStrings ) brandingMap.insert( key, m_strings.value( key ) ); globalStorage->insert( "branding", brandingMap ); } diff --git a/src/libcalamaresui/Branding.h b/src/libcalamaresui/Branding.h index 45afc8531..c56db2db2 100644 --- a/src/libcalamaresui/Branding.h +++ b/src/libcalamaresui/Branding.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,6 +37,11 @@ class UIDLLEXPORT Branding : public QObject { Q_OBJECT public: + /** + * Descriptive strings in the configuration file. use + * e.g. *Branding::ProductName to get the string value for + * the product name. + */ enum StringEntry : short { ProductName, @@ -62,7 +68,8 @@ public: { SidebarBackground, SidebarText, - SidebarTextSelect + SidebarTextSelect, + SidebarTextHighlight }; static Branding* instance(); @@ -81,6 +88,9 @@ public: QPixmap image( Branding::ImageEntry imageEntry, const QSize& size ) const; QString slideshowPath() const; + bool welcomeStyleCalamares() const { return m_welcomeStyleCalamares; } + bool welcomeExpandingLogo() const { return m_welcomeExpandingLogo; } + /** * Creates a map called "branding" in the global storage, and inserts an * entry for each of the branding strings. This makes the branding @@ -91,9 +101,9 @@ public: private: static Branding* s_instance; - static QStringList s_stringEntryStrings; - static QStringList s_imageEntryStrings; - static QStringList s_styleEntryStrings; + static const QStringList s_stringEntryStrings; + static const QStringList s_imageEntryStrings; + static const QStringList s_styleEntryStrings; void bail( const QString& message ); @@ -104,8 +114,13 @@ private: QMap< QString, QString > m_style; QString m_slideshowPath; QString m_translationsPathPrefix; + + bool m_welcomeStyleCalamares; + bool m_welcomeExpandingLogo; }; +template inline QString operator*(U e) { return Branding::instance()->string( e ); } + } #endif // BRANDING_H diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 939d05ad7..ccc46f2f3 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -1,6 +1,7 @@ -set( CALAMARESUI_LIBRARY_TARGET calamaresui ) +project( libcalamaresui CXX ) -list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES +set( calamaresui_SOURCES + modulesystem/CppJobModule.cpp modulesystem/Module.cpp modulesystem/ModuleManager.cpp modulesystem/ProcessJobModule.cpp @@ -14,14 +15,12 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES utils/qjsonmodel.cpp utils/qjsonitem.cpp - utils/PluginFactory.cpp - viewpages/AbstractPage.cpp viewpages/ViewStep.cpp widgets/ClickableLabel.cpp widgets/FixedAspectRatioLabel.cpp - widgets/QtWaitingSpinner.cpp + widgets/waitingspinnerwidget.cpp widgets/WaitingWidget.cpp ExecutionViewStep.cpp @@ -30,24 +29,52 @@ list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES ViewManager.cpp ) -list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_UI +# Don't warn about third-party sources +mark_thirdparty_code( + utils/ImageRegistry.cpp + utils/qjsonitem.cpp + utils/qjsonmodel.cpp + widgets/waitingspinnerwidget.cpp +) + +set( calamaresui_UI utils/DebugWindow.ui ) if( WITH_PYTHON ) - list( APPEND ${CALAMARESUI_LIBRARY_TARGET}_SOURCES + list( APPEND calamaresui_SOURCES modulesystem/PythonJobModule.cpp ) endif() -calamares_add_library( ${CALAMARESUI_LIBRARY_TARGET} - SOURCES ${${CALAMARESUI_LIBRARY_TARGET}_SOURCES} - UI ${${CALAMARESUI_LIBRARY_TARGET}_UI} +if( WITH_PYTHONQT ) + include_directories(${PYTHON_INCLUDE_DIRS}) + include_directories(${PYTHONQT_INCLUDE_DIR}) + + list( APPEND calamaresui_SOURCES + modulesystem/PythonQtViewModule.cpp + utils/PythonQtUtils.cpp + viewpages/PythonQtJob.cpp + viewpages/PythonQtViewStep.cpp + viewpages/PythonQtGlobalStorageWrapper.cpp + viewpages/PythonQtUtilsWrapper.cpp + ) + set( OPTIONAL_PRIVATE_LIBRARIES + ${OPTIONAL_PRIVATE_LIBRARIES} + ${PYTHON_LIBRARIES} + ${PYTHONQT_LIBRARIES} + ) +endif() + +calamares_add_library( calamaresui + SOURCES ${calamaresui_SOURCES} + UI ${calamaresui_UI} EXPORT_MACRO UIDLLEXPORT_PRO - LINK_LIBRARIES - yaml-cpp + LINK_PRIVATE_LIBRARIES + ${YAMLCPP_LIBRARY} Qt5::Svg - Qt5::QuickWidgets + Qt5::QuickWidgets + ${OPTIONAL_PRIVATE_LIBRARIES} RESOURCES libcalamaresui.qrc EXPORT CalamaresLibraryDepends VERSION ${CALAMARES_VERSION_SHORT} diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index fb43122b9..37c2318d0 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -165,7 +165,7 @@ ExecutionViewStep::appendJobModuleInstanceKey( const QString& instanceKey ) void ExecutionViewStep::updateFromJobQueue( qreal percent, const QString& message ) { - m_progressBar->setValue( percent * m_progressBar->maximum() ); + m_progressBar->setValue( int( percent * m_progressBar->maximum() ) ); m_label->setText( message ); } diff --git a/src/libcalamaresui/Settings.cpp b/src/libcalamaresui/Settings.cpp index 362ea1b45..ce01bf42d 100644 --- a/src/libcalamaresui/Settings.cpp +++ b/src/libcalamaresui/Settings.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,8 +47,8 @@ Settings::Settings( const QString& settingsFilePath, QObject* parent ) : QObject( parent ) , m_debug( debugMode ) - , m_promptInstall( false ) , m_doChroot( true ) + , m_promptInstall( false ) { cDebug() << "Using Calamares settings file at" << settingsFilePath; QFile file( settingsFilePath ); @@ -98,7 +99,8 @@ Settings::Settings( const QString& settingsFilePath, = CalamaresUtils::yamlToVariant( config[ "instances" ] ).toList(); if ( instancesV.type() == QVariant::List ) { - foreach ( const QVariant& instancesVListItem, instancesV.toList() ) + const auto instances = instancesV.toList(); + for ( const QVariant& instancesVListItem : instances ) { if ( instancesVListItem.type() != QVariant::Map ) continue; @@ -123,7 +125,8 @@ Settings::Settings( const QString& settingsFilePath, QVariant sequenceV = CalamaresUtils::yamlToVariant( config[ "sequence" ] ); Q_ASSERT( sequenceV.type() == QVariant::List ); - foreach ( const QVariant& sequenceVListItem, sequenceV.toList() ) + const auto sequence = sequenceV.toList(); + for ( const QVariant& sequenceVListItem : sequence ) { if ( sequenceVListItem.type() != QVariant::Map ) continue; @@ -153,7 +156,7 @@ Settings::Settings( const QString& settingsFilePath, } catch ( YAML::Exception& e ) { - cDebug() << "WARNING: YAML parser error " << e.what(); + cDebug() << "WARNING: YAML parser error " << e.what() << "in" << file.fileName(); } } else diff --git a/src/libcalamaresui/Settings.h b/src/libcalamaresui/Settings.h index 58f2a61b2..4c99eb811 100644 --- a/src/libcalamaresui/Settings.h +++ b/src/libcalamaresui/Settings.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,9 +58,6 @@ public: private: static Settings* s_instance; - bool m_debug; - bool m_doChroot; - QStringList m_modulesSearchPaths; QList< QMap< QString, QString > > m_customModuleInstances; @@ -67,6 +65,8 @@ private: QString m_brandingComponentName; + bool m_debug; + bool m_doChroot; bool m_promptInstall; }; diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index ad433d2fa..7b5df155b 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,13 +43,20 @@ ViewManager::instance() return s_instance; } -ViewManager::ViewManager( QObject* parent ) - : QObject( parent ) - , m_widget( new QWidget() ) - , m_currentStep( 0 ) +ViewManager* +ViewManager::instance( QObject* parent ) +{ + Q_ASSERT( !s_instance ); + s_instance = new ViewManager( parent ); + return s_instance; +} + +ViewManager::ViewManager( QObject* parent ) + : QObject( parent ) + , m_currentStep( 0 ) + , m_widget( new QWidget() ) { Q_ASSERT( !s_instance ); - s_instance = this; QBoxLayout* mainLayout = new QVBoxLayout; m_widget->setLayout( mainLayout ); @@ -65,6 +73,7 @@ ViewManager::ViewManager( QObject* parent ) m_back->setText( tr( "&Back" ) ); m_next->setText( tr( "&Next" ) ); m_quit->setText( tr( "&Cancel" ) ); + m_quit->setToolTip( tr( "Cancel installation without changing the system." ) ); ) QBoxLayout* bottomLayout = new QHBoxLayout; @@ -86,19 +95,21 @@ ViewManager::ViewManager( QObject* parent ) if ( !( m_currentStep == m_steps.count() -1 && m_steps.last()->isAtEnd() ) ) { - int response = QMessageBox::question( m_widget, + QMessageBox mb( QMessageBox::Question, tr( "Cancel installation?" ), tr( "Do you really want to cancel the current install process?\n" "The installer will quit and all changes will be lost." ), QMessageBox::Yes | QMessageBox::No, - QMessageBox::No ); + m_widget ); + mb.setDefaultButton( QMessageBox::No ); + mb.button( QMessageBox::Yes )->setText( tr( "&Yes" ) ); + mb.button( QMessageBox::No )->setText( tr( "&No" ) ); + int response = mb.exec(); if ( response == QMessageBox::Yes ) qApp->quit(); } else // Means we're at the end, no need to confirm. - { qApp->quit(); - } } ); connect( JobQueue::instance(), &JobQueue::failed, @@ -132,16 +143,15 @@ ViewManager::addViewStep( ViewStep* step ) void -ViewManager::insertViewStep( int before, ViewStep* step) +ViewManager::insertViewStep( int before, ViewStep* step ) { m_steps.insert( before, step ); QLayout* layout = step->widget()->layout(); if ( layout ) - { layout->setContentsMargins( 0, 0, 0, 0 ); - } m_stack->insertWidget( before, step->widget() ); + connect( step, &ViewStep::enlarge, this, &ViewManager::enlarge ); connect( step, &ViewStep::nextStatusChanged, this, [this]( bool status ) { @@ -165,22 +175,21 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail cLog() << "- message:" << message; cLog() << "- details:" << details; - QMessageBox msgBox; - msgBox.setIcon( QMessageBox::Critical ); - msgBox.setWindowTitle( tr("Error") ); - msgBox.setText( "" + tr( "Installation Failed" ) + "" ); - msgBox.setStandardButtons( QMessageBox::Close ); + QMessageBox* msgBox = new QMessageBox(); + msgBox->setIcon( QMessageBox::Critical ); + msgBox->setWindowTitle( tr( "Error" ) ); + msgBox->setText( "" + tr( "Installation Failed" ) + "" ); + msgBox->setStandardButtons( QMessageBox::Close ); + msgBox->button( QMessageBox::Close )->setText( tr( "&Close" ) ); QString text = "

" + message + "

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

" + details + "

"; - } - msgBox.setInformativeText( text ); + msgBox->setInformativeText( text ); - msgBox.exec(); - cLog() << "Calamares will now quit."; - qApp->quit(); + connect( msgBox, &QMessageBox::buttonClicked, qApp, &QApplication::quit ); + cLog() << "Calamares will quit when the dialog closes."; + msgBox->show(); } @@ -216,8 +225,8 @@ ViewManager::next() // and right before switching to an execution phase. // Depending on Calamares::Settings, we show an "are you sure" prompt or not. if ( Calamares::Settings::instance()->showPromptBeforeExecution() && - m_currentStep + 1 < m_steps.count() && - qobject_cast< ExecutionViewStep* >( m_steps.at( m_currentStep + 1 ) ) ) + m_currentStep + 1 < m_steps.count() && + qobject_cast< ExecutionViewStep* >( m_steps.at( m_currentStep + 1 ) ) ) { int reply = QMessageBox::question( m_widget, @@ -225,10 +234,8 @@ ViewManager::next() tr( "The %1 installer is about to make changes to your " "disk in order to install %2.
You will not be able " "to undo these changes." ) - .arg( Calamares::Branding::instance()->string( - Calamares::Branding::ShortProductName ) ) - .arg( Calamares::Branding::instance()->string( - Calamares::Branding::ShortVersionedName ) ), + .arg( *Calamares::Branding::ShortProductName ) + .arg( *Calamares::Branding::ShortVersionedName ), tr( "&Install now" ), tr( "Go &back" ), QString(), @@ -251,17 +258,16 @@ ViewManager::next() } } else - { step->next(); - } m_next->setEnabled( !executing && m_steps.at( m_currentStep )->isNextEnabled() ); m_back->setEnabled( !executing && m_steps.at( m_currentStep )->isBackEnabled() ); if ( m_currentStep == m_steps.count() -1 && - m_steps.last()->isAtEnd() ) + m_steps.last()->isAtEnd() ) { - m_quit->setText( tr( "&Quit" ) ); + m_quit->setText( tr( "&Done" ) ); + m_quit->setToolTip( tr( "The installation is complete. Close the installer." ) ); } } @@ -279,9 +285,7 @@ ViewManager::back() emit currentStepChanged(); } else if ( !step->isAtBeginning() ) - { step->back(); - } else return; m_next->setEnabled( m_steps.at( m_currentStep )->isNextEnabled() ); @@ -292,7 +296,10 @@ ViewManager::back() if ( !( m_currentStep == m_steps.count() -1 && m_steps.last()->isAtEnd() ) ) + { m_quit->setText( tr( "&Cancel" ) ); + m_quit->setToolTip( tr( "Cancel installation without changing the system." ) ); + } } } diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index 01599d6a7..38ddda70a 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,34 +34,90 @@ namespace Calamares class ViewStep; class ExecutionViewStep; +/** + * @brief The ViewManager class handles progression through view pages. + * @note Singleton object, only use through ViewManager::instance(). + */ class UIDLLEXPORT ViewManager : public QObject { Q_OBJECT public: + /** + * @brief instance access to the ViewManager singleton. + * @return pointer to the singleton instance. + */ static ViewManager* instance(); + static ViewManager* instance( QObject* parent ); - explicit ViewManager( QObject* parent = nullptr ); - virtual ~ViewManager(); - + /** + * @brief centralWidget always returns the central widget in the Calamares main + * window. + * @return a pointer to the active QWidget (usually a wizard page provided by a + * view module). + */ QWidget* centralWidget(); + /** + * @brief addViewStep appends a view step to the roster. + * @param step a pointer to the ViewStep object to add. + * @note a ViewStep is the active instance of a view module, it aggregates one + * or more view pages, plus zero or more jobs which may be created at runtime. + */ void addViewStep( ViewStep* step ); + /** + * @brief viewSteps returns the list of currently present view steps. + * @return the ViewStepList. + * This should only return an empty list before startup is complete. + */ ViewStepList viewSteps() const; + + /** + * @brief currentStep returns the currently active ViewStep, i.e. the ViewStep + * which owns the currently visible view page. + * @return the active ViewStep. Do not confuse this with centralWidget(). + * @see ViewStep::centralWidget + */ ViewStep* currentStep() const; + + /** + * @brief currentStepIndex returns the index of the currently active ViewStep. + * @return the index. + */ int currentStepIndex() const; public slots: + /** + * @brief next moves forward to the next page of the current ViewStep (if any), + * or to the first page of the next ViewStep if the current ViewStep doesn't + * have any more pages. + */ void next(); + + /** + * @brief back moves backward to the previous page of the current ViewStep (if any), + * or to the last page of the previous ViewStep if the current ViewStep doesn't + * have any pages before the current one. + */ void back(); + /** + * @brief onInstallationFailed displays an error message when a fatal failure + * happens in a ViewStep. + * @param message the error string. + * @param details the details string. + */ void onInstallationFailed( const QString& message, const QString& details ); signals: void currentStepChanged(); + void enlarge( QSize enlarge ) const; // See ViewStep::enlarge() private: + explicit ViewManager( QObject* parent = nullptr ); + virtual ~ViewManager(); + void insertViewStep( int before, ViewStep* step ); static ViewManager* s_instance; diff --git a/src/libcalamaresui/modulesystem/CppJobModule.cpp b/src/libcalamaresui/modulesystem/CppJobModule.cpp new file mode 100644 index 000000000..6ff846027 --- /dev/null +++ b/src/libcalamaresui/modulesystem/CppJobModule.cpp @@ -0,0 +1,128 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * Copyright 2016, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "CppJobModule.h" + +#include "utils/PluginFactory.h" +#include "utils/Logger.h" +#include "CppJob.h" + +#include +#include + +namespace Calamares { + + +Module::Type +CppJobModule::type() const +{ + return Job; +} + + +Module::Interface +CppJobModule::interface() const +{ + return QtPluginInterface; +} + + +void +CppJobModule::loadSelf() +{ + if ( m_loader ) + { + PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); + if ( !pf ) + { + cDebug() << Q_FUNC_INFO << m_loader->errorString(); + return; + } + + CppJob *cppJob = pf->create< Calamares::CppJob >(); + if ( !cppJob ) + { + cDebug() << Q_FUNC_INFO << m_loader->errorString(); + return; + } +// cDebug() << "CppJobModule loading self for instance" << instanceKey() +// << "\nCppJobModule at address" << this +// << "\nCalamares::PluginFactory at address" << pf +// << "\nCppJob at address" << cppJob; + + cppJob->setModuleInstanceKey( instanceKey() ); + cppJob->setConfigurationMap( m_configurationMap ); + m_job = Calamares::job_ptr( static_cast< Calamares::Job * >( cppJob ) ); + m_loaded = true; + cDebug() << "CppJobModule" << instanceKey() << "loading complete."; + } +} + + +QList< job_ptr > +CppJobModule::jobs() const +{ + return QList< job_ptr >() << m_job; +} + + +void +CppJobModule::initFrom( const QVariantMap& moduleDescriptor ) +{ + Module::initFrom( moduleDescriptor ); + QDir directory( location() ); + QString load; + if ( !moduleDescriptor.value( "load" ).toString().isEmpty() ) + { + load = moduleDescriptor.value( "load" ).toString(); + load = directory.absoluteFilePath( load ); + } + // If a load path is not specified, we look for a plugin to load in the directory. + if ( load.isEmpty() || !QLibrary::isLibrary( load ) ) + { + const QStringList ls = directory.entryList( QStringList{ "*.so" } ); + if ( !ls.isEmpty() ) + { + for ( QString entry : ls ) + { + entry = directory.absoluteFilePath( entry ); + if ( QLibrary::isLibrary( entry ) ) + { + load = entry; + break; + } + } + } + } + + m_loader = new QPluginLoader( load ); +} + +CppJobModule::CppJobModule() + : Module() + , m_loader( nullptr ) +{ +} + +CppJobModule::~CppJobModule() +{ + delete m_loader; +} + +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/CppJobModule.h b/src/libcalamaresui/modulesystem/CppJobModule.h new file mode 100644 index 000000000..46d27bf8b --- /dev/null +++ b/src/libcalamaresui/modulesystem/CppJobModule.h @@ -0,0 +1,55 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * Copyright 2016, Kevin Kofler + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARES_CPPJOBMODULE_H +#define CALAMARES_CPPJOBMODULE_H + +#include "UiDllMacro.h" +#include "Module.h" + +class QPluginLoader; + +namespace Calamares +{ + +class UIDLLEXPORT CppJobModule : public Module +{ +public: + Type type() const override; + Interface interface() const override; + + void loadSelf() override; + QList< job_ptr > jobs() const override; + +protected: + void initFrom( const QVariantMap& moduleDescriptor ) override; + +private: + friend class Module; //so only the superclass can instantiate + explicit CppJobModule(); + virtual ~CppJobModule() override; + + QPluginLoader* m_loader; + job_ptr m_job; +}; + +} // namespace Calamares + +#endif // CALAMARES_CPPJOBMODULE_H diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 780975418..96ec0cceb 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,6 +20,7 @@ #include "Module.h" #include "ProcessJobModule.h" +#include "CppJobModule.h" #include "ViewModule.h" #include "utils/CalamaresUtils.h" #include "utils/YamlUtils.h" @@ -30,6 +32,10 @@ #include "PythonJobModule.h" #endif +#ifdef WITH_PYTHONQT +#include "PythonQtViewModule.h" +#endif + #include #include @@ -70,27 +76,52 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, << instanceId; return nullptr; } - if ( typeString == "view" && intfString == "qtplugin" ) + if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) ) { - m = new ViewModule(); + if ( intfString == "qtplugin" ) + { + m = new ViewModule(); + } + else if ( intfString == "pythonqt" ) + { +#ifdef WITH_PYTHONQT + m = new PythonQtViewModule(); +#else + cLog() << "PythonQt modules are not supported in this version of Calamares."; +#endif + } + else + cLog() << "Bad interface" << intfString << "for module type" << typeString; } else if ( typeString == "job" ) { - if ( intfString == "process" ) + if ( intfString == "qtplugin" ) + { + m = new CppJobModule(); + } + else if ( intfString == "process" ) { m = new ProcessJobModule(); } -#ifdef WITH_PYTHON else if ( intfString == "python" ) { +#ifdef WITH_PYTHON m = new PythonJobModule(); - } +#else + cLog() << "Python modules are not supported in this version of Calamares."; #endif + } + else + cLog() << "Bad interface" << intfString << "for module type" << typeString; } + else + cLog() << "Bad module type" << typeString; + if ( !m ) { - cLog() << Q_FUNC_INFO << "bad module type or interface string" - << instanceId << typeString << intfString; + cLog() << "Bad module type (" << typeString + << ") or interface string (" << intfString + << ") for module " << instanceId; return nullptr; } @@ -158,6 +189,12 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex QByteArray ba = configFile.readAll(); YAML::Node doc = YAML::Load( ba.constData() ); + if ( doc.IsNull() ) + { + // Special case: empty config files are valid, + // but aren't a map. + return; + } if ( !doc.IsMap() ) { cLog() << Q_FUNC_INFO << "bad module configuration format" @@ -210,6 +247,38 @@ Module::location() const } +QString +Module::typeString() const +{ + switch ( type() ) + { + case Job: + return "Job Module"; + case View: + return "View Module"; + } + return QString(); +} + + +QString +Module::interfaceString() const +{ + switch ( interface() ) + { + case ProcessInterface: + return "External process"; + case PythonInterface: + return "Python (Boost.Python)"; + case PythonQtInterface: + return "Python (experimental)"; + case QtPluginInterface: + return "Qt Plugin"; + } + return QString(); +} + + bool Module::isLoaded() const { diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 336890ee9..5f756938f 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -37,42 +37,135 @@ void operator>>( const QVariantMap& moduleDescriptor, Calamares::Module* m ); namespace Calamares { +/** + * @brief The Module class is a common supertype for Calamares modules. + * It enforces a common interface for all the different types of modules, and it + * takes care of creating an object of the correct type starting from a module + * descriptor structure. + */ class UIDLLEXPORT Module { public: + /** + * @brief The Type enum represents the intended functionality of the module + * Every module is either a job module or a view module. + * A job module is a single Calamares job. + * A view module has a UI (one or more view pages) and zero-to-many jobs. + */ enum Type { Job, View }; + /** + * @brief The Interface enum represents the interface through which the module + * talks to Calamares. + * Not all Type-Interface associations are valid. + */ enum Interface { - QtPlugin, - Python, - Process + QtPluginInterface, + PythonInterface, + ProcessInterface, + PythonQtInterface }; virtual ~Module(); + /** + * @brief fromDescriptor creates a new Module object of the correct type. + * @param moduleDescriptor a module descriptor, already parsed into a variant map. + * @param instanceId the instance id of the new module instance. + * @param configFileName the name of the configuration file to read. + * @param moduleDirectory the path to the directory with this module's files. + * @return a pointer to an object of a subtype of Module. + */ static Module* fromDescriptor( const QVariantMap& moduleDescriptor, const QString& instanceId, const QString& configFileName, const QString& moduleDirectory ); + /** + * @brief name returns the name of this module. + * @return a string with this module's name. + */ virtual QString name() const final; + + /** + * @brief instanceId returns the instance id of this module. + * @return a string with this module's instance id. + */ virtual QString instanceId() const final; + + /** + * @brief instanceKey returns the instance key of this module. + * @return a string with the instance key. + * A module instance's instance key is modulename\@instanceid. + * For instance, "partition\@partition" (default configuration) or + * "locale\@someconfig" (custom configuration) + */ virtual QString instanceKey() const final; + + /** + * @brief requiredModules a list of names of modules required by this one. + * @return the list of names. + * The module dependencies system is currently incomplete and unused. + */ virtual QStringList requiredModules() const; + + /** + * @brief location returns the full path of this module's directory. + * @return the path. + */ virtual QString location() const final; + + /** + * @brief type returns the Type of this module object. + * @return the type enum value. + */ virtual Type type() const = 0; + + /** + * @brief typeString returns a user-visible string for the module's type. + * @return the type string. + */ + virtual QString typeString() const; + + /** + * @brief interface the Interface used by this module. + * @return the interface enum value. + */ virtual Interface interface() const = 0; + /** + * @brief interface returns a user-visible string for the module's interface. + * @return the interface string. + */ + virtual QString interfaceString() const; + + /** + * @brief isLoaded reports on the loaded status of a module. + * @return true if the module's loading phase has finished, otherwise false. + */ virtual bool isLoaded() const; + /** + * @brief loadSelf initialized the module. + * Subclasses must reimplement this depending on the module type and interface. + */ virtual void loadSelf() = 0; + /** + * @brief jobs returns any jobs exposed by this module. + * @return a list of jobs (can be empty). + */ virtual QList< job_ptr > jobs() const = 0; + /** + * @brief configurationMap returns the contents of the configuration file for + * this module instance. + * @return the instance's configuration, already parsed from YAML into a variant map. + */ QVariantMap configurationMap(); protected: diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 913414bff..44eed30f0 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -57,7 +57,13 @@ ModuleManager::ModuleManager( const QStringList& paths, QObject* parent ) ModuleManager::~ModuleManager() -{} +{ + // The map is populated with Module::fromDescriptor(), which allocates on the heap. + for( auto moduleptr : m_loadedModulesByInstanceKey ) + { + delete moduleptr; + } +} void @@ -77,13 +83,13 @@ ModuleManager::doInit() // the module name, and must contain a settings file named module.desc. // If at any time the module loading procedure finds something unexpected, it // silently skips to the next module or search path. --Teo 6/2014 - foreach ( const QString& path, m_paths ) + for ( const QString& path : m_paths ) { QDir currentDir( path ); if ( currentDir.exists() && currentDir.isReadable() ) { - QStringList subdirs = currentDir.entryList( QDir::AllDirs | QDir::NoDotAndDotDot ); - foreach ( const QString& subdir, subdirs ) + const QStringList subdirs = currentDir.entryList( QDir::AllDirs | QDir::NoDotAndDotDot ); + for ( const QString& subdir : subdirs ) { currentDir.setPath( path ); bool success = currentDir.cd( subdir ); @@ -179,8 +185,8 @@ ModuleManager::loadModules() QList< QMap< QString, QString > > customInstances = Settings::instance()->customModuleInstances(); - for ( const QPair< ModuleAction, QStringList >& modulePhase : - Settings::instance()->modulesSequence() ) + const auto modulesSequence = Settings::instance()->modulesSequence(); + for ( const auto &modulePhase : modulesSequence ) { ModuleAction currentAction = modulePhase.first; @@ -213,14 +219,14 @@ ModuleManager::loadModules() } auto findCustomInstance = - [ customInstances ]( const QString& moduleName, - const QString& instanceId ) -> int + [ customInstances ]( const QString& module, + const QString& id) -> int { for ( int i = 0; i < customInstances.count(); ++i ) { auto thisInstance = customInstances[ i ]; - if ( thisInstance.value( "module" ) == moduleName && - thisInstance.value( "id" ) == instanceId ) + if ( thisInstance.value( "module" ) == module && + thisInstance.value( "id" ) == id ) return i; } return -1; @@ -303,10 +309,6 @@ ModuleManager::loadModules() evs = new ExecutionViewStep( ViewManager::instance() ); ViewManager::instance()->addViewStep( evs ); } - else - { - cDebug() << "LAST VS IS EVS!"; - } evs->appendJobModuleInstanceKey( instanceKey ); } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index 7c70e6621..05ad15178 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -30,6 +30,13 @@ namespace Calamares class Module; +/** + * @brief The ModuleManager class is a singleton which manages Calamares modules. + * + * It goes through the module search directories and reads module metadata. It then + * constructs objects of type Module, loads them and makes them accessible by their + * instance key. + */ class ModuleManager : public QObject { Q_OBJECT @@ -46,11 +53,31 @@ public: */ void init(); + /** + * @brief loadedInstanceKeys returns a list of instance keys for the available + * modules. + * @return a QStringList with the instance keys. + */ QStringList loadedInstanceKeys(); + + /** + * @brief moduleDescriptor returns the module descriptor structure for a given module. + * @param name the name of the module for which to return the module descriptor. + * @return the module descriptor, as a variant map already parsed from YAML. + */ QVariantMap moduleDescriptor( const QString& name ); + /** + * @brief moduleInstance returns a Module object for a given instance key. + * @param instanceKey the instance key for a module instance. + * @return a pointer to an object of a subtype of Module. + */ Module* moduleInstance( const QString& instanceKey ); + /** + * @brief loadModules initiates the asynchronous module loading operation. + * When this is done, the signal modulesLoaded is emitted. + */ void loadModules(); signals: @@ -66,7 +93,7 @@ private: QMap< QString, QVariantMap > m_availableDescriptorsByModuleName; QMap< QString, QString > m_moduleDirectoriesByModuleName; QMap< QString, Module* > m_loadedModulesByInstanceKey; - QStringList m_paths; + const QStringList m_paths; static ModuleManager* s_instance; }; diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp index 5b6fa24f0..aefcbf6f0 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.cpp +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.cpp @@ -35,7 +35,7 @@ ProcessJobModule::type() const Module::Interface ProcessJobModule::interface() const { - return Process; + return ProcessInterface; } diff --git a/src/libcalamaresui/modulesystem/ProcessJobModule.h b/src/libcalamaresui/modulesystem/ProcessJobModule.h index b160fd25f..af9a46bd5 100644 --- a/src/libcalamaresui/modulesystem/ProcessJobModule.h +++ b/src/libcalamaresui/modulesystem/ProcessJobModule.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +24,8 @@ #include "UiDllMacro.h" -namespace Calamares { +namespace Calamares +{ class UIDLLEXPORT ProcessJobModule : public Module { @@ -40,7 +42,7 @@ protected: private: friend class Module; explicit ProcessJobModule(); - virtual ~ProcessJobModule(); + virtual ~ProcessJobModule() override; QString m_command; QString m_workingPath; diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index e2982ef48..544f27e1f 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -36,7 +36,7 @@ PythonJobModule::type() const Module::Interface PythonJobModule::interface() const { - return Python; + return PythonInterface; } diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.h b/src/libcalamaresui/modulesystem/PythonJobModule.h index e47d777c9..c82137cb8 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.h +++ b/src/libcalamaresui/modulesystem/PythonJobModule.h @@ -40,7 +40,7 @@ protected: private: friend class Module; explicit PythonJobModule(); - virtual ~PythonJobModule(); + virtual ~PythonJobModule() override; QString m_scriptFileName; QString m_workingPath; diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp new file mode 100644 index 000000000..96a1ce71c --- /dev/null +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -0,0 +1,203 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtViewModule.h" + +#include "utils/Logger.h" +#include "viewpages/ViewStep.h" +#include "viewpages/PythonQtViewStep.h" +#include "ViewManager.h" +#include "CalamaresConfig.h" +#include "viewpages/PythonQtGlobalStorageWrapper.h" +#include "viewpages/PythonQtUtilsWrapper.h" +#include "GlobalStorage.h" +#include "JobQueue.h" + +#include +#include + +#include +#include + + +static QPointer< GlobalStorage > s_gs = nullptr; +static QPointer< Utils > s_utils = nullptr; + +namespace Calamares { + +Module::Type +PythonQtViewModule::type() const +{ + return View; +} + + +Module::Interface +PythonQtViewModule::interface() const +{ + return PythonQtInterface; +} + + +void +PythonQtViewModule::loadSelf() +{ + if ( !m_scriptFileName.isEmpty() ) + { + if ( PythonQt::self() == nullptr ) + { + if ( Py_IsInitialized() ) + PythonQt::init( PythonQt::IgnoreSiteModule | + PythonQt::RedirectStdOut | + PythonQt::PythonAlreadyInitialized ); + else + PythonQt::init(); + + PythonQt_QtAll::init(); + cDebug() << "Initializing PythonQt bindings." + << "This should only happen once."; + + //TODO: register classes here into the PythonQt environment, like this: + //PythonQt::self()->registerClass( &PythonQtViewStep::staticMetaObject, + // "calamares" ); + + // We only do the following to force PythonQt to create a submodule + // "calamares" for us to put our static objects in + PythonQt::self()->registerClass( &::GlobalStorage::staticMetaObject, + "calamares" ); + + // Get a PythonQtObjectPtr to the PythonQt.calamares submodule + PythonQtObjectPtr pqtm = PythonQt::priv()->pythonQtModule(); + PythonQtObjectPtr cala = PythonQt::self()->lookupObject( pqtm, "calamares" ); + + // Prepare GlobalStorage object, in module PythonQt.calamares + if ( !s_gs ) + s_gs = new ::GlobalStorage( Calamares::JobQueue::instance()->globalStorage() ); + cala.addObject( "global_storage", s_gs ); + + // Prepare Utils object, in module PythonQt.calamares + if ( !s_utils ) + s_utils = new ::Utils( Calamares::JobQueue::instance()->globalStorage() ); + cala.addObject( "utils", s_utils ); + + // Basic stdout/stderr handling + QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, + []( const QString& message ) + { + cDebug() << "PythonQt OUT>" << message; + } ); + QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, + []( const QString& message ) + { + cDebug() << "PythonQt ERR>" << message; + } ); + + } + + QDir workingDir( m_workingPath ); + if ( !workingDir.exists() ) + { + cDebug() << "Invalid working directory" + << m_workingPath + << "for module" + << name(); + return; + } + + QString fullPath = workingDir.absoluteFilePath( m_scriptFileName ); + QFileInfo scriptFileInfo( fullPath ); + if ( !scriptFileInfo.isReadable() ) + { + cDebug() << "Invalid main script file path" + << fullPath + << "for module" + << name(); + return; + } + + // Construct empty Python module with the given name + PythonQtObjectPtr cxt = + PythonQt::self()-> + createModuleFromScript( name() ); + if ( cxt.isNull() ) + { + cDebug() << "Cannot load PythonQt context from file" + << fullPath + << "for module" + << name(); + return; + } + + QString calamares_module_annotation = + "_calamares_module_typename = ''\n" + "def calamares_module(viewmodule_type):\n" + " global _calamares_module_typename\n" + " _calamares_module_typename = viewmodule_type.__name__\n" + " return viewmodule_type\n"; + + // Load in the decorator + PythonQt::self()->evalScript( cxt, calamares_module_annotation ); + + // Load the module + PythonQt::self()->evalFile( cxt, fullPath ); + + m_viewStep = new PythonQtViewStep( cxt ); + + cDebug() << "PythonQtViewModule loading self for instance" << instanceKey() + << "\nPythonQtViewModule at address" << this + << "\nViewStep at address" << m_viewStep; + + m_viewStep->setModuleInstanceKey( instanceKey() ); + m_viewStep->setConfigurationMap( m_configurationMap ); + ViewManager::instance()->addViewStep( m_viewStep ); + m_loaded = true; + cDebug() << "PythonQtViewModule" << instanceKey() << "loading complete."; + } +} + + +QList< job_ptr > +PythonQtViewModule::jobs() const +{ + return m_viewStep->jobs(); +} + + +void +PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor ) +{ + Module::initFrom( moduleDescriptor ); + QDir directory( location() ); + m_workingPath = directory.absolutePath(); + + if ( !moduleDescriptor.value( "script" ).toString().isEmpty() ) + { + m_scriptFileName = moduleDescriptor.value( "script" ).toString(); + } +} + +PythonQtViewModule::PythonQtViewModule() + : Module() +{ +} + +PythonQtViewModule::~PythonQtViewModule() +{ +} + +} // namespace Calamares diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.h b/src/libcalamaresui/modulesystem/PythonQtViewModule.h new file mode 100644 index 000000000..ba18cfac6 --- /dev/null +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.h @@ -0,0 +1,54 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARES_PYTHONQTVIEWMODULE_H +#define CALAMARES_PYTHONQTVIEWMODULE_H + +#include "UiDllMacro.h" +#include "Module.h" + +namespace Calamares { + +class ViewStep; + +class UIDLLEXPORT PythonQtViewModule : public Module +{ +public: + Type type() const override; + Interface interface() const override; + + void loadSelf() override; + QList< job_ptr > jobs() const override; + +protected: + void initFrom( const QVariantMap& moduleDescriptor ) override; + +private: + friend class Module; //so only the superclass can instantiate + explicit PythonQtViewModule(); + virtual ~PythonQtViewModule(); + + ViewStep* m_viewStep = nullptr; + + QString m_scriptFileName; + QString m_workingPath; +}; + +} // namespace Calamares + +#endif // CALAMARES_PYTHONQTVIEWMODULE_H diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index c153000da..ba054a8b1 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,7 +40,7 @@ ViewModule::type() const Module::Interface ViewModule::interface() const { - return QtPlugin; + return QtPluginInterface; } @@ -51,25 +52,26 @@ ViewModule::loadSelf() PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); if ( !pf ) { - cDebug() << Q_FUNC_INFO << m_loader->errorString(); + cDebug() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); return; } m_viewStep = pf->create< Calamares::ViewStep >(); if ( !m_viewStep ) { - cDebug() << Q_FUNC_INFO << m_loader->errorString(); + cDebug() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); return; } - cDebug() << "ViewModule loading self for instance" << instanceKey() - << "\nViewModule at address" << this - << "\nCalamares::PluginFactory at address" << pf - << "\nViewStep at address" << m_viewStep; +// cDebug() << "ViewModule loading self for instance" << instanceKey() +// << "\nViewModule at address" << this +// << "\nCalamares::PluginFactory at address" << pf +// << "\nViewStep at address" << m_viewStep; m_viewStep->setModuleInstanceKey( instanceKey() ); m_viewStep->setConfigurationMap( m_configurationMap ); ViewManager::instance()->addViewStep( m_viewStep ); m_loaded = true; + cDebug() << "ViewModule" << instanceKey() << "loading complete."; } } @@ -95,10 +97,10 @@ ViewModule::initFrom( const QVariantMap& moduleDescriptor ) // If a load path is not specified, we look for a plugin to load in the directory. if ( load.isEmpty() || !QLibrary::isLibrary( load ) ) { - QStringList ls = directory.entryList( QStringList{ "*.so" } ); + const QStringList ls = directory.entryList( QStringList{ "*.so" } ); if ( !ls.isEmpty() ) { - foreach ( QString entry, ls ) + for ( QString entry : ls ) { entry = directory.absoluteFilePath( entry ); if ( QLibrary::isLibrary( entry ) ) diff --git a/src/libcalamaresui/modulesystem/ViewModule.h b/src/libcalamaresui/modulesystem/ViewModule.h index 177c1eba1..6b2e381a2 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.h +++ b/src/libcalamaresui/modulesystem/ViewModule.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +25,8 @@ class QPluginLoader; -namespace Calamares { +namespace Calamares +{ class ViewStep; @@ -43,7 +45,7 @@ protected: private: friend class Module; //so only the superclass can instantiate explicit ViewModule(); - virtual ~ViewModule(); + virtual ~ViewModule() override; QPluginLoader* m_loader; ViewStep* m_viewStep = nullptr; diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index 9307ba389..3b04897ae 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -39,6 +39,7 @@ static int s_defaultFontHeight = 0; QPixmap defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) { + Q_UNUSED( mode ); QPixmap pixmap; switch ( type ) @@ -106,9 +107,6 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) case Squid: pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/squid.svg", size ); break; - - default: - break; } if ( pixmap.isNull() ) @@ -142,7 +140,7 @@ createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPc return QPixmap(); QPixmap scaledAvatar = pixmap.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); - if ( frameWidthPct == 0.00 ) + if ( frameWidthPct == 0.00f ) return scaledAvatar; QPixmap frame( width, height ); @@ -159,7 +157,7 @@ createRoundedImage( const QPixmap& pixmap, const QSize& size, float frameWidthPc painter.setBrush( brush ); painter.setPen( pen ); - painter.drawRoundedRect( outerRect, frameWidthPct * 100.0, frameWidthPct * 100.0, Qt::RelativeSize ); + painter.drawRoundedRect( outerRect, qreal(frameWidthPct) * 100.0, qreal(frameWidthPct) * 100.0, Qt::RelativeSize ); /* painter.setBrush( Qt::transparent ); painter.setPen( Qt::white ); @@ -225,7 +223,7 @@ setDefaultFontSize( int points ) QSize defaultIconSize() { - const int w = defaultFontHeight() * 1.6; + const int w = int(defaultFontHeight() * 1.6); return QSize( w, w ); } diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index 224a3c2b2..e675d0672 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,6 +30,14 @@ class QLayout; namespace CalamaresUtils { + +/** + * @brief The ImageType enum lists all common Calamares icons. + * Icons are loaded from SVGs and cached. Each icon has an enum value, through which + * it can be accessed. + * You can forward-declare this as: + * enum ImageType : int; + */ enum ImageType : int { Yes, @@ -49,6 +58,10 @@ enum ImageType : int Squid }; +/** + * @brief The ImageMode enum contains different transformations that can be applied. + * Most of these are currently unused. + */ enum ImageMode { Original, @@ -58,18 +71,56 @@ enum ImageMode RoundedCorners }; -UIDLLEXPORT QPixmap defaultPixmap( ImageType type, ImageMode mode = CalamaresUtils::Original, const QSize& size = QSize( 0, 0 ) ); -UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, const QSize& size, float frameWidthPct = 0.20 ); +/** + * @brief defaultPixmap returns a resized and/or transformed pixmap for a given + * ImageType. + * @param type the ImageType i.e. the enum value for an SVG. + * @param mode the transformation to apply (default: no transformation). + * @param size the target pixmap size (default: original SVG size). + * @return the new pixmap. + */ +UIDLLEXPORT QPixmap defaultPixmap( ImageType type, + ImageMode mode = CalamaresUtils::Original, + const QSize& size = QSize( 0, 0 ) ); +/** + * @brief createRoundedImage returns a rounded version of a pixmap. + * @param avatar the input pixmap. + * @param size the new size. + * @param frameWidthPct the frame size, as percentage of width. + * @return the transformed pixmap. + * This one is currently unused. + */ +UIDLLEXPORT QPixmap createRoundedImage( const QPixmap& avatar, + const QSize& size, + float frameWidthPct = 0.20f ); + +/** + * @brief unmarginLayout recursively walks the QLayout tree and removes all margins. + * @param layout the layout to unmargin. + */ UIDLLEXPORT void unmarginLayout( QLayout* layout ); + +/** + * @brief clearLayout recursively walks the QLayout tree and deletes all the child + * widgets and layouts. + * @param layout the layout to clear. + */ UIDLLEXPORT void clearLayout( QLayout* layout ); UIDLLEXPORT void setDefaultFontSize( int points ); -UIDLLEXPORT int defaultFontSize(); -UIDLLEXPORT int defaultFontHeight(); +UIDLLEXPORT int defaultFontSize(); // in points +UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific UIDLLEXPORT QFont defaultFont(); UIDLLEXPORT QSize defaultIconSize(); +/** + * @brief Size constants for the main Calamares window. + */ +constexpr int windowMinimumWidth = 800; +constexpr int windowMinimumHeight = 520; +constexpr int windowPreferredWidth = 1024; +constexpr int windowPreferredHeight = 520; } #endif // CALAMARESUTILSGUI_H diff --git a/src/libcalamaresui/utils/DebugWindow.cpp b/src/libcalamaresui/utils/DebugWindow.cpp index 504a56b6e..d4bc74f65 100644 --- a/src/libcalamaresui/utils/DebugWindow.cpp +++ b/src/libcalamaresui/utils/DebugWindow.cpp @@ -26,6 +26,12 @@ #include "modulesystem/ModuleManager.h" #include "modulesystem/Module.h" +#ifdef WITH_PYTHONQT +#include +#include "ViewManager.h" +#include "viewpages/PythonQtViewStep.h" +#endif + #include #include #include @@ -59,7 +65,7 @@ DebugWindow::DebugWindow() this, [ this ]( const QList< Calamares::job_ptr >& jobs ) { QStringList text; - foreach( auto job, jobs ) + for ( const auto &job : jobs ) { text.append( job->prettyName() ); } @@ -68,11 +74,6 @@ DebugWindow::DebugWindow() } ); // Modules page - QSplitter* splitter = new QSplitter( modulesTab ); - modulesTab->layout()->addWidget( splitter ); - splitter->addWidget( modulesListView ); - splitter->addWidget( moduleConfigView ); - QStringListModel* modulesModel = new QStringListModel( ModuleManager::instance()->loadedInstanceKeys() ); modulesListView->setModel( modulesModel ); modulesListView->setSelectionMode( QAbstractItemView::SingleSelection ); @@ -80,8 +81,80 @@ DebugWindow::DebugWindow() QJsonModel* moduleConfigModel = new QJsonModel( this ); moduleConfigView->setModel( moduleConfigModel ); +#ifdef WITH_PYTHONQT + QPushButton* pythonConsoleButton = new QPushButton; + pythonConsoleButton->setText( "Attach Python console" ); + modulesVerticalLayout->insertWidget( 1, pythonConsoleButton ); + pythonConsoleButton->hide(); + + QObject::connect( pythonConsoleButton, &QPushButton::clicked, + this, [ this, moduleConfigModel ] + { + QString moduleName = modulesListView->currentIndex().data().toString(); + Module* module = ModuleManager::instance()->moduleInstance( moduleName ); + if ( module->interface() != Module::PythonQtInterface || + module->type() != Module::View ) + return; + + for ( ViewStep* step : ViewManager::instance()->viewSteps() ) + { + if ( step->moduleInstanceKey() == module->instanceKey() ) + { + PythonQtViewStep* pqvs = + qobject_cast< PythonQtViewStep* >( step ); + if ( pqvs ) + { + QWidget* consoleWindow = new QWidget; + + QWidget* console = pqvs->createScriptingConsole(); + console->setParent( consoleWindow ); + + QVBoxLayout* layout = new QVBoxLayout; + consoleWindow->setLayout( layout ); + layout->addWidget( console ); + + QHBoxLayout* bottomLayout = new QHBoxLayout; + layout->addLayout( bottomLayout ); + + QLabel* bottomLabel = new QLabel( consoleWindow ); + bottomLayout->addWidget( bottomLabel ); + QString line = + QString( "Module: %1
" + "Python class: %2" ) + .arg( module->instanceKey() ) + .arg( console->property( "classname" ).toString() ); + bottomLabel->setText( line ); + + QPushButton* closeButton = new QPushButton( consoleWindow ); + closeButton->setText( "&Close" ); + QObject::connect( closeButton, &QPushButton::clicked, + [ consoleWindow ] + { + consoleWindow->close(); + } ); + bottomLayout->addWidget( closeButton ); + bottomLabel->setSizePolicy( QSizePolicy::Expanding, + QSizePolicy::Preferred ); + + consoleWindow->setParent( this ); + consoleWindow->setWindowFlags( Qt::Window ); + consoleWindow->setWindowTitle( "Calamares Python console" ); + consoleWindow->setAttribute( Qt::WA_DeleteOnClose, true ); + consoleWindow->showNormal(); + break; + } + } + } + } ); + +#endif + connect( modulesListView->selectionModel(), &QItemSelectionModel::selectionChanged, - this, [ this, moduleConfigModel ] + this, [ this, moduleConfigModel +#ifdef WITH_PYTHONQT + , pythonConsoleButton +#endif + ] { QString moduleName = modulesListView->currentIndex().data().toString(); Module* module = ModuleManager::instance()->moduleInstance( moduleName ); @@ -89,6 +162,13 @@ DebugWindow::DebugWindow() { moduleConfigModel->loadJson( QJsonDocument::fromVariant( module->configurationMap() ).toJson() ); moduleConfigView->expandAll(); + moduleTypeLabel->setText( module->typeString() ); + moduleInterfaceLabel->setText( module->interfaceString() ); +#ifdef WITH_PYTHONQT + pythonConsoleButton->setVisible( + module->interface() == Module::PythonQtInterface && + module->type() == Module::View ); +#endif } } ); diff --git a/src/libcalamaresui/utils/DebugWindow.ui b/src/libcalamaresui/utils/DebugWindow.ui index fa6b28acf..c5096b70d 100644 --- a/src/libcalamaresui/utils/DebugWindow.ui +++ b/src/libcalamaresui/utils/DebugWindow.ui @@ -6,8 +6,8 @@ 0 0 - 632 - 497 + 962 + 651 @@ -17,7 +17,7 @@ - 0 + 2 @@ -48,7 +48,70 @@ - + + + + + + + Type: + + + + + + + none + + + + + + + Interface: + + + + + + + none + + + + + + + + + + + + + + + Tools + + + + + + Crash now + + + + + + + Qt::Vertical + + + + 20 + 40 + + + diff --git a/src/libcalamaresui/utils/ImageRegistry.cpp b/src/libcalamaresui/utils/ImageRegistry.cpp index ad3e606ab..442017048 100644 --- a/src/libcalamaresui/utils/ImageRegistry.cpp +++ b/src/libcalamaresui/utils/ImageRegistry.cpp @@ -1,31 +1,31 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * - * Originally from Tomahawk, - * Copyright 2012, Christian Muehlhaeuser - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPLv3+ + * License-Filename: LICENSES/GPLv3+-ImageRegistry */ +/* + * Copyright 2012, Christian Muehlhaeuser + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + #include "ImageRegistry.h" #include #include -#include - -#include "utils/Logger.h" +#include static QHash< QString, QHash< int, QHash< qint64, QPixmap > > > s_cache; ImageRegistry* ImageRegistry::s_instance = 0; @@ -61,6 +61,12 @@ ImageRegistry::cacheKey( const QSize& size, float opacity, QColor tint ) QPixmap ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, QColor tint ) { + if ( size.width() < 0 || size.height() < 0 ) + { + Q_ASSERT( false ); + return QPixmap(); + } + QHash< qint64, QPixmap > subsubcache; QHash< int, QHash< qint64, QPixmap > > subcache; @@ -82,11 +88,10 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: // Image not found in cache. Let's load it. QPixmap pixmap; - if ( image.toLower().endsWith( ".svg" ) || - image.toLower().endsWith( ".svgz" ) ) + if ( image.toLower().endsWith( ".svg" ) ) { QSvgRenderer svgRenderer( image ); - QPixmap p( size.isNull() ? svgRenderer.defaultSize() : size ); + QPixmap p( size.isNull() || size.height() == 0 || size.width() == 0 ? svgRenderer.defaultSize() : size ); p.fill( Qt::transparent ); QPainter pixPainter( &p ); @@ -105,7 +110,7 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: resultImage.setAlphaChannel( p.toImage().alphaChannel() ); p = QPixmap::fromImage( resultImage ); - } + } pixmap = p; } @@ -125,7 +130,18 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: } if ( !size.isNull() && pixmap.size() != size ) - pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); + { + if ( size.width() == 0 ) + { + pixmap = pixmap.scaledToHeight( size.height(), Qt::SmoothTransformation ); + } + else if ( size.height() == 0 ) + { + pixmap = pixmap.scaledToWidth( size.width(), Qt::SmoothTransformation ); + } + else + pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); + } putInCache( image, size, mode, opacity, pixmap, tint ); } @@ -137,8 +153,6 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, CalamaresUtils:: void ImageRegistry::putInCache( const QString& image, const QSize& size, CalamaresUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint ) { -// cDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode; - QHash< qint64, QPixmap > subsubcache; QHash< int, QHash< qint64, QPixmap > > subcache; diff --git a/src/libcalamaresui/utils/ImageRegistry.h b/src/libcalamaresui/utils/ImageRegistry.h index 41ed2d6ac..e35eaf74a 100644 --- a/src/libcalamaresui/utils/ImageRegistry.h +++ b/src/libcalamaresui/utils/ImageRegistry.h @@ -1,24 +1,26 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac - * - * Originally from Tomahawk, - * Copyright 2012, Christian Muehlhaeuser - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPLv3+ + * License-Filename: LICENSES/GPLv3+-ImageRegistry */ +/* + * Copyright 2012, Christian Muehlhaeuser + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + #ifndef IMAGE_REGISTRY_H #define IMAGE_REGISTRY_H diff --git a/src/libcalamaresui/utils/PluginFactory.cpp b/src/libcalamaresui/utils/PluginFactory.cpp deleted file mode 100644 index 2834e5b4a..000000000 --- a/src/libcalamaresui/utils/PluginFactory.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2015, Teo Mrnjavac - * - * Based on KPluginFactory from KCoreAddons, KDE project - * Copyright 2007, Matthias Kretz - * Copyright 2007, Bernhard Loos - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#include "PluginFactory.h" -#include "PluginFactory_p.h" - -#include -#include - -Q_GLOBAL_STATIC(QObjectCleanupHandler, factorycleanup) - -extern int kLibraryDebugArea(); - -namespace Calamares -{ - -PluginFactory::PluginFactory() - : d_ptr(new PluginFactoryPrivate) -{ - Q_D(PluginFactory); - d->q_ptr = this; - - factorycleanup()->add(this); -} - -PluginFactory::PluginFactory(PluginFactoryPrivate &d) - : d_ptr(&d) -{ - factorycleanup()->add(this); -} - -PluginFactory::~PluginFactory() -{ - delete d_ptr; -} - -void PluginFactory::doRegisterPlugin(const QString &keyword, const QMetaObject *metaObject, CreateInstanceFunction instanceFunction) -{ - Q_D(PluginFactory); - - Q_ASSERT(metaObject); - - // we allow different interfaces to be registered without keyword - if (!keyword.isEmpty()) { - if (d->createInstanceHash.contains(keyword)) { - qWarning() << "A plugin with the keyword" << keyword << "was already registered. A keyword must be unique!"; - } - d->createInstanceHash.insert(keyword, PluginFactoryPrivate::Plugin(metaObject, instanceFunction)); - } else { - QList clashes(d->createInstanceHash.values(keyword)); - const QMetaObject *superClass = metaObject->superClass(); - if (superClass) { - foreach (const PluginFactoryPrivate::Plugin &plugin, clashes) { - for (const QMetaObject *otherSuper = plugin.first->superClass(); otherSuper; - otherSuper = otherSuper->superClass()) { - if (superClass == otherSuper) { - qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; - } - } - } - } - foreach (const PluginFactoryPrivate::Plugin &plugin, clashes) { - superClass = plugin.first->superClass(); - if (superClass) { - for (const QMetaObject *otherSuper = metaObject->superClass(); otherSuper; - otherSuper = otherSuper->superClass()) { - if (superClass == otherSuper) { - qWarning() << "Two plugins with the same interface(" << superClass->className() << ") were registered. Use keywords to identify the plugins."; - } - } - } - } - d->createInstanceHash.insertMulti(keyword, PluginFactoryPrivate::Plugin(metaObject, instanceFunction)); - } -} - -QObject *PluginFactory::create(const char *iface, QWidget *parentWidget, QObject *parent, const QString &keyword) -{ - Q_D(PluginFactory); - - QObject *obj = 0; - - const QList candidates(d->createInstanceHash.values(keyword)); - // for !keyword.isEmpty() candidates.count() is 0 or 1 - - foreach (const PluginFactoryPrivate::Plugin &plugin, candidates) { - for (const QMetaObject *current = plugin.first; current; current = current->superClass()) { - if (0 == qstrcmp(iface, current->className())) { - if (obj) { - qWarning() << "ambiguous interface requested from a DSO containing more than one plugin"; - } - obj = plugin.second(parentWidget, parent); - break; - } - } - } - - if (obj) { - emit objectCreated(obj); - } - return obj; -} - -} diff --git a/src/libcalamaresui/utils/PythonQtUtils.cpp b/src/libcalamaresui/utils/PythonQtUtils.cpp new file mode 100644 index 000000000..ee386c0fd --- /dev/null +++ b/src/libcalamaresui/utils/PythonQtUtils.cpp @@ -0,0 +1,44 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtUtils.h" + +namespace CalamaresUtils +{ + +QVariant +lookupAndCall( PyObject* object, + const QStringList& candidateNames, + const QVariantList& args, + const QVariantMap& kwargs ) +{ + Q_ASSERT( object ); + Q_ASSERT( !candidateNames.isEmpty() ); + + for ( const QString& name : candidateNames ) + { + PythonQtObjectPtr callable = PythonQt::self()->lookupCallable( object, name ); + if ( callable ) + return callable.call( args, kwargs ); + } + + // If we haven't found a callable with the given names, we force an error: + return PythonQt::self()->call( object, candidateNames.first(), args, kwargs ); +} + +} diff --git a/src/libcalamaresui/utils/PythonQtUtils.h b/src/libcalamaresui/utils/PythonQtUtils.h new file mode 100644 index 000000000..a94cf25e5 --- /dev/null +++ b/src/libcalamaresui/utils/PythonQtUtils.h @@ -0,0 +1,38 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTUTILS_H +#define PYTHONQTUTILS_H + +#include + +#include + + +namespace CalamaresUtils +{ +//NOTE: when running this, it is assumed that Python is initialized and +// PythonQt::self() is valid. +QVariant lookupAndCall( PyObject* object, + const QStringList& candidateNames, + const QVariantList& args = QVariantList(), + const QVariantMap& kwargs = QVariantMap() ); + +} //ns + +#endif // PYTHONQTUTILS_H diff --git a/src/libcalamaresui/utils/YamlUtils.cpp b/src/libcalamaresui/utils/YamlUtils.cpp index 5003e98c7..4b1a8fd86 100644 --- a/src/libcalamaresui/utils/YamlUtils.cpp +++ b/src/libcalamaresui/utils/YamlUtils.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,14 +18,17 @@ */ #include "YamlUtils.h" +#include "utils/Logger.h" + #include +#include #include void operator>>( const YAML::Node& node, QStringList& v ) { - for ( int i = 0; i < node.size(); ++i ) + for ( size_t i = 0; i < node.size(); ++i ) { v.append( QString::fromStdString( node[ i ].as< std::string >() ) ); } @@ -51,9 +55,11 @@ yamlToVariant( const YAML::Node& node ) return yamlMapToVariant( node ); case YAML::NodeType::Null: + case YAML::NodeType::Undefined: return QVariant(); } + // NOTREACHED return QVariant(); } @@ -102,4 +108,42 @@ yamlMapToVariant( const YAML::Node& mapNode ) } +void +explainYamlException( const YAML::Exception& e, const QByteArray& yamlData, const char *label ) +{ + cDebug() << "WARNING: YAML error " << e.what() << "in" << label << '.'; + if ( ( e.mark.line >= 0 ) && ( e.mark.column >= 0 ) ) + { + // Try to show the line where it happened. + int linestart = 0; + for ( int linecount = 0; linecount < e.mark.line; ++linecount ) + { + linestart = yamlData.indexOf( '\n', linestart ); + // No more \ns found, weird + if ( linestart < 0 ) + break; + linestart += 1; // Skip that \n + } + int lineend = linestart; + if ( linestart >= 0 ) + { + lineend = yamlData.indexOf( '\n', linestart ); + if ( lineend < 0 ) + lineend = yamlData.length(); + } + + int rangestart = linestart; + int rangeend = lineend; + // Adjust range (linestart..lineend) so it's not too long + if ( ( linestart >= 0 ) && ( e.mark.column > 30 ) ) + rangestart += ( e.mark.column - 30 ); + if ( ( linestart >= 0 ) && ( rangeend - rangestart > 40 ) ) + rangeend = rangestart + 40; + + if ( linestart >= 0 ) + cDebug() << "WARNING: offending YAML data:" << yamlData.mid( rangestart, rangeend-rangestart ).constData(); + + } } + +} // namespace diff --git a/src/libcalamaresui/utils/YamlUtils.h b/src/libcalamaresui/utils/YamlUtils.h index a39934f51..1da36178c 100644 --- a/src/libcalamaresui/utils/YamlUtils.h +++ b/src/libcalamaresui/utils/YamlUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,9 +23,12 @@ #include #include +class QByteArray; + namespace YAML { class Node; +class Exception; } void operator>>( const YAML::Node& node, QStringList& v ); @@ -37,6 +41,13 @@ QVariant yamlScalarToVariant( const YAML::Node& scalarNode ); QVariant yamlSequenceToVariant( const YAML::Node& sequenceNode ); QVariant yamlMapToVariant( const YAML::Node& mapNode ); +/** + * Given an exception from the YAML parser library, explain + * what is going on in terms of the data passed to the parser. + * Uses @p label when labeling the data source (e.g. "netinstall data") + */ +void explainYamlException( const YAML::Exception& e, const QByteArray& data, const char *label ); + } //ns #endif // YAMLUTILS_H diff --git a/src/libcalamaresui/utils/qjsonitem.cpp b/src/libcalamaresui/utils/qjsonitem.cpp index 7913962ae..24494f0fd 100644 --- a/src/libcalamaresui/utils/qjsonitem.cpp +++ b/src/libcalamaresui/utils/qjsonitem.cpp @@ -1,27 +1,31 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Originally from QJsonModel - * Copyright 2015, Sacha Schutz - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPL-3.0+ + * License-Filename: LICENSES/GPLv3+-QJsonModel */ +/*********************************************** + Copyright (C) 2014 Schutz Sacha + This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). + + QJsonModel is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QJsonModel is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QJsonModel. If not, see . + +**********************************************/ #include "qjsonitem.h" QJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent) - : mType( QJsonValue::Null ) { mParent = parent; diff --git a/src/libcalamaresui/utils/qjsonitem.h b/src/libcalamaresui/utils/qjsonitem.h index 58ea02d32..5a8b2134f 100644 --- a/src/libcalamaresui/utils/qjsonitem.h +++ b/src/libcalamaresui/utils/qjsonitem.h @@ -1,20 +1,7 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Originally from QJsonModel - * Copyright 2015, Sacha Schutz - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPL-3.0+ + * License-Filename: LICENSES/GPLv3+-QJsonModel */ #ifndef JSONITEM_H @@ -27,7 +14,7 @@ class QJsonTreeItem { public: QJsonTreeItem(QJsonTreeItem * parent = 0); - virtual ~QJsonTreeItem(); + ~QJsonTreeItem(); void appendChild(QJsonTreeItem * item); QJsonTreeItem *child(int row); QJsonTreeItem *parent(); diff --git a/src/libcalamaresui/utils/qjsonmodel.cpp b/src/libcalamaresui/utils/qjsonmodel.cpp index 3d427d0fb..5ce0cd695 100644 --- a/src/libcalamaresui/utils/qjsonmodel.cpp +++ b/src/libcalamaresui/utils/qjsonmodel.cpp @@ -1,22 +1,27 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Originally from QJsonModel - * Copyright 2015, Sacha Schutz - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPL-3.0+ + * License-Filename: LICENSES/GPLv3+-QJsonModel */ +/*********************************************** + Copyright (C) 2014 Schutz Sacha + This file is part of QJsonModel (https://github.com/dridk/QJsonmodel). + + QJsonModel is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QJsonModel is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QJsonModel. If not, see . + +**********************************************/ #include "qjsonmodel.h" #include @@ -36,13 +41,6 @@ QJsonModel::QJsonModel(QObject *parent) : } - -QJsonModel::~QJsonModel() -{ - delete mRootItem; -} - - bool QJsonModel::load(const QString &fileName) { QFile file(fileName); @@ -68,7 +66,11 @@ bool QJsonModel::loadJson(const QByteArray &json) if (!mDocument.isNull()) { beginResetModel(); - mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.object())); + if (mDocument.isArray()) { + mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.array())); + } else { + mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.object())); + } endResetModel(); return true; } diff --git a/src/libcalamaresui/utils/qjsonmodel.h b/src/libcalamaresui/utils/qjsonmodel.h index a76d807d8..6a2399287 100644 --- a/src/libcalamaresui/utils/qjsonmodel.h +++ b/src/libcalamaresui/utils/qjsonmodel.h @@ -1,23 +1,9 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Originally from QJsonModel - * Copyright 2015, Sacha Schutz - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: GPL-3.0+ + * License-Filename: LICENSES/GPLv3+-QJsonModel */ - #ifndef QJSONMODEL_H #define QJSONMODEL_H @@ -31,7 +17,6 @@ class QJsonModel : public QAbstractItemModel Q_OBJECT public: explicit QJsonModel(QObject *parent = 0); - virtual ~QJsonModel(); bool load(const QString& fileName); bool load(QIODevice * device); bool loadJson(const QByteArray& json); diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp new file mode 100644 index 000000000..2f1fcd731 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.cpp @@ -0,0 +1,69 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtGlobalStorageWrapper.h" + +#include "GlobalStorage.h" + + +GlobalStorage::GlobalStorage( Calamares::GlobalStorage* gs ) + : QObject( gs ) + , m_gs( gs ) +{} + + +bool +GlobalStorage::contains( const QString& key ) const +{ + return m_gs->contains( key ); +} + + +int +GlobalStorage::count() const +{ + return m_gs->count(); +} + + +void +GlobalStorage::insert( const QString& key, const QVariant& value ) +{ + m_gs->insert( key, value ); +} + + +QStringList +GlobalStorage::keys() const +{ + return m_gs->keys(); +} + + +int +GlobalStorage::remove( const QString& key ) +{ + return m_gs->remove( key ); +} + + +QVariant +GlobalStorage::value( const QString& key ) const +{ + return m_gs->value( key ); +} diff --git a/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h new file mode 100644 index 000000000..415dd33b6 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtGlobalStorageWrapper.h @@ -0,0 +1,55 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTGLOBALSTORAGEWRAPPER_H +#define PYTHONQTGLOBALSTORAGEWRAPPER_H + + +#include + +namespace Calamares +{ +class GlobalStorage; +} + + +/** + * @brief This GlobalStorage class is a namespace-free wrapper for + * Calamares::GlobalStorage. This is unfortunately a necessity + * because PythonQt doesn't like namespaces. + */ +class GlobalStorage : public QObject +{ + Q_OBJECT +public: + explicit GlobalStorage( Calamares::GlobalStorage* gs ); + virtual ~GlobalStorage() {} + +public slots: + bool contains( const QString& key ) const; + int count() const; + void insert( const QString& key, const QVariant& value ); + QStringList keys() const; + int remove( const QString& key ); + QVariant value( const QString& key ) const; + +private: + Calamares::GlobalStorage* m_gs; +}; + +#endif // PYTHONQTGLOBALSTORAGEWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtJob.cpp b/src/libcalamaresui/viewpages/PythonQtJob.cpp new file mode 100644 index 000000000..6768a947b --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtJob.cpp @@ -0,0 +1,77 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtJob.h" + +#include "utils/PythonQtUtils.h" + +PythonQtJob::PythonQtJob( PythonQtObjectPtr cxt, + PythonQtObjectPtr pyJob, + QObject* parent ) + : Calamares::Job( parent ) + , m_cxt( cxt ) + , m_pyJob( pyJob ) +{ + +} + + +QString +PythonQtJob::prettyName() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyName", + "prettyname", + "pretty_name" } ).toString(); +} + + +QString +PythonQtJob::prettyDescription() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyDescription", + "prettydescription", + "pretty_description" } ).toString(); +} + + +QString +PythonQtJob::prettyStatusMessage() const +{ + return CalamaresUtils::lookupAndCall( m_pyJob, + { "prettyStatusMessage", + "prettystatusmessage", + "pretty_status_message" } ).toString(); +} + + +Calamares::JobResult +PythonQtJob::exec() +{ + QVariant response = m_pyJob.call( "exec" ); + if ( response.isNull() ) + return Calamares::JobResult::ok(); + + QVariantMap map = response.toMap(); + if ( map.isEmpty() || map.value( "ok" ).toBool() ) + return Calamares::JobResult::ok(); + + return Calamares::JobResult::error( map.value( "message" ).toString(), + map.value( "details" ).toString() ); +} diff --git a/src/libcalamaresui/viewpages/PythonQtJob.h b/src/libcalamaresui/viewpages/PythonQtJob.h new file mode 100644 index 000000000..aa93f9922 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtJob.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTJOB_H +#define PYTHONQTJOB_H + +#include "Job.h" + +#include + +namespace Calamares +{ +class PythonQtViewStep; +} + +class PythonQtJobResult : public QObject, public Calamares::JobResult +{ + Q_OBJECT +public: + explicit PythonQtJobResult( bool ok, + const QString& message, + const QString& details ) + : QObject( nullptr ) + , Calamares::JobResult( ok, message, details ) + {} +}; + + +class PythonQtJob : public Calamares::Job +{ + Q_OBJECT +public: + virtual ~PythonQtJob() {} + + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; + +private: + explicit PythonQtJob( PythonQtObjectPtr cxt, + PythonQtObjectPtr pyJob, + QObject* parent = nullptr ); + friend class Calamares::PythonQtViewStep; // only this one can call the ctor + + PythonQtObjectPtr m_cxt; + PythonQtObjectPtr m_pyJob; +}; + +#endif // PYTHONQTJOB_H diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp new file mode 100644 index 000000000..ce53c810b --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.cpp @@ -0,0 +1,146 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtUtilsWrapper.h" + +#include "utils/CalamaresUtilsSystem.h" +#include "utils/CalamaresUtils.h" +#include "utils/Logger.h" + +#include + + +Utils::Utils(QObject* parent) + : QObject( parent ) + , m_exceptionCxt( PythonQt::self()->createUniqueModule() ) +{ + PythonQt::self()->evalScript( m_exceptionCxt, "import subprocess" ); +} + + +void +Utils::debug(const QString& s) const +{ + cDebug() << "PythonQt DBG>" << s; +} + + +int +Utils::mount( const QString& device_path, + const QString& mount_point, + const QString& filesystem_name, + const QString& options ) const +{ + return CalamaresUtils::System::instance()-> + mount( device_path, mount_point, filesystem_name, options ); +} + + +int +Utils::target_env_call( const QString& command, + const QString& stdin, + int timeout ) const +{ + return CalamaresUtils::System::instance()-> + targetEnvCall( command, QString(), stdin, timeout ); +} + + +int +Utils::target_env_call( const QStringList& args, + const QString& stdin, + int timeout ) const +{ + return CalamaresUtils::System::instance()-> + targetEnvCall( args, QString(), stdin, timeout ); +} + + +int +Utils::check_target_env_call( const QString& command, + const QString& stdin, + int timeout ) const +{ + int ec = target_env_call( command, stdin, timeout ); + return _handle_check_target_env_call_error( ec, command ); +} + + +int +Utils::check_target_env_call( const QStringList& args, + const QString& stdin, + int timeout) const +{ + int ec = target_env_call( args, stdin, timeout ); + return _handle_check_target_env_call_error( ec, args.join( ' ' ) ); +} + + +QString +Utils::check_target_env_output( const QString& command, + const QString& stdin, + int timeout ) const +{ + QString output; + int ec = CalamaresUtils::System::instance()-> + targetEnvOutput( command, + output, + QString(), + stdin, + timeout ); + _handle_check_target_env_call_error( ec, command ); + return output; +} + + +QString +Utils::check_target_env_output( const QStringList& args, + const QString& stdin, + int timeout ) const +{ + QString output; + int ec = CalamaresUtils::System::instance()-> + targetEnvOutput( args, + output, + QString(), + stdin, + timeout ); + _handle_check_target_env_call_error( ec, args.join( ' ' ) ); + return output; +} + + +QString +Utils::obscure( const QString& string ) const +{ + return CalamaresUtils::obscure( string ); +} + + +int +Utils::_handle_check_target_env_call_error( int ec, const QString& cmd) const +{ + if ( ec ) + { + QString raise = QString( "raise subprocess.CalledProcessError(%1,\"%2\")" ) + .arg( ec ) + .arg( cmd ); + PythonQt::self()->evalScript( m_exceptionCxt, raise ); + } + return ec; +} diff --git a/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h new file mode 100644 index 000000000..d1d9bed7b --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtUtilsWrapper.h @@ -0,0 +1,78 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTUTILSWRAPPER_H +#define PYTHONQTUTILSWRAPPER_H + +#include + +#include + + +/** + * @brief The Utils class wraps around functions from CalamaresUtils to make them + * available in the PythonQt interface. + */ +class Utils : public QObject +{ + Q_OBJECT +public: + explicit Utils( QObject* parent = nullptr ); + virtual ~Utils() {} + +public slots: + void debug( const QString& s ) const; + + int mount( const QString& device_path, + const QString& mount_point, + const QString& filesystem_name, + const QString& options ) const; + + int target_env_call( const QString& command, + const QString& stdin = QString(), + int timeout = 0 ) const; + + int target_env_call( const QStringList& args, + const QString& stdin = QString(), + int timeout = 0 ) const; + + int check_target_env_call( const QString& command, + const QString& stdin = QString(), + int timeout = 0 ) const; + + int check_target_env_call( const QStringList& args, + const QString& stdin = QString(), + int timeout = 0 ) const; + + QString check_target_env_output( const QString& command, + const QString& stdin = QString(), + int timeout = 0 ) const; + + QString check_target_env_output( const QStringList& args, + const QString& stdin = QString(), + int timeout = 0 ) const; + + QString obscure( const QString& string ) const; + +private: + inline int _handle_check_target_env_call_error( int ec, const QString& cmd ) const; + + PythonQtObjectPtr m_exceptionCxt; +}; + +#endif // PYTHONQTUTILSWRAPPER_H diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp new file mode 100644 index 000000000..78881e337 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -0,0 +1,208 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PythonQtViewStep.h" +#include "utils/Logger.h" +#include "utils/CalamaresUtilsGui.h" +#include "utils/PythonQtUtils.h" +#include "utils/Retranslator.h" +#include "viewpages/PythonQtJob.h" + +#include + +#include +#include + + +namespace Calamares +{ + +PythonQtViewStep::PythonQtViewStep( PythonQtObjectPtr cxt, + QObject* parent ) + : ViewStep( parent ) + , m_widget( new QWidget() ) + , m_cxt( cxt ) +{ + PythonQt* pq = PythonQt::self(); + Q_ASSERT( pq ); + + // The @calamares_module decorator should have filled _calamares_module_typename + // for us. + QString className = m_cxt.getVariable( "_calamares_module_typename" ).toString(); + + // Instantiate an object of the class marked with @calamares_module and + // store it as _calamares_module. + pq->evalScript( m_cxt, QString( "_calamares_module = %1()" ) + .arg( className ) ); + m_obj = pq->lookupObject( m_cxt, "_calamares_module" ); + + Q_ASSERT( !m_obj.isNull() ); // no entry point, no party + + // Prepare the base widget for the module's pages + m_widget->setLayout( new QVBoxLayout ); + CalamaresUtils::unmarginLayout( m_widget->layout() ); + m_cxt.addObject( "_calamares_module_basewidget", m_widget ); + + CALAMARES_RETRANSLATE_WIDGET( m_widget, + CalamaresUtils::lookupAndCall( m_obj, + { "retranslate" }, + { CalamaresUtils::translatorLocaleName() } ); + ) +} + + +QString +PythonQtViewStep::prettyName() const +{ + return CalamaresUtils::lookupAndCall( m_obj, + { "prettyName", + "prettyname", + "pretty_name" } ).toString(); +} + + +QWidget* +PythonQtViewStep::widget() +{ + if ( m_widget->layout()->count() > 1 ) + cDebug() << "WARNING: PythonQtViewStep wrapper widget has more than 1 child. " + "This should never happen."; + + bool nothingChanged = m_cxt.evalScript( + "_calamares_module.widget() in _calamares_module_basewidget.children()" ).toBool(); + if ( nothingChanged ) + return m_widget; + + // Else, we either don't have a child widget, or we have a child widget that + // was previously set and doesn't apply any more since the Python module + // set a new one. + + // First we clear the layout, which should only ever have 1 item. + // We only remove from the layout and not delete because Python is in charge + // of memory management for these widgets. + while ( m_widget->layout()->itemAt( 0 ) ) + m_widget->layout()->takeAt( 0 ); + + m_cxt.evalScript( + "_calamares_module_basewidget.layout().addWidget(_calamares_module.widget())" ); + + return m_widget; +} + + +void +PythonQtViewStep::next() +{ + CalamaresUtils::lookupAndCall( m_obj, { "next" } ); +} + + +void +PythonQtViewStep::back() +{ + CalamaresUtils::lookupAndCall( m_obj, { "back" } ); +} + + +bool +PythonQtViewStep::isNextEnabled() const +{ + return CalamaresUtils::lookupAndCall( m_obj, + { "isNextEnabled", + "isnextenabled", + "is_next_enabled" } ).toBool(); +} + + +bool +PythonQtViewStep::isBackEnabled() const +{ + return CalamaresUtils::lookupAndCall( m_obj, + { "isBackEnabled", + "isbackenabled", + "is_back_enabled" } ).toBool(); +} + + +bool +PythonQtViewStep::isAtBeginning() const +{ + return CalamaresUtils::lookupAndCall( m_obj, + { "isAtBeginning", + "isatbeginning", + "is_at_beginning" } ).toBool(); +} + + +bool +PythonQtViewStep::isAtEnd() const +{ + return CalamaresUtils::lookupAndCall( m_obj, + { "isAtEnd", + "isatend", + "is_at_end" } ).toBool(); +} + + +QList< Calamares::job_ptr > +PythonQtViewStep::jobs() const +{ + QList< Calamares::job_ptr > jobs; + + PythonQtObjectPtr jobsCallable = PythonQt::self()->lookupCallable( m_obj, "jobs" ); + if ( jobsCallable.isNull() ) + return jobs; + + PythonQtObjectPtr response = PythonQt::self()->callAndReturnPyObject( jobsCallable ); + if ( response.isNull() ) + return jobs; + + PythonQtObjectPtr listPopCallable = PythonQt::self()->lookupCallable( response, "pop" ); + if ( listPopCallable.isNull() ) + return jobs; + + forever + { + PythonQtObjectPtr aJob = PythonQt::self()->callAndReturnPyObject( listPopCallable, { 0 } ); + if ( aJob.isNull() ) + break; + + jobs.append( Calamares::job_ptr( new PythonQtJob( m_cxt, aJob ) ) ); + } + + return jobs; +} + + +void +PythonQtViewStep::setConfigurationMap( const QVariantMap& configurationMap ) +{ + m_obj.addVariable( "configuration", configurationMap ); +} + + +QWidget* +PythonQtViewStep::createScriptingConsole() +{ + PythonQtScriptingConsole* console = new PythonQtScriptingConsole( nullptr, m_cxt ); + console->setProperty( "classname", + m_cxt.getVariable( "_calamares_module_typename" ).toString() ); + return console; +} + +} diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.h b/src/libcalamaresui/viewpages/PythonQtViewStep.h new file mode 100644 index 000000000..e1f8bd1e5 --- /dev/null +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PYTHONQTVIEWSTEP_H +#define PYTHONQTVIEWSTEP_H + +#include "ViewStep.h" + +#include + +namespace Calamares +{ + +class PythonQtViewStep : public Calamares::ViewStep +{ + Q_OBJECT +public: + PythonQtViewStep( PythonQtObjectPtr cxt, + QObject* parent = nullptr ); + + QString prettyName() const override; + + QWidget* widget() override; + + void next() override; + void back() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + QList< Calamares::job_ptr > jobs() const override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + + QWidget* createScriptingConsole(); + +protected: + QWidget* m_widget; + +private: + PythonQtObjectPtr m_cxt; + PythonQtObjectPtr m_obj; +}; + +} + +#endif // PYTHONQTVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/ViewStep.cpp b/src/libcalamaresui/viewpages/ViewStep.cpp index 6d5a5f746..96d80cb5f 100644 --- a/src/libcalamaresui/viewpages/ViewStep.cpp +++ b/src/libcalamaresui/viewpages/ViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -61,6 +62,8 @@ ViewStep::setModuleInstanceKey( const QString& instanceKey ) void ViewStep::setConfigurationMap( const QVariantMap& configurationMap ) -{} +{ + Q_UNUSED( configurationMap ); +} } diff --git a/src/libcalamaresui/viewpages/ViewStep.h b/src/libcalamaresui/viewpages/ViewStep.h index c9dadb18d..617d64fe1 100644 --- a/src/libcalamaresui/viewpages/ViewStep.h +++ b/src/libcalamaresui/viewpages/ViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,19 +28,40 @@ namespace Calamares { +/** + * @brief The ViewStep class is the base class for all view modules. + * A view module is a Calamares module which has at least one UI page (exposed as + * ViewStep::widget), and can optionally create Calamares jobs at runtime. + * As of early 2017, a view module can be implemented by deriving from ViewStep + * in C++ (as a Qt Plugin) or in Python with the PythonQt interface (which also + * mimics the ViewStep class). + * + * A ViewStep can describe itself in human-readable format for the SummaryPage + * (which shows all of the things which have been collected to be done in the + * next exec-step) through prettyStatus() and createSummaryWidget(). + */ class UIDLLEXPORT ViewStep : public QObject { Q_OBJECT public: explicit ViewStep( QObject* parent = nullptr ); - virtual ~ViewStep(); + virtual ~ViewStep() override; virtual QString prettyName() const = 0; + + /** + * Optional. May return a non-empty string describing what this + * step is going to do (should be translated). This is also used + * in the summary page to describe what is going to be done. + * Return an empty string to provide no description. + */ virtual QString prettyStatus() const; /** - * Optional. Should return a widget which will be inserted in the summary - * page. The caller takes ownership of the widget. + * Optional. May return a widget which will be inserted in the summary + * page. The caller takes ownership of the widget. Return nullptr to + * provide no widget. In general, this is only used for complicated + * steps where prettyStatus() is not sufficient. */ virtual QWidget* createSummaryWidget() const; @@ -72,7 +94,10 @@ public: virtual QList< job_ptr > jobs() const = 0; void setModuleInstanceKey( const QString& instanceKey ); - QString moduleInstanceKey() const { return m_instanceKey; } + QString moduleInstanceKey() const + { + return m_instanceKey; + } virtual void setConfigurationMap( const QVariantMap& configurationMap ); @@ -80,6 +105,12 @@ signals: void nextStatusChanged( bool status ); void done(); + /* Emitted when the viewstep thinks it needs more space than is currently + * available for display. @p enlarge is the requested additional space, + * e.g. 24px vertical. This request may be silently ignored. + */ + void enlarge( QSize enlarge ) const; + protected: QString m_instanceKey; }; diff --git a/src/libcalamaresui/widgets/ClickableLabel.cpp b/src/libcalamaresui/widgets/ClickableLabel.cpp index d363737fe..543ab8354 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.cpp +++ b/src/libcalamaresui/widgets/ClickableLabel.cpp @@ -21,13 +21,13 @@ #include -ClickableLabel::ClickableLabel( QWidget* parent, Qt::WindowFlags f ) - : QLabel( parent, f ) +ClickableLabel::ClickableLabel( QWidget* parent ) + : QLabel( parent ) {} -ClickableLabel::ClickableLabel( const QString& text, QWidget* parent, Qt::WindowFlags f ) - : QLabel( text, parent, f ) +ClickableLabel::ClickableLabel( const QString& text, QWidget* parent ) + : QLabel( text, parent ) {} diff --git a/src/libcalamaresui/widgets/ClickableLabel.h b/src/libcalamaresui/widgets/ClickableLabel.h index fc198b98b..378ffda77 100644 --- a/src/libcalamaresui/widgets/ClickableLabel.h +++ b/src/libcalamaresui/widgets/ClickableLabel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,16 +27,16 @@ class ClickableLabel : public QLabel { Q_OBJECT public: - explicit ClickableLabel( QWidget* parent = nullptr, Qt::WindowFlags f = 0 ); - explicit ClickableLabel( const QString& text, QWidget* parent = nullptr, Qt::WindowFlags f = 0 ); - virtual ~ClickableLabel(); + explicit ClickableLabel( QWidget* parent = nullptr ); + explicit ClickableLabel( const QString& text, QWidget* parent = nullptr ); + virtual ~ClickableLabel() override; signals: void clicked(); protected: - virtual void mousePressEvent( QMouseEvent* event ); - virtual void mouseReleaseEvent( QMouseEvent* event ); + virtual void mousePressEvent( QMouseEvent* event ) override; + virtual void mouseReleaseEvent( QMouseEvent* event ) override; private: QTime m_time; diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp index 4920605bc..f07491bcd 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,6 +43,7 @@ FixedAspectRatioLabel::setPixmap( const QPixmap& pixmap ) void FixedAspectRatioLabel::resizeEvent( QResizeEvent* event ) { + Q_UNUSED( event ); QLabel::setPixmap( m_pixmap.scaled( contentsRect().size(), Qt::KeepAspectRatio, diff --git a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h index 71fc6e9d3..33cc4708f 100644 --- a/src/libcalamaresui/widgets/FixedAspectRatioLabel.h +++ b/src/libcalamaresui/widgets/FixedAspectRatioLabel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,10 +28,10 @@ class FixedAspectRatioLabel : public QLabel Q_OBJECT public: explicit FixedAspectRatioLabel( QWidget* parent = nullptr ); - virtual ~FixedAspectRatioLabel(); + virtual ~FixedAspectRatioLabel() override; public slots: - virtual void setPixmap( const QPixmap &pixmap ); + void setPixmap( const QPixmap &pixmap ); void resizeEvent( QResizeEvent* event ) override; private: diff --git a/src/libcalamaresui/widgets/QtWaitingSpinner.cpp b/src/libcalamaresui/widgets/QtWaitingSpinner.cpp deleted file mode 100644 index c298a61ec..000000000 --- a/src/libcalamaresui/widgets/QtWaitingSpinner.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2014, Teo Mrnjavac - * - * Originally from https://github.com/snowwlex/QtWaitingSpinner - * Copyright 2012, Alex Turkin - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#include -#include - -#include - -#include "QtWaitingSpinner.h" - -QtWaitingSpinner::QtWaitingSpinner(int linesNumber, int length, int width, int radius, QWidget* parent) : QWidget(parent), - myLinesNumber(linesNumber), - myLength(length + width), - myWidth(width), - myRadius(radius), - myRoundness(70.0), - myColor(Qt::black), - mySpeed(1), - myTrail(70), - myOpacity(15) -{ - myCurrentCounter = 0; - myTimer = new QTimer(this); - connect(myTimer,SIGNAL(timeout()), this, SLOT(rotate())); - updateSize(); - updateTimer(); - this->hide(); -} - -void QtWaitingSpinner::paintEvent(QPaintEvent* /*ev*/) { - QPainter painter(this); - painter.fillRect(this->rect(), Qt::transparent); - painter.setRenderHint(QPainter::Antialiasing, true); - - if (myCurrentCounter >= myLinesNumber) { - myCurrentCounter = 0; - } - painter.setPen(Qt::NoPen); - for (int i = 0; i < myLinesNumber; ++i) { - painter.save(); - painter.translate(myRadius + myLength, myRadius + myLength); - qreal rotateAngle = (qreal)360 * qreal(i) / qreal(myLinesNumber); - painter.rotate(rotateAngle); - painter.translate(myRadius, 0); - int distance = lineDistance(i, myCurrentCounter, myLinesNumber); - QColor color = countTrailColor(distance, myLinesNumber, myTrail, myOpacity, myColor); - painter.setBrush(color); - //TODO improve the way rounded rect is painted - painter.drawRoundedRect(QRect(0, -myWidth/2, myLength, myWidth), myRoundness, myRoundness, Qt::RelativeSize); - painter.restore(); - } -} - -void QtWaitingSpinner::start() { - this->show(); - if (!myTimer->isActive()) { - myTimer->start(); - myCurrentCounter = 0; - } -} - -void QtWaitingSpinner::finish() { - this->hide(); - if (myTimer->isActive()) { - myTimer->stop(); - myCurrentCounter = 0; - } -} - -void QtWaitingSpinner::setLinesNumber(int linesNumber) { - myLinesNumber = linesNumber; - myCurrentCounter = 0; - updateTimer(); -} - -void QtWaitingSpinner::setLength(int length){ - myLength = length; - updateSize(); -} - -void QtWaitingSpinner::setWidth(int width) { - myWidth = width; - updateSize(); -} - -void QtWaitingSpinner::setRadius(int radius) { - myRadius = radius; - updateSize(); -} - -void QtWaitingSpinner::setRoundness(qreal roundness) { - myRoundness = std::max(0.0, std::min(100.0, roundness)); -} - -void QtWaitingSpinner::setColor(QColor color) { - myColor = color; -} - -void QtWaitingSpinner::setSpeed(qreal speed) { - mySpeed = speed; - updateTimer(); -} - -void QtWaitingSpinner::setTrail(int trail) { - myTrail = trail; -} - -void QtWaitingSpinner::setOpacity(int minOpacity) { - myOpacity = minOpacity; -} - -void QtWaitingSpinner::rotate() { - ++myCurrentCounter; - if (myCurrentCounter >= myLinesNumber) { - myCurrentCounter = 0; - } - update(); -} - -void QtWaitingSpinner::updateSize() { - int size = (myRadius + myLength) * 2; - setFixedSize(size, size); -} - -void QtWaitingSpinner::updateTimer() { - myTimer->setInterval(countTimeout(myLinesNumber, mySpeed)); -} - -int QtWaitingSpinner::countTimeout(int lines, qreal speed) { - return 1000 / (lines * speed); -} - -int QtWaitingSpinner::lineDistance(int from, int to, int lines) { - int result = to - from; - if (result < 0) { - result += lines; - } - return result; -} - -QColor QtWaitingSpinner::countTrailColor(int distance, int lines, int trail, int minOpacity, QColor color) { - if (distance == 0) { - return color; - } - const qreal minAlphaF = (qreal)minOpacity / 100; - int distanceThreshold = ceil( (lines - 1) * (qreal)trail / 100); - if (distance > distanceThreshold) { - color.setAlphaF(minAlphaF); - return color; - } - qreal alphaDiff = color.alphaF() - (qreal)minAlphaF; - qreal gradation = alphaDiff / (qreal)(distanceThreshold + 1); - qreal resultAlpha = color.alphaF() - gradation * distance; - resultAlpha = std::min(1.0, std::max(0.0, resultAlpha)); //if alpha is out of bound, force it to bounds - color.setAlphaF(resultAlpha); - return color; -} - diff --git a/src/libcalamaresui/widgets/QtWaitingSpinner.h b/src/libcalamaresui/widgets/QtWaitingSpinner.h deleted file mode 100644 index b01ebd1a8..000000000 --- a/src/libcalamaresui/widgets/QtWaitingSpinner.h +++ /dev/null @@ -1,82 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2014, Teo Mrnjavac - * - * Originally from https://github.com/snowwlex/QtWaitingSpinner - * Copyright 2012, Alex Turkin - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#ifndef QTWAITINGSPINNER_H -#define QTWAITINGSPINNER_H - -#include "UiDllMacro.h" - -#include - -#include -#include - -class UIDLLEXPORT QtWaitingSpinner : public QWidget { - Q_OBJECT - -public: - explicit QtWaitingSpinner(int linesNumber = 12, int length = 7, int width = 5, int radius = 10, QWidget* parent = 0); - -public Q_SLOTS: - void start(); - void finish(); - -public: - void setLinesNumber(int linesNumber); - void setLength(int length); - void setWidth(int width); - void setRadius(int radius); - void setRoundness(qreal roundness); - void setColor(QColor color); - void setSpeed(qreal speed); - void setTrail(int trail); - void setOpacity(int minOpacity); - -private Q_SLOTS: - void rotate(); - void updateSize(); - void updateTimer(); - -protected: - void paintEvent(QPaintEvent* ev); - -private: - static int countTimeout(int lines, qreal speed); - static int lineDistance(int from, int to, int lines); - static QColor countTrailColor(int distance, int lines, int trail, int minOpacity, QColor color); - -private: - int myLinesNumber; - int myLength; - int myWidth; - int myRadius; - qreal myRoundness; //0..100 - QColor myColor; - qreal mySpeed; // in rounds per second - int myTrail; - int myOpacity; - -private: - QTimer* myTimer; - int myCurrentCounter; -}; - -#endif // QTWAITINGSPINNER_H diff --git a/src/libcalamaresui/widgets/WaitingWidget.cpp b/src/libcalamaresui/widgets/WaitingWidget.cpp index 55471eff3..03c977691 100644 --- a/src/libcalamaresui/widgets/WaitingWidget.cpp +++ b/src/libcalamaresui/widgets/WaitingWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +20,7 @@ #include "WaitingWidget.h" #include "utils/CalamaresUtilsGui.h" -#include "QtWaitingSpinner.h" +#include "waitingspinnerwidget.h" #include #include @@ -34,7 +35,7 @@ WaitingWidget::WaitingWidget( const QString& text, QWidget* parent ) waitingLayout->addLayout( pbLayout ); pbLayout->addStretch(); - QtWaitingSpinner* spnr = new QtWaitingSpinner(); + WaitingSpinnerWidget* spnr = new WaitingSpinnerWidget(); pbLayout->addWidget( spnr ); pbLayout->addStretch(); @@ -43,9 +44,9 @@ WaitingWidget::WaitingWidget( const QString& text, QWidget* parent ) int spnrSize = m_waitingLabel->fontMetrics().height() * 4; spnr->setFixedSize( spnrSize, spnrSize ); - spnr->setRadius( spnrSize / 2 ); - spnr->setLength( spnrSize / 2 ); - spnr->setWidth( spnrSize / 8 ); + spnr->setInnerRadius( spnrSize / 2 ); + spnr->setLineLength( spnrSize / 2 ); + spnr->setLineWidth( spnrSize / 8 ); spnr->start(); m_waitingLabel->setAlignment( Qt::AlignCenter ); diff --git a/src/libcalamaresui/widgets/waitingspinnerwidget.cpp b/src/libcalamaresui/widgets/waitingspinnerwidget.cpp new file mode 100644 index 000000000..317d83807 --- /dev/null +++ b/src/libcalamaresui/widgets/waitingspinnerwidget.cpp @@ -0,0 +1,283 @@ +/* === This file is part of Calamares - === + * + * SPDX-License-Identifier: MIT + * License-Filename: LICENSES/MIT-QtWaitingSpinner + */ + +/* Original Work Copyright (c) 2012-2014 Alexander Turkin + Modified 2014 by William Hallatt + Modified 2015 by Jacob Dawid + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +// Own includes +#include "waitingspinnerwidget.h" + +// Standard includes +#include +#include + +// Qt includes +#include +#include + +WaitingSpinnerWidget::WaitingSpinnerWidget(QWidget *parent, + bool centerOnParent, + bool disableParentWhenSpinning) + : QWidget(parent), + _centerOnParent(centerOnParent), + _disableParentWhenSpinning(disableParentWhenSpinning) { + initialize(); +} + +WaitingSpinnerWidget::WaitingSpinnerWidget(Qt::WindowModality modality, + QWidget *parent, + bool centerOnParent, + bool disableParentWhenSpinning) + : QWidget(parent, Qt::Dialog | Qt::FramelessWindowHint), + _centerOnParent(centerOnParent), + _disableParentWhenSpinning(disableParentWhenSpinning){ + initialize(); + + // We need to set the window modality AFTER we've hidden the + // widget for the first time since changing this property while + // the widget is visible has no effect. + setWindowModality(modality); + setAttribute(Qt::WA_TranslucentBackground); +} + +void WaitingSpinnerWidget::initialize() { + _color = Qt::black; + _roundness = 100.0; + _minimumTrailOpacity = 3.14159265358979323846; + _trailFadePercentage = 80.0; + _revolutionsPerSecond = 1.57079632679489661923; + _numberOfLines = 20; + _lineLength = 10; + _lineWidth = 2; + _innerRadius = 10; + _currentCounter = 0; + _isSpinning = false; + + _timer = new QTimer(this); + connect(_timer, SIGNAL(timeout()), this, SLOT(rotate())); + updateSize(); + updateTimer(); + hide(); +} + +void WaitingSpinnerWidget::paintEvent(QPaintEvent *) { + updatePosition(); + QPainter painter(this); + painter.fillRect(this->rect(), Qt::transparent); + painter.setRenderHint(QPainter::Antialiasing, true); + + if (_currentCounter >= _numberOfLines) { + _currentCounter = 0; + } + + painter.setPen(Qt::NoPen); + for (int i = 0; i < _numberOfLines; ++i) { + painter.save(); + painter.translate(_innerRadius + _lineLength, + _innerRadius + _lineLength); + qreal rotateAngle = + static_cast(360 * i) / static_cast(_numberOfLines); + painter.rotate(rotateAngle); + painter.translate(_innerRadius, 0); + int distance = + lineCountDistanceFromPrimary(i, _currentCounter, _numberOfLines); + QColor color = + currentLineColor(distance, _numberOfLines, _trailFadePercentage, + _minimumTrailOpacity, _color); + painter.setBrush(color); + // TODO improve the way rounded rect is painted + painter.drawRoundedRect( + QRect(0, -_lineWidth / 2, _lineLength, _lineWidth), _roundness, + _roundness, Qt::RelativeSize); + painter.restore(); + } +} + +void WaitingSpinnerWidget::start() { + updatePosition(); + _isSpinning = true; + show(); + + if(parentWidget() && _disableParentWhenSpinning) { + parentWidget()->setEnabled(false); + } + + if (!_timer->isActive()) { + _timer->start(); + _currentCounter = 0; + } +} + +void WaitingSpinnerWidget::stop() { + _isSpinning = false; + hide(); + + if(parentWidget() && _disableParentWhenSpinning) { + parentWidget()->setEnabled(true); + } + + if (_timer->isActive()) { + _timer->stop(); + _currentCounter = 0; + } +} + +void WaitingSpinnerWidget::setNumberOfLines(int lines) { + _numberOfLines = lines; + _currentCounter = 0; + updateTimer(); +} + +void WaitingSpinnerWidget::setLineLength(int length) { + _lineLength = length; + updateSize(); +} + +void WaitingSpinnerWidget::setLineWidth(int width) { + _lineWidth = width; + updateSize(); +} + +void WaitingSpinnerWidget::setInnerRadius(int radius) { + _innerRadius = radius; + updateSize(); +} + +QColor WaitingSpinnerWidget::color() { + return _color; +} + +qreal WaitingSpinnerWidget::roundness() { + return _roundness; +} + +qreal WaitingSpinnerWidget::minimumTrailOpacity() { + return _minimumTrailOpacity; +} + +qreal WaitingSpinnerWidget::trailFadePercentage() { + return _trailFadePercentage; +} + +qreal WaitingSpinnerWidget::revolutionsPersSecond() { + return _revolutionsPerSecond; +} + +int WaitingSpinnerWidget::numberOfLines() { + return _numberOfLines; +} + +int WaitingSpinnerWidget::lineLength() { + return _lineLength; +} + +int WaitingSpinnerWidget::lineWidth() { + return _lineWidth; +} + +int WaitingSpinnerWidget::innerRadius() { + return _innerRadius; +} + +bool WaitingSpinnerWidget::isSpinning() const { + return _isSpinning; +} + +void WaitingSpinnerWidget::setRoundness(qreal roundness) { + _roundness = std::max(0.0, std::min(100.0, roundness)); +} + +void WaitingSpinnerWidget::setColor(QColor color) { + _color = color; +} + +void WaitingSpinnerWidget::setRevolutionsPerSecond(qreal revolutionsPerSecond) { + _revolutionsPerSecond = revolutionsPerSecond; + updateTimer(); +} + +void WaitingSpinnerWidget::setTrailFadePercentage(qreal trail) { + _trailFadePercentage = trail; +} + +void WaitingSpinnerWidget::setMinimumTrailOpacity(qreal minimumTrailOpacity) { + _minimumTrailOpacity = minimumTrailOpacity; +} + +void WaitingSpinnerWidget::rotate() { + ++_currentCounter; + if (_currentCounter >= _numberOfLines) { + _currentCounter = 0; + } + update(); +} + +void WaitingSpinnerWidget::updateSize() { + int size = (_innerRadius + _lineLength) * 2; + setFixedSize(size, size); +} + +void WaitingSpinnerWidget::updateTimer() { + _timer->setInterval(1000 / (_numberOfLines * _revolutionsPerSecond)); +} + +void WaitingSpinnerWidget::updatePosition() { + if (parentWidget() && _centerOnParent) { + move(parentWidget()->width() / 2 - width() / 2, + parentWidget()->height() / 2 - height() / 2); + } +} + +int WaitingSpinnerWidget::lineCountDistanceFromPrimary(int current, int primary, + int totalNrOfLines) { + int distance = primary - current; + if (distance < 0) { + distance += totalNrOfLines; + } + return distance; +} + +QColor WaitingSpinnerWidget::currentLineColor(int countDistance, int totalNrOfLines, + qreal trailFadePerc, qreal minOpacity, + QColor color) { + if (countDistance == 0) { + return color; + } + const qreal minAlphaF = minOpacity / 100.0; + int distanceThreshold = + static_cast(ceil((totalNrOfLines - 1) * trailFadePerc / 100.0)); + if (countDistance > distanceThreshold) { + color.setAlphaF(minAlphaF); + } else { + qreal alphaDiff = color.alphaF() - minAlphaF; + qreal gradient = alphaDiff / static_cast(distanceThreshold + 1); + qreal resultAlpha = color.alphaF() - gradient * countDistance; + + // If alpha is out of bounds, clip it. + resultAlpha = std::min(1.0, std::max(0.0, resultAlpha)); + color.setAlphaF(resultAlpha); + } + return color; +} diff --git a/src/libcalamaresui/widgets/waitingspinnerwidget.h b/src/libcalamaresui/widgets/waitingspinnerwidget.h new file mode 100644 index 000000000..0ed8e69d3 --- /dev/null +++ b/src/libcalamaresui/widgets/waitingspinnerwidget.h @@ -0,0 +1,120 @@ +/* === This file is part of Calamares - === + * + * SPDX-License-Identifier: MIT + * License-Filename: LICENSES/MIT-QtWaitingSpinner + */ + +/* Original Work Copyright (c) 2012-2014 Alexander Turkin + Modified 2014 by William Hallatt + Modified 2015 by Jacob Dawid +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#pragma once + +// Qt includes +#include +#include +#include + +class WaitingSpinnerWidget : public QWidget { + Q_OBJECT +public: + /*! Constructor for "standard" widget behaviour - use this + * constructor if you wish to, e.g. embed your widget in another. */ + WaitingSpinnerWidget(QWidget *parent = 0, + bool centerOnParent = true, + bool disableParentWhenSpinning = true); + + /*! Constructor - use this constructor to automatically create a modal + * ("blocking") spinner on top of the calling widget/window. If a valid + * parent widget is provided, "centreOnParent" will ensure that + * QtWaitingSpinner automatically centres itself on it, if not, + * "centreOnParent" is ignored. */ + WaitingSpinnerWidget(Qt::WindowModality modality, + QWidget *parent = 0, + bool centerOnParent = true, + bool disableParentWhenSpinning = true); + +public slots: + void start(); + void stop(); + +public: + void setColor(QColor color); + void setRoundness(qreal roundness); + void setMinimumTrailOpacity(qreal minimumTrailOpacity); + void setTrailFadePercentage(qreal trail); + void setRevolutionsPerSecond(qreal revolutionsPerSecond); + void setNumberOfLines(int lines); + void setLineLength(int length); + void setLineWidth(int width); + void setInnerRadius(int radius); + void setText(QString text); + + QColor color(); + qreal roundness(); + qreal minimumTrailOpacity(); + qreal trailFadePercentage(); + qreal revolutionsPersSecond(); + int numberOfLines(); + int lineLength(); + int lineWidth(); + int innerRadius(); + + bool isSpinning() const; + +private slots: + void rotate(); + +protected: + void paintEvent(QPaintEvent *paintEvent); + +private: + static int lineCountDistanceFromPrimary(int current, int primary, + int totalNrOfLines); + static QColor currentLineColor(int distance, int totalNrOfLines, + qreal trailFadePerc, qreal minOpacity, + QColor color); + + void initialize(); + void updateSize(); + void updateTimer(); + void updatePosition(); + +private: + QColor _color; + qreal _roundness; // 0..100 + qreal _minimumTrailOpacity; + qreal _trailFadePercentage; + qreal _revolutionsPerSecond; + int _numberOfLines; + int _lineLength; + int _lineWidth; + int _innerRadius; + +private: + WaitingSpinnerWidget(const WaitingSpinnerWidget&); + WaitingSpinnerWidget& operator=(const WaitingSpinnerWidget&); + + QTimer *_timer; + bool _centerOnParent; + bool _disableParentWhenSpinning; + int _currentCounter; + bool _isSpinning; +}; diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index ab4033aa1..48cda5c72 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -13,3 +13,6 @@ foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) calamares_add_module_subdirectory( ${SUBDIRECTORY} ) endif() endforeach() + +include( CalamaresAddTranslations ) +add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) diff --git a/src/modules/README.md b/src/modules/README.md index 386d15a48..a2ec06144 100644 --- a/src/modules/README.md +++ b/src/modules/README.md @@ -1,60 +1,127 @@ -Calamares modules -=== +# Calamares modules + +Calamares modules are plugins that provide features like installer pages, +batch jobs, etc. An installer page (visible to the user) is called a "view", +while other modules are "jobs". -Calamares modules are plugins that provide features like installer pages, batch jobs, etc. Each Calamares module lives in its own directory. All modules are installed in `$DESTDIR/lib/calamares/modules`. -### Module directory and descriptor -A Calamares module must have a *module descriptor file*, named `module.desc`, this file must be placed in the module's -directory. -The module descriptor file is a YAML 1.2 document which defines the module's name, type, interface and possibly other -properties. The name of the module as defined in `module.desc` must be the same as the name of the module's directory. +# Module types There are two types of Calamares module: -* viewmodule, -* jobmodule. +* viewmodule, for user-visible modules. These may be in C++, or PythonQt. +* jobmodule, for not-user-visible modules. These may be done in C++, + Python, or as external processes. -There are three interfaces for Calamares modules: +# Module interfaces + +There are three (four) interfaces for Calamares modules: * qtplugin, -* python, -* process. +* python (jobmodules only), +* pythonqt (optional), +* process (jobmodules only). -### Module-specific configuration -A Calamares module *may* read a module configuration file, named `.conf`. If such a file is present in the +# Module directory + +Each Calamares module lives in its own directory. The contents +of the directory depend on the interface and type of the module. + +## Module descriptor + +A Calamares module must have a *module descriptor file*, named +`module.desc`. For C++ (qtplugin) modules using CMake as a build- +system and using the calamares_add_plugin() function -- this is the +recommended way to create such modules -- the module descriptor +file is optional, since it can be generated by the build system. +For other module interfaces, the module descriptor file is required. + +The module descriptor file must be placed in the module's directory. +The module descriptor file is a YAML 1.2 document which defines the +module's name, type, interface and possibly other properties. The name +of the module as defined in `module.desc` must be the same as the name +of the module's directory. + +Module descriptors must have the following keys: +- *name* (an identifier; must be the same as the directory name) +- *type* ("job" or "view") +- *interface* (see below for the different interfaces; generally we + refer to the kinds of modules by their interface) + +## Module-specific configuration + +A Calamares module *may* read a module configuration file, +named `.conf`. If such a file is present in the module's directory, it is shipped as a *default* configuration file. -The module configuration file, if it exists, is a YAML 1.2 document which contains a YAML map of anything. -All default module configuration files are installed in `$DESTDIR/share/calamares/modules` but can be overridden by -files with the same name placed manually (or by the packager) in `/etc/calamares/modules`. +The module configuration file, if it exists, is a YAML 1.2 document +which contains a YAML map of anything. -### Qt plugin viewmodules +All default module configuration files are installed in +`$DESTDIR/share/calamares/modules` but can be overridden by +files with the same name placed manually (or by the packager) +in `/etc/calamares/modules`. -Currently the only way to write a module which exposes one or more installer pages (viewmodule) is through a Qt plugin. -Viewmodules should implement `Calamares::ViewStep`. They can also implement `Calamares::Job` to provide jobs. +## C++ modules -To add a Qt plugin module, put it in a subdirectory and make sure it has a `module.desc` and a `CMakeLists.txt` with a -`calamares_add_plugin` call. It will be picked up automatically by our CMake magic. +Currently the recommended way to write a module which exposes one or more +installer pages (viewmodule) is through a C++ and Qt plugin. Viewmodules must +implement `Calamares::ViewStep`. They can also implement `Calamares::Job` +to provide jobs. +To add a Qt plugin module, put it in a subdirectory and make sure it has +a `CMakeLists.txt` with a `calamares_add_plugin` call. It will be picked +up automatically by our CMake magic. The `module.desc` file is optional. -### Python and process jobmodules +## Python modules -Batch jobs for Calamares can be written as Python scripts or as generic commands (shell scripts, external programs, etc.). -To add a Python or process jobmodule, put it in a subdirectory and make sure it has a `module.desc`. -It will be picked up automatically by our CMake magic. +Modules may use one of the python interfaces, which may be present +in a Calamares installation (but also may not be). These modules must have +a `module.desc` file. The Python script must implement one or more of the +Python interfaces for Calamares -- either the python jobmodule interface, +or the experimental pythonqt job- and viewmodule interfaces. + +To add a Python or process jobmodule, put it in a subdirectory and make sure +it has a `module.desc`. It will be picked up automatically by our CMake magic. +For all kinds of Python jobs, the key *script* must be set to the name of +the main python file for the job. This is almost universally "main.py". `CMakeLists.txt` is *not* used for Python and process jobmodules. -A Python jobmodule is a Python program which imports libcalamares and has a function `run()` as entry point. -`run()` must return `None` if everything went well, or a tuple `(str,str)` with an error message and description if -something went wrong. +Calamares offers a Python API for module developers, the core Calamares +functionality is exposed as `libcalamares.job` for job data, +`libcalamares.globalstorage` for shared data and `libcalamares.utils` for +generic utility functions. Documentation is inline. -Calamares offers a Python API for module developers, the core Calamares functionality is exposed as `libcalamares.job` -for job data, `libcalamares.globalstorage` for shared data and `libcalamares.utils` for generic utility functions. -Documentation is inline. +All code in Python job modules must obey PEP8, the only exception are +`libcalamares.globalstorage` keys, which should always be +camelCaseWithLowerCaseInitial to match the C++ identifier convention. -All code in Python job modules must obey PEP8, the only exception are `libcalamares.globalstorage` keys, which should -always be camelCaseWithLowerCaseInitial. +For testing and debugging we provide the `testmodule.py` script which +fakes a limited Calamares Python environment for running a single jobmodule. + +### Python Jobmodule + +A Python jobmodule is a Python program which imports libcalamares and has a +function `run()` as entry point. The function `run()` must return `None` if +everything went well, or a tuple `(str,str)` with an error message and +description if something went wrong. + +### PythonQt Jobmodule + +A PythonQt jobmodule implements the experimental Job interface by defining +a subclass of something. + +### PythonQt Viewmodule + +A PythonQt viewmodule implements the experimental View interface by defining +a subclass of something. + +## Process jobmodules + +A process jobmodule runs a (single) command. The interface is "process", +while the module type must be "job" or "jobmodule". + +The key *command* should have a string as value, which is passed to the +shell -- remember to quote it properly. -For testing and debugging we provide the `testmodule.py` script which fakes a limited Calamares Python environment for -running a single jobmodule. \ No newline at end of file diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index 846b04382..c2cdc1108 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -9,6 +9,10 @@ # Copyright 2014, Benjamin Vaudour # Copyright 2014, Kevin Kofler # Copyright 2015, Philip Mueller +# Copyright 2016-2017, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# Copyright 2017, Adriaan de Groot +# Copyright 2017, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,16 +27,18 @@ # You should have received a copy of the GNU General Public License # along with Calamares. If not, see . -import libcalamares - import os +import shutil import subprocess +import libcalamares + from libcalamares.utils import check_target_env_call def get_uuid(): - """ Checks and passes 'uuid' to other routine. + """ + Checks and passes 'uuid' to other routine. :return: """ @@ -50,7 +56,9 @@ def get_uuid(): def get_bootloader_entry_name(): - """ Passes 'bootloader_entry_name' to other routine based on configuration file. + """ + Passes 'bootloader_entry_name' to other routine based + on configuration file. :return: """ @@ -62,7 +70,8 @@ def get_bootloader_entry_name(): def get_kernel_line(kernel_type): - """ Passes 'kernel_line' to other routine based on configuration file. + """ + Passes 'kernel_line' to other routine based on configuration file. :param kernel_type: :return: @@ -80,7 +89,8 @@ def get_kernel_line(kernel_type): def create_systemd_boot_conf(uuid, conf_path, kernel_line): - """ Creates systemd-boot configuration files based on given parameters. + """ + Creates systemd-boot configuration files based on given parameters. :param uuid: :param conf_path: @@ -89,30 +99,58 @@ def create_systemd_boot_conf(uuid, conf_path, kernel_line): distribution = get_bootloader_entry_name() kernel = libcalamares.job.configuration["kernel"] img = libcalamares.job.configuration["img"] - partitions = libcalamares.globalstorage.value("partitions") - swap = "" + kernel_params = ["quiet"] + partitions = libcalamares.globalstorage.value("partitions") + swap_uuid = "" + + cryptdevice_params = [] + + # Take over swap settings: + # - unencrypted swap partition sets swap_uuid + # - encrypted root sets cryptdevice_params for partition in partitions: - if partition["fs"] == "linuxswap": - swap = partition["uuid"] + has_luks = "luksMapperName" in partition + if partition["fs"] == "linuxswap" and not has_luks: + swap_uuid = partition["uuid"] + + if partition["mountPoint"] == "/" and has_luks: + cryptdevice_params = ["cryptdevice=UUID=" + + partition["luksUuid"] + + ":" + + partition["luksMapperName"], + "root=/dev/mapper/" + + partition["luksMapperName"], + "resume=/dev/mapper/" + + partition["luksMapperName"]] + + if cryptdevice_params: + kernel_params.extend(cryptdevice_params) + else: + kernel_params.append("root=UUID={!s}".format(uuid)) + + if swap_uuid: + kernel_params.append("resume=UUID={!s}".format(swap_uuid)) lines = [ '## This is just an example config file.\n', - '## Please edit the paths and kernel parameters according to your system.\n', + '## Please edit the paths and kernel parameters according\n', + '## to your system.\n', '\n', "title {!s}{!s}\n".format(distribution, kernel_line), "linux {!s}\n".format(kernel), "initrd {!s}\n".format(img), - "options root=UUID={!s} quiet resume=UUID={!s} rw\n".format(uuid, swap), + "options {!s} rw\n".format(" ".join(kernel_params)), ] - with open(conf_path, 'w') as f: - for l in lines: - f.write(l) + with open(conf_path, 'w') as conf_file: + for line in lines: + conf_file.write(line) def create_loader(loader_path): - """ Writes configuration for loader. + """ + Writes configuration for loader. :param loader_path: """ @@ -125,30 +163,38 @@ def create_loader(loader_path): "default {!s}\n".format(distribution_translated), ] - with open(loader_path, 'w') as f: - for l in lines: - f.write(l) + with open(loader_path, 'w') as loader_file: + for line in lines: + loader_file.write(line) def install_systemd_boot(efi_directory): - """ Installs systemd-boot as bootloader for EFI setups. + """ + Installs systemd-boot as bootloader for EFI setups. :param efi_directory: """ print("Bootloader: systemd-boot") install_path = libcalamares.globalstorage.value("rootMountPoint") install_efi_directory = install_path + efi_directory - fallback_kernel_line = libcalamares.job.configuration["fallbackKernelLine"] uuid = get_uuid() distribution = get_bootloader_entry_name() file_name_sanitizer = str.maketrans(" /", "_-") distribution_translated = distribution.translate(file_name_sanitizer) - conf_path = os.path.join(install_efi_directory, "loader", "entries", - "{!s}.conf".format(distribution_translated)) - fallback_path = os.path.join(install_efi_directory, "loader", "entries", - "{!s}-fallback.conf".format(distribution_translated)) - loader_path = os.path.join(install_efi_directory, "loader", "loader.conf") - subprocess.call(["bootctl", "--path={!s}".format(install_efi_directory), "install"]) + conf_path = os.path.join(install_efi_directory, + "loader", + "entries", + distribution_translated + ".conf") + fallback_path = os.path.join(install_efi_directory, + "loader", + "entries", + distribution_translated + "-fallback.conf") + loader_path = os.path.join(install_efi_directory, + "loader", + "loader.conf") + subprocess.call(["bootctl", + "--path={!s}".format(install_efi_directory), + "install"]) kernel_line = get_kernel_line("default") print("Configure: \"{!s}\"".format(kernel_line)) create_systemd_boot_conf(uuid, conf_path, kernel_line) @@ -159,18 +205,23 @@ def install_systemd_boot(efi_directory): def install_grub(efi_directory, fw_type): - """ Installs grub as bootloader, either in pc or efi mode. + """ + Installs grub as bootloader, either in pc or efi mode. :param efi_directory: :param fw_type: """ if fw_type == "efi": print("Bootloader: grub (efi)") - efi_directory_firmware = efi_directory + "/EFI" - check_target_env_call(["mkdir", "-p", "{!s}".format(efi_directory)]) + install_path = libcalamares.globalstorage.value("rootMountPoint") + install_efi_directory = install_path + efi_directory + + if not os.path.isdir(install_efi_directory): + os.makedirs(install_efi_directory) if "efiBootloaderId" in libcalamares.job.configuration: - efi_bootloader_id = libcalamares.job.configuration["efiBootloaderId"] + efi_bootloader_id = libcalamares.job.configuration[ + "efiBootloaderId"] else: branding = libcalamares.globalstorage.value("branding") distribution = branding["bootloaderEntryName"] @@ -178,34 +229,77 @@ def install_grub(efi_directory, fw_type): efi_bootloader_id = distribution.translate(file_name_sanitizer) # get bitness of the underlying UEFI try: - f = open("/sys/firmware/efi/fw_platform_size", "r") - efi_bitness = f.read(2) - except: - # if the kernel is older than 4.0, the UEFI bitness likely isn't exposed to the userspace - # so we assume a 64 bit UEFI here + sysfile = open("/sys/firmware/efi/fw_platform_size", "r") + efi_bitness = sysfile.read(2) + except Exception: + # if the kernel is older than 4.0, the UEFI bitness likely isn't + # exposed to the userspace so we assume a 64 bit UEFI here efi_bitness = "64" - bitness_translate = {"32": "--target=i386-efi", "64": "--target=x86_64-efi"} - check_target_env_call([libcalamares.job.configuration["grubInstall"], bitness_translate[efi_bitness], - "--efi-directory={!s}".format(efi_directory), - "--bootloader-id={!s}".format(efi_bootloader_id), - "--force"]) + bitness_translate = {"32": "--target=i386-efi", + "64": "--target=x86_64-efi"} + check_target_env_call([libcalamares.job.configuration["grubInstall"], + bitness_translate[efi_bitness], + "--efi-directory=" + efi_directory, + "--bootloader-id=" + efi_bootloader_id, + "--force"]) + + # VFAT is weird, see issue CAL-385 + install_efi_directory_firmware = (vfat_correct_case( + install_efi_directory, + "EFI")) + if not os.path.exists(install_efi_directory_firmware): + os.makedirs(install_efi_directory_firmware) + + # there might be several values for the boot directory + # most usual they are boot, Boot, BOOT + + install_efi_boot_directory = (vfat_correct_case( + install_efi_directory_firmware, + "boot")) + if not os.path.exists(install_efi_boot_directory): + os.makedirs(install_efi_boot_directory) + # Workaround for some UEFI firmwares - check_target_env_call(["mkdir", "-p", "{!s}/boot".format(efi_directory_firmware)]) - check_target_env_call(["cp", "{!s}/{!s}/grubx64.efi".format(efi_directory_firmware, efi_bootloader_id), - "{!s}/boot/bootx64.efi".format(efi_directory_firmware)]) + efi_file_source = {"32": os.path.join(install_efi_directory_firmware, + efi_bootloader_id, + "grubia32.efi"), + "64": os.path.join(install_efi_directory_firmware, + efi_bootloader_id, + "grubx64.efi")} + shutil.copy2(efi_file_source[efi_bitness], install_efi_boot_directory) else: print("Bootloader: grub (bios)") - boot_loader = libcalamares.globalstorage.value("bootLoader") - check_target_env_call([libcalamares.job.configuration["grubInstall"], "--target=i386-pc", - "--recheck", "--force", boot_loader["installPath"]]) + if libcalamares.globalstorage.value("bootLoader") is None: + return - check_target_env_call([libcalamares.job.configuration["grubMkconfig"], "-o", - libcalamares.job.configuration["grubCfg"]]) + boot_loader = libcalamares.globalstorage.value("bootLoader") + if boot_loader["installPath"] is None: + return + + check_target_env_call([libcalamares.job.configuration["grubInstall"], + "--target=i386-pc", + "--recheck", + "--force", + boot_loader["installPath"]]) + + # The file specified in grubCfg should already be filled out + # by the grubcfg job module. + check_target_env_call([libcalamares.job.configuration["grubMkconfig"], + "-o", libcalamares.job.configuration["grubCfg"]]) + + +def vfat_correct_case(parent, name): + for candidate in os.listdir(parent): + if name.lower() == candidate.lower(): + return os.path.join(parent, candidate) + return os.path.join(parent, name) def prepare_bootloader(fw_type): - """ Prepares bootloader and set proper flags to EFI boot partition (esp,boot). - Based on value 'efi_boot_loader', it either calls systemd-boot or grub to be installed. + """ + Prepares bootloader. + Based on value 'efi_boot_loader', it either calls systemd-boot + or grub to be installed. :param fw_type: :return: @@ -213,33 +307,6 @@ def prepare_bootloader(fw_type): efi_boot_loader = libcalamares.job.configuration["efiBootLoader"] efi_directory = libcalamares.globalstorage.value("efiSystemPartition") - if fw_type == "efi": - partitions = libcalamares.globalstorage.value("partitions") - boot_p = "" - device = "" - - for partition in partitions: - if partition["mountPoint"] == efi_directory: - boot_device = partition["device"] - boot_p = boot_device[-1:] - device = boot_device[:-1] - - if not boot_p or not device: - return ("EFI directory \"{!s}\" not found!".format(efi_directory), - "Boot partition: \"{!s}\"".format(boot_p), - "Boot device: \"{!s}\"".format(device)) - else: - print("EFI directory: \"{!s}\"".format(efi_directory)) - print("Boot partition: \"{!s}\"".format(boot_p)) - print("Boot device: \"{!s}\"".format(device)) - - if not device: - print("WARNING: no EFI system partition or EFI system partition mount point not set.") - print(" >>> no EFI bootloader will be installed <<<") - return None - print("Set 'EF00' flag") - subprocess.call(["sgdisk", "--typecode={!s}:EF00".format(boot_p), "{!s}".format(device)]) - if efi_boot_loader == "systemd-boot" and fw_type == "efi": install_systemd_boot(efi_directory) else: @@ -247,14 +314,31 @@ def prepare_bootloader(fw_type): def run(): - """ Starts procedure and passes 'fw_type' to other routine. + """ + Starts procedure and passes 'fw_type' to other routine. :return: """ - if libcalamares.globalstorage.value("bootLoader") is None: - return None fw_type = libcalamares.globalstorage.value("firmwareType") + + if (libcalamares.globalstorage.value("bootLoader") is None + and fw_type != "efi"): + return None + + partitions = libcalamares.globalstorage.value("partitions") + + if fw_type == "efi": + esp_found = False + + for partition in partitions: + if (partition["mountPoint"] == + libcalamares.globalstorage.value("efiSystemPartition")): + esp_found = True + + if not esp_found: + return None + prepare_bootloader(fw_type) return None diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf index 59ad061dc..1c30ed637 100644 --- a/src/modules/displaymanager/displaymanager.conf +++ b/src/modules/displaymanager/displaymanager.conf @@ -20,3 +20,7 @@ displaymanagers: #display manager are set up correctly. This is normally done by the distribution #packages, and best left to them. Therefore, it is disabled by default. basicSetup: false + +#If true, setup autologin for openSUSE. This only makes sense on openSUSE +#derivatives or other systems where /etc/sysconfig/displaymanager exists. +sysconfigSetup: false diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 343bb59cc..3282982d7 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -3,9 +3,12 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2015, Philip Müller +# Copyright 2014-2017, Philip Müller # Copyright 2014-2015, Teo Mrnjavac # Copyright 2014, Kevin Kofler +# Copyright 2017, Alf Gaida +# Copyright 2017, Bernhard Landauer +# Copyright 2017, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,9 +27,12 @@ import os import collections import re import libcalamares +import configparser -DesktopEnvironment = collections.namedtuple('DesktopEnvironment', ['executable', 'desktop_file']) +DesktopEnvironment = collections.namedtuple( + 'DesktopEnvironment', ['executable', 'desktop_file'] + ) desktop_environments = [ DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5 @@ -44,43 +50,56 @@ desktop_environments = [ DesktopEnvironment('/usr/bin/budgie-session', 'budgie-session'), DesktopEnvironment('/usr/bin/budgie-desktop', 'budgie-desktop'), DesktopEnvironment('/usr/bin/i3', 'i3'), + DesktopEnvironment('/usr/bin/startdde', 'deepin'), DesktopEnvironment('/usr/bin/openbox-session', 'openbox') ] def find_desktop_environment(root_mount_point): - """ Checks which desktop environment is currently installed. + """ + Checks which desktop environment is currently installed. :param root_mount_point: :return: """ for desktop_environment in desktop_environments: - if os.path.exists( - "{!s}{!s}".format(root_mount_point, desktop_environment.executable)) \ - and os.path.exists("{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, - desktop_environment.desktop_file)): + if (os.path.exists("{!s}{!s}".format( + root_mount_point, desktop_environment.executable + ) + ) and os.path.exists( + "{!s}/usr/share/xsessions/{!s}.desktop".format( + root_mount_point, desktop_environment.desktop_file + ) + )): return desktop_environment - return None def have_dm(dm_name, root_mount_point): - """ Checks if display manager is properly installed. + """ + Checks if display manager is properly installed. :param dm_name: :param root_mount_point: :return: """ - return os.path.exists( - "{!s}/usr/bin/{!s}".format(root_mount_point, dm_name)) or os.path.exists( - "{!s}/usr/sbin/{!s}".format(root_mount_point, dm_name)) + bin_path = "{!s}/usr/bin/{!s}".format(root_mount_point, dm_name) + sbin_path = "{!s}/usr/sbin/{!s}".format(root_mount_point, dm_name) + return (os.path.exists(bin_path) + or os.path.exists(sbin_path) + ) -def set_autologin(username, displaymanagers, default_desktop_environment, root_mount_point): - """ Enables automatic login for the installed desktop managers. +def set_autologin(username, + displaymanager, + default_desktop_environment, + root_mount_point): + """ + Enables automatic login for the installed desktop managers. :param username: - :param displaymanagers: + :param displaymanager: str + The displaymanager for which to configure autologin. :param default_desktop_environment: :param root_mount_point: """ @@ -89,7 +108,7 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m if username is None: do_autologin = False - if "mdm" in displaymanagers: + if "mdm" == displaymanager: # Systems with MDM as Desktop Manager mdm_conf_path = os.path.join(root_mount_point, "etc/mdm/custom.conf") @@ -101,14 +120,23 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m for line in text: if '[daemon]' in line: if do_autologin: - line = "[daemon]\nAutomaticLogin={!s}\nAutomaticLoginEnable=True\n".format(username) + line = ( + "[daemon]\n" + "AutomaticLogin={!s}\n" + "AutomaticLoginEnable=True\n".format(username) + ) else: - line = "[daemon]\nAutomaticLoginEnable=False\n" + line = ( + "[daemon]\n" + "AutomaticLoginEnable=False\n" + ) mdm_conf.write(line) else: with open(mdm_conf_path, 'w') as mdm_conf: - mdm_conf.write('# Calamares - Configure automatic login for user\n') + mdm_conf.write( + '# Calamares - Configure automatic login for user\n' + ) mdm_conf.write('[daemon]\n') if do_autologin: @@ -117,7 +145,7 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m else: mdm_conf.write('AutomaticLoginEnable=False\n') - if "gdm" in displaymanagers: + if "gdm" == displaymanager: # Systems with GDM as Desktop Manager gdm_conf_path = os.path.join(root_mount_point, "etc/gdm/custom.conf") @@ -129,14 +157,20 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m for line in text: if '[daemon]' in line: if do_autologin: - line = "[daemon]\nAutomaticLogin={!s}\nAutomaticLoginEnable=True\n".format(username) + line = ( + "[daemon]\n" + "AutomaticLogin={!s}\n" + "AutomaticLoginEnable=True\n".format(username) + ) else: line = "[daemon]\nAutomaticLoginEnable=False\n" gdm_conf.write(line) else: with open(gdm_conf_path, 'w') as gdm_conf: - gdm_conf.write('# Calamares - Enable automatic login for user\n') + gdm_conf.write( + '# Calamares - Enable automatic login for user\n' + ) gdm_conf.write('[daemon]\n') if do_autologin: @@ -145,19 +179,37 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m else: gdm_conf.write('AutomaticLoginEnable=False\n') - if do_autologin and os.path.exists("{!s}/var/lib/AccountsService/users".format(root_mount_point)): - os.system("echo \"[User]\" > {!s}/var/lib/AccountsService/users/{!s}".format(root_mount_point, username)) + if (do_autologin): + accountservice_dir = "{!s}/var/lib/AccountsService/users".format( + root_mount_point + ) + userfile_path = "{!s}/{!s}".format(accountservice_dir, username) + if os.path.exists(accountservice_dir): + with open(userfile_path, "w") as userfile: + userfile.write("[User]\n") - if default_desktop_environment is not None: - os.system("echo \"XSession={!s}\" >> {!s}/var/lib/AccountsService/users/{!s}".format( - default_desktop_environment.desktop_file, root_mount_point, username)) + if default_desktop_environment is not None: + userfile.write("XSession={!s}\n".format( + default_desktop_environment.desktop_file)) - os.system("echo \"Icon=\" >> {!s}/var/lib/AccountsService/users/{!s}".format( - root_mount_point, username)) + userfile.write("Icon=\n") - if "kdm" in displaymanagers: + if "kdm" == displaymanager: # Systems with KDM as Desktop Manager - kdm_conf_path = os.path.join(root_mount_point, "usr/share/config/kdm/kdmrc") + kdm_conf_path = os.path.join( + root_mount_point, "usr/share/config/kdm/kdmrc" + ) + # Check which path is in use: SUSE does something else. + # Also double-check the default setting. Pick the first + # one that exists in the target. + for candidate_kdmrc in ( + "usr/share/config/kdm/kdmrc", + "usr/share/kde4/config/kdm/kdmrc", + ): + p = os.path.join(root_mount_point, candidate_kdmrc) + if os.path.exists(p): + kdm_conf_path = p + break text = [] if os.path.exists(kdm_conf_path): @@ -177,9 +229,12 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m kdm_conf.write(line) else: - return "Cannot write KDM configuration file", "KDM config file {!s} does not exist".format(kdm_conf_path) + return ( + "Cannot write KDM configuration file", + "KDM config file {!s} does not exist".format(kdm_conf_path) + ) - if "lxdm" in displaymanagers: + if "lxdm" == displaymanager: # Systems with LXDM as Desktop Manager lxdm_conf_path = os.path.join(root_mount_point, "etc/lxdm/lxdm.conf") text = [] @@ -198,14 +253,19 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m lxdm_conf.write(line) else: - return "Cannot write LXDM configuration file", "LXDM config file {!s} does not exist".format(lxdm_conf_path) + return ( + "Cannot write LXDM configuration file", + "LXDM config file {!s} does not exist".format(lxdm_conf_path) + ) - if "lightdm" in displaymanagers: + if "lightdm" == displaymanager: # Systems with LightDM as Desktop Manager # Ideally, we should use configparser for the ini conf file, # but we just do a simple text replacement for now, as it # worksforme(tm) - lightdm_conf_path = os.path.join(root_mount_point, "etc/lightdm/lightdm.conf") + lightdm_conf_path = os.path.join( + root_mount_point, "etc/lightdm/lightdm.conf" + ) text = [] if os.path.exists(lightdm_conf_path): @@ -222,9 +282,25 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m lightdm_conf.write(line) else: - return "Cannot write LightDM configuration file", "LightDM config file {!s} does not exist".format(lightdm_conf_path) + try: + # Create a new lightdm.conf file; this is documented to be + # read last, after aeverything in lightdm.conf.d/ + with open(lightdm_conf_path, 'w') as lightdm_conf: + if do_autologin: + lightdm_conf.write( + "autologin-user={!s}\n".format(username)) + else: + lightdm_conf.write( + "#autologin-user=\n") + except FileNotFoundError: + return ( + "Cannot write LightDM configuration file", + "LightDM config file {!s} does not exist".format( + lightdm_conf_path + ) + ) - if "slim" in displaymanagers: + if "slim" == displaymanager: # Systems with Slim as Desktop Manager slim_conf_path = os.path.join(root_mount_point, "etc/slim.conf") text = [] @@ -246,71 +322,91 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m slim_conf.write(line) else: - return "Cannot write SLIM configuration file", "SLIM config file {!s} does not exist".format(slim_conf_path) + return ( + "Cannot write SLIM configuration file", + "SLIM config file {!s} does not exist".format(slim_conf_path) + ) - if "sddm" in displaymanagers: + if "sddm" == displaymanager: # Systems with Sddm as Desktop Manager sddm_conf_path = os.path.join(root_mount_point, "etc/sddm.conf") + sddm_config = configparser.ConfigParser(strict=False) + # Make everything case sensitive + sddm_config.optionxform = str + if os.path.isfile(sddm_conf_path): - libcalamares.utils.debug('SDDM config file exists') - else: - libcalamares.utils.check_target_env_call(["sh", "-c", "sddm --example-config > /etc/sddm.conf"]) + sddm_config.read(sddm_conf_path) - text = [] + if 'Autologin' not in sddm_config: + sddm_config.add_section('Autologin') - with open(sddm_conf_path, 'r') as sddm_conf: - text = sddm_conf.readlines() + if do_autologin: + sddm_config.set('Autologin', 'User', username) + elif sddm_config.has_option('Autologin', 'User'): + sddm_config.remove_option('Autologin', 'User') - with open(sddm_conf_path, 'w') as sddm_conf: - for line in text: - # User= line, possibly commented out - if re.match('\\s*(?:#\\s*)?User=', line): - if do_autologin: - line = 'User={}\n'.format(username) - else: - line = '#User=\n' + if default_desktop_environment is not None: + sddm_config.set( + 'Autologin', + 'Session', + default_desktop_environment.desktop_file + ) - # Session= line, commented out or with empty value - if re.match('\\s*#\\s*Session=|\\s*Session=$', line): - if default_desktop_environment is not None: - if do_autologin: - line = 'Session={}.desktop\n'.format(default_desktop_environment.desktop_file) - else: - line = '#Session={}.desktop\n'.format(default_desktop_environment.desktop_file) + with open(sddm_conf_path, 'w') as sddm_config_file: + sddm_config.write(sddm_config_file, space_around_delimiters=False) - sddm_conf.write(line) + if "sysconfig" == displaymanager: + dmauto = "DISPLAYMANAGER_AUTOLOGIN" + + os.system( + "sed -i -e 's|^{!s}=.*|{!s}=\"{!s}\"|' " + "{!s}/etc/sysconfig/displaymanager".format( + dmauto, dmauto, + username if do_autologin else "", + root_mount_point + ) + ) return None def run(): - """ Configure display managers. + """ + Configure display managers. - We acquire a list of displaymanagers, either from config or (overridden) from globalstorage. - This module will try to set up (including autologin) all the displaymanagers in the list, in that specific order. - Most distros will probably only ship one displaymanager. - If a displaymanager is in the list but not installed, a debugging message is printed and the entry ignored. + We acquire a list of displaymanagers, either from config or (overridden) + from globalstorage. This module will try to set up (including autologin) + all the displaymanagers in the list, in that specific order. Most distros + will probably only ship one displaymanager. + If a displaymanager is in the list but not installed, a debugging message + is printed and the entry ignored. """ if "displaymanagers" in libcalamares.job.configuration: displaymanagers = libcalamares.job.configuration["displaymanagers"] - if libcalamares.globalstorage.contains("displaymanagers"): - displaymanagers = libcalamares.globalstorage.value("displaymanagers") + if libcalamares.globalstorage.contains("displayManagers"): + displaymanagers = libcalamares.globalstorage.value("displayManagers") if displaymanagers is None: - return "No display managers selected for the displaymanager module.", \ - "The displaymanagers list is empty or undefined in both globalstorage and displaymanager.conf." + return ( + "No display managers selected for the displaymanager module.", + "The displaymanagers list is empty or undefined in both" + "globalstorage and displaymanager.conf." + ) username = libcalamares.globalstorage.value("autologinUser") root_mount_point = libcalamares.globalstorage.value("rootMountPoint") if "default_desktop_environment" in libcalamares.job.configuration: entry = libcalamares.job.configuration["defaultDesktopEnvironment"] - default_desktop_environment = DesktopEnvironment(entry["executable"], - entry["desktopFile"]) + default_desktop_environment = DesktopEnvironment( + entry["executable"], entry["desktopFile"] + ) else: - default_desktop_environment = find_desktop_environment(root_mount_point) + default_desktop_environment = find_desktop_environment( + root_mount_point + ) if "basicSetup" in libcalamares.job.configuration: enable_basic_setup = libcalamares.job.configuration["basicSetup"] @@ -332,24 +428,79 @@ def run(): # setup lightdm if "lightdm" in displaymanagers: if have_dm("lightdm", root_mount_point): + lightdm_conf_path = os.path.join( + root_mount_point, "etc/lightdm/lightdm.conf" + ) + if enable_basic_setup: - libcalamares.utils.target_env_call(['mkdir', '-p', '/run/lightdm']) + libcalamares.utils.target_env_call( + ['mkdir', '-p', '/run/lightdm'] + ) - if libcalamares.utils.target_env_call(['getent', 'group', 'lightdm']) != 0: - libcalamares.utils.target_env_call(['groupadd', '-g', '620', 'lightdm']) + if libcalamares.utils.target_env_call( + ['getent', 'group', 'lightdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['groupadd', '-g', '620', 'lightdm'] + ) - if libcalamares.utils.target_env_call(['getent', 'passwd', 'lightdm']) != 0: - libcalamares.utils.target_env_call(['useradd', '-c', '"LightDM Display Manager"', - '-u', '620', '-g', 'lightdm', '-d', '/var/run/lightdm', - '-s', '/usr/bin/nologin', 'lightdm']) + if libcalamares.utils.target_env_call( + ['getent', 'passwd', 'lightdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['useradd', '-c', + '"LightDM Display Manager"', + '-u', '620', + '-g', 'lightdm', + '-d', '/var/run/lightdm', + '-s', '/usr/bin/nologin', + 'lightdm' + ] + ) - libcalamares.utils.target_env_call(['passwd', '-l', 'lightdm']) - libcalamares.utils.target_env_call(['chown', '-R', 'lightdm:lightdm', '/run/lightdm']) - libcalamares.utils.target_env_call(['chmod', '+r' '/etc/lightdm/lightdm.conf']) + libcalamares.utils.target_env_call('passwd', '-l', 'lightdm') + libcalamares.utils.target_env_call( + ['chown', '-R', 'lightdm:lightdm', '/run/lightdm'] + ) + libcalamares.utils.target_env_call( + ['chmod', '+r' '/etc/lightdm/lightdm.conf'] + ) if default_desktop_environment is not None: - os.system("sed -i -e \"s/^.*user-session=.*/user-session={!s}/\" {!s}/etc/lightdm/lightdm.conf".format( - default_desktop_environment.desktop_file, root_mount_point)) + os.system( + "sed -i -e \"s/^.*user-session=.*/user-session={!s}/\" " + "{!s}".format( + default_desktop_environment.desktop_file, + lightdm_conf_path + ) + ) + + # configure lightdm-greeter + greeter_path = os.path.join( + root_mount_point, "usr/share/xgreeters" + ) + + if (os.path.exists(greeter_path)): + # configure first found lightdm-greeter + for entry in os.listdir(greeter_path): + if entry.endswith('.desktop'): + greeter = entry.split('.')[0] + libcalamares.utils.debug( + "found greeter {!s}".format(greeter) + ) + os.system( + "sed -i -e \"s/^.*greeter-session=.*" + "/greeter-session={!s}/\" {!s}".format( + greeter, + lightdm_conf_path + ) + ) + libcalamares.utils.debug( + "{!s} configured as greeter.".format(greeter) + ) + break + else: + return ("No lightdm greeter installed.") else: libcalamares.utils.debug("lightdm selected but not installed") displaymanagers.remove("lightdm") @@ -358,16 +509,33 @@ def run(): if "gdm" in displaymanagers: if have_dm("gdm", root_mount_point): if enable_basic_setup: - if libcalamares.utils.target_env_call(['getent', 'group', 'gdm']) != 0: - libcalamares.utils.target_env_call(['groupadd', '-g', '120', 'gdm']) + if libcalamares.utils.target_env_call( + ['getent', 'group', 'gdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['groupadd', '-g', '120', 'gdm'] + ) - if libcalamares.utils.target_env_call(['getent', 'passwd', 'gdm']) != 0: - libcalamares.utils.target_env_call(['useradd', '-c', '"Gnome Display Manager"', - '-u', '120', '-g', 'gdm', '-d', '/var/lib/gdm', - '-s', '/usr/bin/nologin', 'gdm']) + if libcalamares.utils.target_env_call( + ['getent', 'passwd', 'gdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['useradd', + '-c', '"Gnome Display Manager"', + '-u', '120', + '-g', 'gdm', + '-d', '/var/lib/gdm', + '-s', '/usr/bin/nologin', + 'gdm' + ] + ) - libcalamares.utils.target_env_call(['passwd', '-l', 'gdm']) - libcalamares.utils.target_env_call(['chown', '-R', 'gdm:gdm', '/var/lib/gdm']) + libcalamares.utils.target_env_call( + ['passwd', '-l', 'gdm'] + ) + libcalamares.utils.target_env_call( + ['chown', '-R', 'gdm:gdm', '/var/lib/gdm'] + ) else: libcalamares.utils.debug("gdm selected but not installed") displaymanagers.remove("gdm") @@ -376,21 +544,45 @@ def run(): if "mdm" in displaymanagers: if have_dm("mdm", root_mount_point): if enable_basic_setup: - if libcalamares.utils.target_env_call(['getent', 'group', 'mdm']) != 0: - libcalamares.utils.target_env_call(['groupadd', '-g', '128', 'mdm']) + if libcalamares.utils.target_env_call( + ['getent', 'group', 'mdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['groupadd', '-g', '128', 'mdm'] + ) - if libcalamares.utils.target_env_call(['getent', 'passwd', 'mdm']) != 0: - libcalamares.utils.target_env_call(['useradd', '-c', '"Linux Mint Display Manager"', - '-u', '128', '-g', 'mdm', '-d', '/var/lib/mdm', - '-s', '/usr/bin/nologin', 'mdm']) + if libcalamares.utils.target_env_call( + ['getent', 'passwd', 'mdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['useradd', + '-c', '"Linux Mint Display Manager"', + '-u', '128', + '-g', 'mdm', + '-d', '/var/lib/mdm', + '-s', '/usr/bin/nologin', + 'mdm' + ] + ) - libcalamares.utils.target_env_call(['passwd', '-l', 'mdm']) - libcalamares.utils.target_env_call(['chown', 'root:mdm', '/var/lib/mdm']) - libcalamares.utils.target_env_call(['chmod', '1770', '/var/lib/mdm']) + libcalamares.utils.target_env_call( + ['passwd', '-l', 'mdm'] + ) + libcalamares.utils.target_env_call( + ['chown', 'root:mdm', '/var/lib/mdm'] + ) + libcalamares.utils.target_env_call( + ['chmod', '1770', '/var/lib/mdm'] + ) if default_desktop_environment is not None: - os.system("sed -i \"s|default.desktop|{!s}.desktop|g\" {!s}/etc/mdm/custom.conf".format( - default_desktop_environment.desktop_file, root_mount_point)) + os.system( + "sed -i \"s|default.desktop|{!s}.desktop|g\" " + "{!s}/etc/mdm/custom.conf".format( + default_desktop_environment.desktop_file, + root_mount_point + ) + ) else: libcalamares.utils.debug("mdm selected but not installed") displaymanagers.remove("mdm") @@ -399,16 +591,31 @@ def run(): if "lxdm" in displaymanagers: if have_dm("lxdm", root_mount_point): if enable_basic_setup: - if libcalamares.utils.target_env_call(['getent', 'group', 'lxdm']) != 0: - libcalamares.utils.target_env_call(['groupadd', '--system', 'lxdm']) + if libcalamares.utils.target_env_call( + ['getent', 'group', 'lxdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['groupadd', '--system', 'lxdm'] + ) - libcalamares.utils.target_env_call(['chgrp', '-R', 'lxdm', '/var/lib/lxdm']) - libcalamares.utils.target_env_call(['chgrp', 'lxdm', '/etc/lxdm/lxdm.conf']) - libcalamares.utils.target_env_call(['chmod', '+r', '/etc/lxdm/lxdm.conf']) + libcalamares.utils.target_env_call( + ['chgrp', '-R', 'lxdm', '/var/lib/lxdm'] + ) + libcalamares.utils.target_env_call( + ['chgrp', 'lxdm', '/etc/lxdm/lxdm.conf'] + ) + libcalamares.utils.target_env_call( + ['chmod', '+r', '/etc/lxdm/lxdm.conf'] + ) if default_desktop_environment is not None: - os.system("sed -i -e \"s|^.*session=.*|session={!s}|\" {!s}/etc/lxdm/lxdm.conf".format( - default_desktop_environment.executable, root_mount_point)) + os.system( + "sed -i -e \"s|^.*session=.*|session={!s}|\" " + "{!s}/etc/lxdm/lxdm.conf".format( + default_desktop_environment.executable, + root_mount_point + ) + ) else: libcalamares.utils.debug("lxdm selected but not installed") displaymanagers.remove("lxdm") @@ -417,21 +624,58 @@ def run(): if "kdm" in displaymanagers: if have_dm("kdm", root_mount_point): if enable_basic_setup: - if libcalamares.utils.target_env_call(['getent', 'group', 'kdm']) != 0: - libcalamares.utils.target_env_call(['groupadd', '-g', '135', 'kdm']) + if libcalamares.utils.target_env_call( + ['getent', 'group', 'kdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['groupadd', '-g', '135', 'kdm'] + ) - if libcalamares.utils.target_env_call(['getent', 'passwd', 'kdm']) != 0: - libcalamares.utils.target_env_call(['useradd', '-u', '135', '-g', 'kdm', '-d', - '/var/lib/kdm', '-s', '/bin/false', '-r', '-M', 'kdm']) + if libcalamares.utils.target_env_call( + ['getent', 'passwd', 'kdm'] + ) != 0: + libcalamares.utils.target_env_call( + ['useradd', + '-u', '135', + '-g', 'kdm', + '-d', '/var/lib/kdm', + '-s', '/bin/false', + '-r', + '-M', + 'kdm' + ] + ) - libcalamares.utils.target_env_call(['chown', '-R', '135:135', 'var/lib/kdm']) + libcalamares.utils.target_env_call( + ['chown', '-R', '135:135', 'var/lib/kdm'] + ) else: libcalamares.utils.debug("kdm selected but not installed") displaymanagers.remove("kdm") if username is not None: - libcalamares.utils.debug("Setting up autologin for user {!s}.".format(username)) + libcalamares.utils.debug( + "Setting up autologin for user {!s}.".format(username) + ) else: libcalamares.utils.debug("Unsetting autologin.") - return set_autologin(username, displaymanagers, default_desktop_environment, root_mount_point) + libcalamares.globalstorage.insert("displayManagers", displaymanagers) + + dm_setup_message = [] + for dm in displaymanagers: + dm_message = set_autologin( + username, dm, + default_desktop_environment, + root_mount_point + ) + if dm_message is not None: + dm_setup_message.append("{!s}: {!s}".format(*dm_message)) + + if ("sysconfigSetup" in libcalamares.job.configuration + and libcalamares.job.configuration["sysconfigSetup"]): + set_autologin(username, "sysconfig", None, root_mount_point) + + if dm_setup_message: + return ("Display manager configuration was incomplete", + "\n".join(dm_setup_message)) diff --git a/src/modules/dracut/main.py b/src/modules/dracut/main.py index 46902fb07..d7a9bc494 100644 --- a/src/modules/dracut/main.py +++ b/src/modules/dracut/main.py @@ -5,6 +5,7 @@ # # Copyright 2014-2015, Philip Müller # Copyright 2014, Teo Mrnjavac +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,7 +25,8 @@ from libcalamares.utils import target_env_call def run_dracut(): - """ Creates initramfs, even when initramfs already exists. + """ + Creates initramfs, even when initramfs already exists. :return: """ @@ -32,11 +34,14 @@ def run_dracut(): def run(): - """ Starts routine to create initramfs. It passes back the exit code if it fails. + """ + Starts routine to create initramfs. It passes back the exit code + if it fails. :return: """ return_code = run_dracut() if return_code != 0: - return "Failed to run dracut on the target", "The exit code was {}".format(return_code) + return ("Failed to run dracut on the target", + "The exit code was {}".format(return_code)) diff --git a/src/modules/dracutlukscfg/CMakeLists.txt b/src/modules/dracutlukscfg/CMakeLists.txt new file mode 100644 index 000000000..5504136c3 --- /dev/null +++ b/src/modules/dracutlukscfg/CMakeLists.txt @@ -0,0 +1,9 @@ +calamares_add_plugin( dracutlukscfg + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + DracutLuksCfgJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp new file mode 100644 index 000000000..601a1e49e --- /dev/null +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp @@ -0,0 +1,168 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "DracutLuksCfgJob.h" + +#include +#include +#include +#include + +#include "CalamaresVersion.h" +#include "JobQueue.h" +#include "GlobalStorage.h" + +#include "utils/Logger.h" + +// static +const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" ); + +// static +const char *DracutLuksCfgJob::CONFIG_FILE_HEADER = + "# Configuration file automatically written by the Calamares system installer\n" + "# (This file is written once at install time and should be safe to edit.)\n" + "# Enables support for LUKS full disk encryption with single sign on from GRUB.\n" + "\n"; + +// static +const char *DracutLuksCfgJob::CONFIG_FILE_CRYPTTAB_KEYFILE_LINE = + "# force installing /etc/crypttab even if hostonly=\"no\", install the keyfile\n" + "install_items+=\" /etc/crypttab /crypto_keyfile.bin \"\n"; + +// static +const char *DracutLuksCfgJob::CONFIG_FILE_CRYPTTAB_LINE = + "# force installing /etc/crypttab even if hostonly=\"no\"\n" + "install_items+=\" /etc/crypttab \"\n"; + +// static +const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" ); + +// static +QString +DracutLuksCfgJob::rootMountPoint() +{ + Calamares::GlobalStorage *globalStorage = Calamares::JobQueue::instance()->globalStorage(); + return globalStorage->value( QStringLiteral( "rootMountPoint" ) ).toString(); +} + +// static +QVariantList +DracutLuksCfgJob::partitions() +{ + Calamares::GlobalStorage *globalStorage = Calamares::JobQueue::instance()->globalStorage(); + return globalStorage->value( QStringLiteral( "partitions" ) ).toList(); +} + +// static +bool +DracutLuksCfgJob::isRootEncrypted() +{ + const QVariantList partitions = DracutLuksCfgJob::partitions(); + for ( const QVariant &partition : partitions ) + { + QVariantMap partitionMap = partition.toMap(); + QString mountPoint = partitionMap.value( QStringLiteral( "mountPoint" ) ).toString(); + if ( mountPoint == QStringLiteral( "/" ) ) + return partitionMap.contains( QStringLiteral( "luksMapperName" ) ); + } + return false; +} + +// static +bool +DracutLuksCfgJob::hasUnencryptedSeparateBoot() +{ + const QVariantList partitions = DracutLuksCfgJob::partitions(); + for ( const QVariant &partition : partitions ) + { + QVariantMap partitionMap = partition.toMap(); + QString mountPoint = partitionMap.value( QStringLiteral( "mountPoint" ) ).toString(); + if ( mountPoint == QStringLiteral( "/boot" ) ) + return !partitionMap.contains( QStringLiteral( "luksMapperName" ) ); + } + return false; +} + +// static +QString +DracutLuksCfgJob::swapOuterUuid() +{ + const QVariantList partitions = DracutLuksCfgJob::partitions(); + for ( const QVariant &partition : partitions ) + { + QVariantMap partitionMap = partition.toMap(); + QString fsType = partitionMap.value( QStringLiteral( "fs" ) ).toString(); + if ( fsType == QStringLiteral( "linuxswap" ) && partitionMap.contains( QStringLiteral( "luksMapperName" ) ) ) + return partitionMap.value( QStringLiteral( "luksUuid" ) ).toString(); + } + return QString(); +} + +DracutLuksCfgJob::DracutLuksCfgJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + + +DracutLuksCfgJob::~DracutLuksCfgJob() +{ +} + + +QString +DracutLuksCfgJob::prettyName() const +{ + if ( isRootEncrypted() ) + return tr( "Write LUKS configuration for Dracut to %1" ).arg( CONFIG_FILE ); + else + return tr( "Skip writing LUKS configuration for Dracut: \"/\" partition is not encrypted" ); +} + + +Calamares::JobResult +DracutLuksCfgJob::exec() +{ + if ( isRootEncrypted() ) + { + const QString realConfigFilePath = rootMountPoint() + CONFIG_FILE; + cDebug() << "[DRACUTLUKSCFG]: Writing" << realConfigFilePath; + QDir( QStringLiteral( "/" ) ).mkpath( QFileInfo( realConfigFilePath ).absolutePath() ); + QFile configFile( realConfigFilePath ); + if ( ! configFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { + cDebug() << "[DRACUTLUKSCFG]: Failed to open" << realConfigFilePath; + return Calamares::JobResult::error( tr( "Failed to open %1" ).arg( realConfigFilePath ) ); + } + QTextStream outStream( &configFile ); + outStream << CONFIG_FILE_HEADER + << ( hasUnencryptedSeparateBoot() ? CONFIG_FILE_CRYPTTAB_LINE + : CONFIG_FILE_CRYPTTAB_KEYFILE_LINE ); + const QString swapOuterUuid = DracutLuksCfgJob::swapOuterUuid(); + if ( ! swapOuterUuid.isEmpty() ) + { + cDebug() << "[DRACUTLUKSCFG]: Swap outer UUID" << swapOuterUuid; + outStream << QString(CONFIG_FILE_SWAPLINE).arg( swapOuterUuid ).toLatin1(); + } + cDebug() << "[DRACUTLUKSCFG]: Wrote config to" << realConfigFilePath; + } else + cDebug() << "[DRACUTLUKSCFG]: / not encrypted, skipping"; + + return Calamares::JobResult::ok(); +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( DracutLuksCfgJobFactory, registerPlugin(); ) diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h new file mode 100644 index 000000000..2d438fa0b --- /dev/null +++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h @@ -0,0 +1,60 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Kevin Kofler + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef DRACUTLUKSCFGJOB_H +#define DRACUTLUKSCFGJOB_H + +#include +#include + +#include + +#include + +#include + +class PLUGINDLLEXPORT DracutLuksCfgJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit DracutLuksCfgJob( QObject* parent = nullptr ); + virtual ~DracutLuksCfgJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + +private: + static const QLatin1Literal CONFIG_FILE; + static const char *CONFIG_FILE_HEADER; + static const char *CONFIG_FILE_CRYPTTAB_KEYFILE_LINE; + static const char *CONFIG_FILE_CRYPTTAB_LINE; + static const QLatin1Literal CONFIG_FILE_SWAPLINE; + + static QString rootMountPoint(); + static QVariantList partitions(); + static bool isRootEncrypted(); + static bool hasUnencryptedSeparateBoot(); + static QString swapOuterUuid(); +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( DracutLuksCfgJobFactory ) + +#endif // DRACUTLUKSCFGJOB_H diff --git a/src/modules/dummycpp/CMakeLists.txt b/src/modules/dummycpp/CMakeLists.txt new file mode 100644 index 000000000..0841eaa2b --- /dev/null +++ b/src/modules/dummycpp/CMakeLists.txt @@ -0,0 +1,9 @@ +calamares_add_plugin( dummycpp + TYPE job + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + DummyCppJob.cpp + LINK_PRIVATE_LIBRARIES + calamares + SHARED_LIB +) diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp new file mode 100644 index 000000000..15433392f --- /dev/null +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -0,0 +1,144 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac (original dummypython code) + * Copyright 2016, Kevin Kofler + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "DummyCppJob.h" + +#include +#include +#include + +#include "CalamaresVersion.h" +#include "JobQueue.h" +#include "GlobalStorage.h" + +#include "utils/Logger.h" + +DummyCppJob::DummyCppJob( QObject* parent ) + : Calamares::CppJob( parent ) +{ +} + + +DummyCppJob::~DummyCppJob() +{ +} + + +QString +DummyCppJob::prettyName() const +{ + return tr( "Dummy C++ Job" ); +} + + +static QString variantListToString( const QVariantList& variantList ); +static QString variantMapToString( const QVariantMap& variantMap ); +static QString variantHashToString( const QVariantHash& variantHash ); + + +static QString +variantToString( const QVariant& variant ) +{ + switch ( variant.type() ) + { + case QVariant::Map: + return variantMapToString( variant.toMap() ); + + case QVariant::Hash: + return variantHashToString( variant.toHash() ); + + case QVariant::List: + case QVariant::StringList: + return variantListToString( variant.toList() ); + + default: + return variant.toString(); + } +} + + +static QString +variantListToString( const QVariantList& variantList ) +{ + QStringList result; + for ( const QVariant& variant : variantList ) + result.append( variantToString( variant ) ); + return '{' + result.join(',') + '}'; +} + + +static QString +variantMapToString( const QVariantMap& variantMap ) +{ + QStringList result; + for ( auto it = variantMap.constBegin(); it != variantMap.constEnd(); ++it ) + result.append( it.key() + '=' + variantToString( it.value() ) ); + return '[' + result.join(',') + ']'; +} + + +static QString +variantHashToString( const QVariantHash& variantHash ) +{ + QStringList result; + for ( auto it = variantHash.constBegin(); it != variantHash.constEnd(); ++it ) + result.append( it.key() + '=' + variantToString( it.value() ) ); + return '<' + result.join(',') + '>'; +} + + +Calamares::JobResult +DummyCppJob::exec() +{ + // Ported from dummypython + QProcess::execute( "/bin/sh", QStringList() << "-c" << "touch ~/calamares-dummycpp" ); + QString accumulator = QDateTime::currentDateTimeUtc().toString( Qt::ISODate ) + '\n'; + accumulator += QStringLiteral( "Calamares version: " ) + CALAMARES_VERSION_SHORT + '\n'; + accumulator += QStringLiteral( "This job's name: " ) + prettyName() + '\n'; + accumulator += QStringLiteral( "Configuration map: %1\n" ).arg( variantMapToString( m_configurationMap ) ); + accumulator += QStringLiteral( " *** globalstorage test ***\n" ); + Calamares::GlobalStorage *globalStorage = Calamares::JobQueue::instance()->globalStorage(); + accumulator += QStringLiteral( "lala: " ) + (globalStorage->contains( "lala" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" )) + '\n'; + accumulator += QStringLiteral( "foo: " ) + (globalStorage->contains( "foo" ) ? QStringLiteral( "true" ) : QStringLiteral( "false" )) + '\n'; + accumulator += QStringLiteral( "count: " ) + QString::number( globalStorage->count() ) + '\n'; + globalStorage->insert( "item2", "value2" ); + globalStorage->insert( "item3", 3 ); + accumulator += QStringLiteral( "keys: %1\n" ).arg( globalStorage->keys().join( ',' ) ); + accumulator += QStringLiteral( "remove: %1\n" ).arg( QString::number( globalStorage->remove( "item2" ) ) ); + accumulator += QStringLiteral( "values: %1 %2 %3\n" ).arg( + globalStorage->value( "foo" ).toString(), + globalStorage->value( "item2" ).toString(), + globalStorage->value( "item3" ).toString() ); + + emit progress( 0.1 ); + cDebug() << "[DUMMYCPP]: " << accumulator; + + QThread::sleep( 3 ); + + return Calamares::JobResult::ok(); +} + + +void +DummyCppJob::setConfigurationMap( const QVariantMap& configurationMap ) +{ + m_configurationMap = configurationMap; +} + +CALAMARES_PLUGIN_FACTORY_DEFINITION( DummyCppJobFactory, registerPlugin(); ) diff --git a/src/modules/dummycpp/DummyCppJob.h b/src/modules/dummycpp/DummyCppJob.h new file mode 100644 index 000000000..fecc2699b --- /dev/null +++ b/src/modules/dummycpp/DummyCppJob.h @@ -0,0 +1,52 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Kevin Kofler + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef DUMMYCPPJOB_H +#define DUMMYCPPJOB_H + +#include +#include + +#include + +#include + +#include + +class PLUGINDLLEXPORT DummyCppJob : public Calamares::CppJob +{ + Q_OBJECT + +public: + explicit DummyCppJob( QObject* parent = nullptr ); + virtual ~DummyCppJob() override; + + QString prettyName() const override; + + Calamares::JobResult exec() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + QVariantMap m_configurationMap; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( DummyCppJobFactory ) + +#endif // DUMMYCPPJOB_H diff --git a/src/modules/dummycpp/dummycpp.conf b/src/modules/dummycpp/dummycpp.conf new file mode 100644 index 000000000..c90b6f3b9 --- /dev/null +++ b/src/modules/dummycpp/dummycpp.conf @@ -0,0 +1,18 @@ +--- +syntax: "YAML map of anything" +example: + whats_this: "module-specific configuration" + from_where: "dummycpp.conf" +a_list: + - "item1" + - "item2" + - "item3" + - "item4" +a_list_of_maps: + - name: "an Item" + contents: + - "an element" + - "another element" + - name: "another item" + contents: + - "not much" \ No newline at end of file diff --git a/src/modules/dummycpp/module.desc b/src/modules/dummycpp/module.desc new file mode 100644 index 000000000..11b9c500c --- /dev/null +++ b/src/modules/dummycpp/module.desc @@ -0,0 +1,20 @@ +# Module metadata file for dummycpp job +# +# The metadata for C++ (qtplugin) plugins is almost never interesting: +# the CMakeLists.txt should be using calamares_add_plugin() which will +# generate the metadata file during the build. Only C++ plugins that +# have strange settings should have a module.desc (non-C++ plugins, +# on the other hand, must have one, since they don't have CMakeLists.txt). +# +# Syntax is YAML 1.2 +# +# All four keys are mandatory. For C++ (qtplugin) modules, the interface +# value must be "qtplugin"; type is one of "job" or "view"; the name +# is the machine-identifier for the module and the load value should +# be the filename of the library that contains the implementation. +# +--- +type: "job" +name: "dummycpp" +interface: "qtplugin" +load: "libcalamares_job_dummycpp.so" diff --git a/src/modules/dummypython/main.py b/src/modules/dummypython/main.py index acf47ac4e..ec6b02bfd 100644 --- a/src/modules/dummypython/main.py +++ b/src/modules/dummypython/main.py @@ -4,6 +4,8 @@ # === This file is part of Calamares - === # # Copyright 2014, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# Copyright 2017, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,44 +20,87 @@ # You should have received a copy of the GNU General Public License # along with Calamares. If not, see . +""" +=== Example Python jobmodule. + +A Python jobmodule is a Python program which imports libcalamares and +has a function run() as entry point. run() must return None if everything +went well, or a tuple (str,str) with an error message and description +if something went wrong. +""" + import libcalamares import os from time import gmtime, strftime, sleep +import gettext +_ = gettext.translation("calamares-python", + localedir=libcalamares.utils.gettext_path(), + languages=libcalamares.utils.gettext_languages(), + fallback=True).gettext + + +def pretty_name(): + return _("Dummy python job.") + def run(): - """ Example Python jobmodule. + """Dummy python job.""" + libcalamares.utils.debug("LocaleDir=" + + str(libcalamares.utils.gettext_path())) + libcalamares.utils.debug("Languages=" + + str(libcalamares.utils.gettext_languages())) - A Python jobmodule is a Python program which imports libcalamares and - has a function run() as entry point. run() must return None if everything - went well, or a tuple (str,str) with an error message and description - if something went wrong. - - :return: - """ os.system("/bin/sh -c \"touch ~/calamares-dummypython\"") accumulator = strftime("%Y-%m-%d %H:%M:%S", gmtime()) + "\n" accumulator += "Calamares version: " + libcalamares.VERSION_SHORT + "\n" accumulator += "This job's name: " + libcalamares.job.pretty_name + "\n" - accumulator += "This job's path: " + libcalamares.job.working_path + "\n" + accumulator += "This job's path: " + libcalamares.job.working_path + libcalamares.utils.debug(accumulator) + + accumulator = "*** Job configuration " accumulator += str(libcalamares.job.configuration) - accumulator += " *** globalstorage test ***\n" - accumulator += "lala: " + str(libcalamares.globalstorage.contains("lala")) + "\n" - accumulator += "foo: " + str(libcalamares.globalstorage.contains("foo")) + "\n" - accumulator += "count: " + str(libcalamares.globalstorage.count()) + "\n" + libcalamares.utils.debug(accumulator) + + accumulator = "*** globalstorage test ***" + accumulator += "lala: " + accumulator += str(libcalamares.globalstorage.contains("lala")) + "\n" + accumulator += "foo: " + accumulator += str(libcalamares.globalstorage.contains("foo")) + "\n" + accumulator += "count: " + str(libcalamares.globalstorage.count()) + libcalamares.utils.debug(accumulator) + libcalamares.globalstorage.insert("item2", "value2") libcalamares.globalstorage.insert("item3", 3) - accumulator += "keys: {}\n".format(str(libcalamares.globalstorage.keys())) - accumulator += "remove: {}\n".format(str(libcalamares.globalstorage.remove("item2"))) + accumulator = "keys: {}\n".format(str(libcalamares.globalstorage.keys())) + libcalamares.utils.debug(accumulator) + + accumulator = "remove: {}\n".format( + str(libcalamares.globalstorage.remove("item2"))) accumulator += "values: {} {} {}\n".format( str(libcalamares.globalstorage.value("foo")), str(libcalamares.globalstorage.value("item2")), str(libcalamares.globalstorage.value("item3"))) - - libcalamares.job.setprogress(0.1) libcalamares.utils.debug(accumulator) + libcalamares.utils.debug("Run dummy python") + + sleep(1) + + try: + configlist = list(libcalamares.job.configuration["a_list"]) + except KeyError: + configlist = ["no list"] + + c = 1 + for k in configlist: + libcalamares.utils.debug(_("Dummy python step {}").format(str(k))) + sleep(1) + libcalamares.job.setprogress(c * 1.0 / len(configlist)) + c += 1 + sleep(3) + # To indicate an error, return a tuple of: # (message, detailed-error-message) return None diff --git a/src/modules/dummypython/module.desc b/src/modules/dummypython/module.desc index d24bf39bf..ebe81af1a 100644 --- a/src/modules/dummypython/module.desc +++ b/src/modules/dummypython/module.desc @@ -1,7 +1,7 @@ -# Module metadata file for dummy process jobmodule +# Module metadata file for dummy python jobmodule # Syntax is YAML 1.2 --- type: "job" name: "dummypython" interface: "python" -script: "main.py" #assumed relative to the current directory +script: "main.py" diff --git a/src/modules/dummypythonqt/dummypythonqt.conf b/src/modules/dummypythonqt/dummypythonqt.conf new file mode 100644 index 000000000..f60e778e1 --- /dev/null +++ b/src/modules/dummypythonqt/dummypythonqt.conf @@ -0,0 +1,18 @@ +--- +syntax: "YAML map of anything" +example: + whats_this: "module-specific configuration" + from_where: "dummypythonqt.conf" +a_list: + - "item1" + - "item2" + - "item3" + - "item4" +a_list_of_maps: + - name: "an Item" + contents: + - "an element" + - "another element" + - name: "another item" + contents: + - "not much" diff --git a/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..8a59291af Binary files /dev/null and b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..311e75830 --- /dev/null +++ b/src/modules/dummypythonqt/lang/ar/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Arabic (https://www.transifex.com/calamares/teams/20061/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\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/ast/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..a195bf917 Binary files /dev/null and b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..91c49166c --- /dev/null +++ b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: enolp , 2017\n" +"Language-Team: Asturian (https://www.transifex.com/calamares/teams/20061/ast/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ast\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "¡Prímime!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Una QLabel nueva." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "El trabayu maniquín de PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Esti ye'l trabayu maniquín de PythonQt. El trabayu maniquín diz: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Un mensaxe d'estáu pal trabayu maniquín de PythonQt." diff --git a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..470525ae3 Binary files /dev/null and b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..9d8734987 --- /dev/null +++ b/src/modules/dummypythonqt/lang/bg/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\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/ca/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..c8a3196f8 Binary files /dev/null and b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..c56b01736 --- /dev/null +++ b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Davidmp , 2016\n" +"Language-Team: Catalan (https://www.transifex.com/calamares/teams/20061/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Clica'm!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Una etiqueta Q nova." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Vistes de Dummy PythonQt" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "La tasca Dummy PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Sóc la tasca Dummy PythonQt. La tasca diu el següent: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Un missatge d'estat per a la tasca Dummy PythonQt." diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..ef66ad1d6 Binary files /dev/null and b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..40d7f9f95 --- /dev/null +++ b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: pavelrz , 2016\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klikni na mě!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Nový QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Testovací PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Testovací úloha PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Toto je testovací úloha PythonQt. Testovací úloha říká: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Stavová zpráva o testovací úloze PythonQt." diff --git a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..ad17f4d68 Binary files /dev/null and b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..7d2d647bd --- /dev/null +++ b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: scootergrisen , 2017\n" +"Language-Team: Danish (https://www.transifex.com/calamares/teams/20061/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klik på mig!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "En ny QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt-visningstrin" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Dummy PythonQt-jobbet" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Dette er dummy PythonQt-jobbet. Dummy-jobbet siger: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "En statusmeddelelse til dummy PythonQt-job." diff --git a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..28d4bf048 Binary files /dev/null and b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..c361beac9 --- /dev/null +++ b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Christian Spaan , 2017\n" +"Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klick mich!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Ein neues QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Der Dummy-PythonQt-Job" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Dies ist der Dummy-PythonQt-Job. Der Dummy-Job lautet: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Eine Statusmeldung für den Dummy-PythonQt-Job." diff --git a/src/modules/dummypythonqt/lang/dummypythonqt.pot b/src/modules/dummypythonqt/lang/dummypythonqt.pot new file mode 100644 index 000000000..14e65bd02 --- /dev/null +++ b/src/modules/dummypythonqt/lang/dummypythonqt.pot @@ -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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: \n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Click me!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "A new QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "The Dummy PythonQt Job" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "This is the Dummy PythonQt Job. The dummy job says: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "A status message for Dummy PythonQt Job." diff --git a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..c7d45e879 Binary files /dev/null and b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..7b55d6c65 --- /dev/null +++ b/src/modules/dummypythonqt/lang/el/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Greek (https://www.transifex.com/calamares/teams/20061/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\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/en_GB/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..b88e6d8f9 Binary files /dev/null and b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..241b0063b --- /dev/null +++ b/src/modules/dummypythonqt/lang/en_GB/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: English (United Kingdom) (https://www.transifex.com/calamares/teams/20061/en_GB/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\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/es/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..f441bc205 Binary files /dev/null and b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..bdca039dd --- /dev/null +++ b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: strel , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/calamares/teams/20061/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "¡Púlsame!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Una nueva QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "ViewStep de PythonQt Ficticia" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "La Tarea PythonQt Ficticia" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Esta es la Tarea PythonQt Ficticia. La tarea ficticia dice: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Un mensaje de estado para la Tarea PythonQt Ficticia." diff --git a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..35a601558 Binary files /dev/null and b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..5aa724d08 --- /dev/null +++ b/src/modules/dummypythonqt/lang/es_ES/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/calamares/teams/20061/es_ES/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_ES\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/es_MX/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..73c58bb4a Binary files /dev/null and b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..22412c347 --- /dev/null +++ b/src/modules/dummypythonqt/lang/es_MX/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\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/es_PR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..f3dd878be Binary files /dev/null and b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..5c08c2df3 --- /dev/null +++ b/src/modules/dummypythonqt/lang/es_PR/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Spanish (Puerto Rico) (https://www.transifex.com/calamares/teams/20061/es_PR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_PR\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/et/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..86e51fbf4 Binary files /dev/null and b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..50ed84e86 --- /dev/null +++ b/src/modules/dummypythonqt/lang/et/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Estonian (https://www.transifex.com/calamares/teams/20061/et/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\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/eu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..2b85ce42c Binary files /dev/null and b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..d5ec7a719 --- /dev/null +++ b/src/modules/dummypythonqt/lang/eu/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Basque (https://www.transifex.com/calamares/teams/20061/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\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/fa/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..be5db74c2 Binary files /dev/null and b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..9561d2d7f --- /dev/null +++ b/src/modules/dummypythonqt/lang/fa/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Persian (https://www.transifex.com/calamares/teams/20061/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\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/fi_FI/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..65215e4b3 Binary files /dev/null and b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..34d69c2f6 --- /dev/null +++ b/src/modules/dummypythonqt/lang/fi_FI/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Finnish (Finland) (https://www.transifex.com/calamares/teams/20061/fi_FI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\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/fr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..2c39ac029 Binary files /dev/null and b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..7efacecd5 --- /dev/null +++ b/src/modules/dummypythonqt/lang/fr/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\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/fr_CH/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..44c786167 Binary files /dev/null and b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..4a4a91099 --- /dev/null +++ b/src/modules/dummypythonqt/lang/fr_CH/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/calamares/teams/20061/fr_CH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr_CH\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/gl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..b221e3812 Binary files /dev/null and b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..27a6260ca --- /dev/null +++ b/src/modules/dummypythonqt/lang/gl/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Galician (https://www.transifex.com/calamares/teams/20061/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\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/gu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..e8861abe2 Binary files /dev/null and b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..114f3cbe8 --- /dev/null +++ b/src/modules/dummypythonqt/lang/gu/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Gujarati (https://www.transifex.com/calamares/teams/20061/gu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gu\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/he/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..98b589db3 Binary files /dev/null and b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..f5e9b6389 --- /dev/null +++ b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Eli Shleifer , 2017\n" +"Language-Team: Hebrew (https://www.transifex.com/calamares/teams/20061/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "לחץ עליי!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "QLabel חדש." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "שלב הצפייה של משימת הדמה של PythonQt" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "משימת הדמה של PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "זוהי משימת הדמה של PythonQt. משימת הדמה אומרת: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "הודעת מצב עבור משימת דמה של PythonQt." diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..198aba348 Binary files /dev/null and b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..9ea1aecd6 --- /dev/null +++ b/src/modules/dummypythonqt/lang/hi/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Hindi (https://www.transifex.com/calamares/teams/20061/hi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hi\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/hr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..5368309b9 Binary files /dev/null and b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..1353a19b3 --- /dev/null +++ b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Lovro Kudelić , 2016\n" +"Language-Team: Croatian (https://www.transifex.com/calamares/teams/20061/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klikni me!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Novi QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Testni PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Testni PythonQt posao" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Ovo je testni PythonQt posao. Testni posao kaže: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Statusna poruka za testni PythonQt posao." diff --git a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..32f7ed24b Binary files /dev/null and b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..19d609feb --- /dev/null +++ b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: miku84 , 2017\n" +"Language-Team: Hungarian (https://www.transifex.com/calamares/teams/20061/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Kattints ide!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Egy új QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Hamis PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Egy PythonQt Job teszt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Ez egy PythonQt Job teszt. A teszt job azt mondja: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Sztátus üzenet egy PythonQt Job-hoz." diff --git a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..4c66c3fee Binary files /dev/null and b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..6e391eaf8 --- /dev/null +++ b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Wantoyo , 2016\n" +"Language-Team: Indonesian (https://www.transifex.com/calamares/teams/20061/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klik saya!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Sebuah QLabel baru." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Dummy PythonQt Job" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Ini adalah Dummy PythonQt Job. Dummy job mengatakan: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Sebuah pesan status untuk Dummy PythonQt Job." diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..d30364d9c Binary files /dev/null and b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..5b87a423f --- /dev/null +++ b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Kristján Magnússon , 2017\n" +"Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Smelltu mig!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Nýtt QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Dummy PythonQt Job" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Þetta er Dummy PythonQt Job. Dummy job segir: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Stöðuskilaboð fyrir Dummy PythonQt Job." diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..73b11b8a0 Binary files /dev/null and b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..58908a127 --- /dev/null +++ b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Saverio , 2016\n" +"Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it_IT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Clicca qui!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Una nuova QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Il Job Dummy PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Questo è il Job Dummy PythonQt. Il dummy job notifica: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Un messaggio di stato per il Job Dummy PythonQt." diff --git a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..eb678c581 Binary files /dev/null and b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..241b9392d --- /dev/null +++ b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Takefumi Nagata , 2016\n" +"Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "クリックしてください!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "新しいQLabel" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "The Dummy PythonQt Job" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "これはDummy PythonQtジョブです。Dummy ジョブの出力: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "ダミーのPythonQtジョブの状態" diff --git a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..2b0afba0e Binary files /dev/null and b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..6a6cae92a --- /dev/null +++ b/src/modules/dummypythonqt/lang/kk/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Kazakh (https://www.transifex.com/calamares/teams/20061/kk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: kk\n" +"Plural-Forms: nplurals=1; plural=0;\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/lo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..1a06a5e25 Binary files /dev/null and b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..23b688386 --- /dev/null +++ b/src/modules/dummypythonqt/lang/lo/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Lao (https://www.transifex.com/calamares/teams/20061/lo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lo\n" +"Plural-Forms: nplurals=1; plural=0;\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/lt/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..1ca9f2801 Binary files /dev/null and b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..97f6e6b33 --- /dev/null +++ b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Moo , 2016\n" +"Language-Team: Lithuanian (https://www.transifex.com/calamares/teams/20061/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Spustelėkite mane!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Naujas QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Fiktyvi PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Fiktyvi PythonQt užduotis" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Tai yra fiktyvi PythonQt užduotis. Fiktyvi užduotis sako: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Fiktyvios PythonQt užduoties būsenos pranešimas." diff --git a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..ada8d963f Binary files /dev/null and b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..27d9d9e26 --- /dev/null +++ b/src/modules/dummypythonqt/lang/mr/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Marathi (https://www.transifex.com/calamares/teams/20061/mr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mr\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/nb/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..4a10eac44 Binary files /dev/null and b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..0807d247f --- /dev/null +++ b/src/modules/dummypythonqt/lang/nb/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\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/nl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..990bbe8a4 Binary files /dev/null and b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..a6862fbb6 --- /dev/null +++ b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: De Zeeappel , 2016\n" +"Language-Team: Dutch (https://www.transifex.com/calamares/teams/20061/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Klik mij!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Een nieuw QLabel" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "De Dummy PythonQt opdracht" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Dit is de Dummy PythonQt opdracht. De opdracht zegt: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Een statusbericht voor de Dummy PythonQt opdracht." diff --git a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..63f2677da Binary files /dev/null and b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..0f67ae374 --- /dev/null +++ b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: m4sk1n , 2016\n" +"Language-Team: Polish (https://www.transifex.com/calamares/teams/20061/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Naciśnij mnie!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Nowy QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Zadanie Dummy PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "To jest zadanie Dummy PythonQt mówiące: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Wiadomość o stanie zadania Dummy PythonQt." diff --git a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..fc4620205 Binary files /dev/null and b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..2b06f9e75 --- /dev/null +++ b/src/modules/dummypythonqt/lang/pl_PL/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Polish (Poland) (https://www.transifex.com/calamares/teams/20061/pl_PL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl_PL\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\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/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..657f514f9 Binary files /dev/null and b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..da698f595 --- /dev/null +++ b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Guilherme M.S. , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Clique em mim!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Uma nova QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "ViewStep do PythonQt fictício" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "O trabalho de modelo do PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Este é o trabalho do modelo PythonQt. O trabalho fictício diz: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Uma mensagem de status para Trabalho Fictício PythonQt." diff --git a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..4df6a2005 Binary files /dev/null and b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..3766e35b8 --- /dev/null +++ b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ricardo Simões , 2016\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/calamares/teams/20061/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Clique-me!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Uma nova QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Dummy PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "A Tarefa Dummy PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Esta é a tarefa Dummy PythonQt. A tarefa dummy diz: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Uma mensagem de estado para a Tarefa Dummy PythonQt." diff --git a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..f881f640c Binary files /dev/null and b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..0e927e99d --- /dev/null +++ b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Baadur Jobava , 2016\n" +"Language-Team: Romanian (https://www.transifex.com/calamares/teams/20061/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Clic aici!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Un nou QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Un job job fictiv PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Acesta este jobul fictiv PythonQt. Descrierea jobului: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Un mesaj de stare pentru jobul fictiv PythonQt." diff --git a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..8e2ebe16d Binary files /dev/null and b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..7a2155ccd --- /dev/null +++ b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Simon Schwartz , 2017\n" +"Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Нажать здесь!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Новый QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "The Dummy PythonQt Job" + +#: 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 "Сообщение состояния для Dummy PythonQt Job." diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..4cb8879b3 Binary files /dev/null and b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..7f45b4605 --- /dev/null +++ b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Dušan Kazik , 2016\n" +"Language-Team: Slovak (https://www.transifex.com/calamares/teams/20061/sk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Kliknite sem!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Nová menovka QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Fiktívna úloha PythonQt" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Toto je fiktívna úloha PythonQt. Fiktívna úloha hovorí: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Stavová správa pre fiktívnu úlohu PythonQt." diff --git a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..615d4b0b7 Binary files /dev/null and b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..ebebd598b --- /dev/null +++ b/src/modules/dummypythonqt/lang/sl/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Slovenian (https://www.transifex.com/calamares/teams/20061/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\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/sr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..311cb4d45 Binary files /dev/null and b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..906d2e3c6 --- /dev/null +++ b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Slobodan Simić , 2017\n" +"Language-Team: Serbian (https://www.transifex.com/calamares/teams/20061/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 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/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..ec7faf311 Binary files /dev/null and b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..dd00e7fbf --- /dev/null +++ b/src/modules/dummypythonqt/lang/sr@latin/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Serbian (Latin) (https://www.transifex.com/calamares/teams/20061/sr@latin/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr@latin\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 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/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..e27097ca7 Binary files /dev/null and b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..9839aad35 --- /dev/null +++ b/src/modules/dummypythonqt/lang/sv/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\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" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\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/th/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..99aa63beb Binary files /dev/null and b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..dd14c81a8 --- /dev/null +++ b/src/modules/dummypythonqt/lang/th/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Thai (https://www.transifex.com/calamares/teams/20061/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\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/tr_TR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..effc6f65e Binary files /dev/null and b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..ab62ec545 --- /dev/null +++ b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Demiray Muhterem , 2016\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr_TR\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "Buraya tıkla!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "Yeni bir QLabel." + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "Sahte PythonQt görünümü" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "Sahte PythonQt işleri" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "Kukla PythonQt işleri. Sahte işleri şöyle diyor: {}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "Kukla PythonQt Çalışması için bir durum mesajı." diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..d17a14087 Binary files /dev/null and b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..5bdc57b31 --- /dev/null +++ b/src/modules/dummypythonqt/lang/uk/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Ukrainian (https://www.transifex.com/calamares/teams/20061/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 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/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..176215bcb Binary files /dev/null and b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..5a9fc39de --- /dev/null +++ b/src/modules/dummypythonqt/lang/ur/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Urdu (https://www.transifex.com/calamares/teams/20061/ur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\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/uz/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..037e2fa2a Binary files /dev/null and b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..f1b55bc4c --- /dev/null +++ b/src/modules/dummypythonqt/lang/uz/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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Uzbek (https://www.transifex.com/calamares/teams/20061/uz/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz\n" +"Plural-Forms: nplurals=1; plural=0;\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/zh_CN/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..0dac94ca0 Binary files /dev/null and b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..14bf4463a --- /dev/null +++ b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Mingcong Bai , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/calamares/teams/20061/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "按我按我!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "一个平淡无奇的 QLabel。" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "坠吼滴 PythonQt ViewStep" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "PythonQt 任务" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "我是个 PythonQt 任务。任务提示:{}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "来自 PythonQt 任务的状态消息。" diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..7cda100f9 Binary files /dev/null and b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..0699d412f --- /dev/null +++ b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,43 @@ +# 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: 2017-09-04 08:16-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Jeff Huang , 2016\n" +"Language-Team: Chinese (Taiwan) (https://www.transifex.com/calamares/teams/20061/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "點擊我!" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "一個新的 QLabel。" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "假的 PythonQt 檢視步驟" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "假的 PythonQt 工作" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "這是一個假的 PythonQt 工作。假工作表示:{}" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "假的 PythonQt 工作的狀態訊息。" diff --git a/src/modules/dummypythonqt/main.py b/src/modules/dummypythonqt/main.py new file mode 100644 index 000000000..ebe4df6d5 --- /dev/null +++ b/src/modules/dummypythonqt/main.py @@ -0,0 +1,197 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2016-2017, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import platform + +from PythonQt.QtGui import * +import PythonQt.calamares as calamares + +# WARNING: the Calamares PythonQt API is considered EXPERIMENTAL as of +# Calamares 2.5. It comes with no promise or commitment to API stability. + + +# Set up translations. +# You may skip this if your Calamares module has no user visible strings. +# DO NOT install _ into the builtin namespace because each module loads +# its own catalog. +# DO use the gettext class-based API and manually alias _ as described in: +# https://docs.python.org/3.5/library/gettext.html#localizing-your-module +import gettext +import inspect +import os +_filename = inspect.getframeinfo(inspect.currentframe()).filename +_path = os.path.dirname(os.path.abspath(_filename)) + +_ = gettext.gettext + +# Example Python ViewModule. +# A Python ViewModule is a Python program which defines a ViewStep class. +# One UI module ==> one ViewStep. +# This class must be marked with the @calamares_module decorator. A +# ViewModule may define other classes, but only one may be decorated with +# @calamares_module. Such a class must conform to the Calamares ViewStep +# interface and functions as the entry point of the module. +# A ViewStep manages one or more "wizard pages" through methods like +# back/next, and reports its status through isNextEnabled/isBackEnabled/ +# isAtBeginning/isAtEnd. The whole UI, including all the pages, must be +# exposed as a single QWidget, returned by the widget function. +# +# For convenience, both C++ and PythonQt ViewSteps are considered to be +# implementations of ViewStep.h. Additionally, the Calamares PythonQt API +# allows Python developers to keep their identifiers more Pythonic on the +# Python side. Thus, all of the following are considered valid method +# identifiers in a ViewStep implementation: isNextEnabled, isnextenabled, +# is_next_enabled. + + +@calamares_module +class DummyPythonQtViewStep: + def __init__(self): + # Importing PythonQt.QtGui provides access to most Qt widget classes. + self.main_widget = QFrame() + + self.main_widget.setLayout(QVBoxLayout()) + + label = QLabel() + self.main_widget.layout().addWidget(label) + + accumulator = "\nCalamares+PythonQt running embedded Python " +\ + platform.python_version() + label.text = accumulator + + btn = QPushButton() + + # Python strings can be used wherever a method wants a QString. Python + # gettext translations can be used seamlessly as well. + btn.setText(_("Click me!")) + self.main_widget.layout().addWidget(btn) + + # The syntax for signal-slot connections is very simple, though + # slightly different from the C++ equivalent. There are no SIGNAL and + # SLOT macros, and a signal can be connected to any Python method + # (without a special "slot" designation). + btn.connect("clicked(bool)", self.on_btn_clicked) + + def on_btn_clicked(self): + self.main_widget.layout().addWidget(QLabel(_("A new QLabel."))) + + def prettyName(self): + return _("Dummy PythonQt ViewStep") + + def isNextEnabled(self): + return True # The "Next" button should be clickable + + def isBackEnabled(self): + return True # The "Back" button should be clickable + + def isAtBeginning(self): + # True means the currently shown UI page is the first page of this + # module, thus a "Back" button click will not be handled by this + # module and will cause a skip to the previous ViewStep instead + # (if any). False means that the present ViewStep provides other UI + # pages placed logically "before" the current one, thus a "Back" button + # click will be handled by this module instead of skipping to another + # ViewStep. A module (ViewStep) with only one page will always return + # True here. + return True + + def isAtEnd(self): + # True means the currently shown UI page is the last page of this + # module, thus a "Next" button click will not be handled by this + # module and will cause a skip to the next ViewStep instead (if any). + # False means that the present ViewStep provides other UI pages placed + # logically "after" the current one, thus a "Next" button click will + # be handled by this module instead of skipping to another ViewStep. + # A module (ViewStep) with only one page will always return True here. + return True + + def jobs(self): + # Returns a list of objects that implement Calamares::Job. + return [DummyPQJob("Dummy PythonQt job reporting for duty")] + + def widget(self): + # Returns the base QWidget of this module's UI. + return self.main_widget + + def retranslate(self, locale_name): + # This is where it gets slightly weird. In most desktop applications we + # shouldn't need this kind of mechanism, because we could assume that + # the operating environment is configured to use a certain language. + # Usually the user would change the system-wide language in a settings + # UI, restart the application, done. + # Alas, Calamares runs on an unconfigured live system, and one of the + # core features of Calamares is to allow the user to pick a language. + # Unfortunately, strings in the UI do not automatically react to a + # runtime language change. To get UI strings in a new language, all + # user-visible strings must be retranslated (by calling tr() in C++ or + # _() in Python) and reapplied on the relevant widgets. + # When the user picks a new UI translation language, Qt raises a QEvent + # of type LanguageChange, which propagates through the QObject + # hierarchy. By catching and reacting to this event, we can show + # user-visible strings in the new language at the right time. + # The C++ side of the Calamares PythonQt API catches the LanguageChange + # event and calls the present method. It is then up to the module + # developer to add here all the needed code to load the module's + # translation catalog for the new language (which is separate from the + # main Calamares strings catalog) and reapply any user-visible strings. + calamares.utils.debug("PythonQt retranslation event " + "for locale name: {}".format(locale_name)) + + # First we load the catalog file for the new language... + try: + global _ + _t = gettext.translation('dummypythonqt', + localedir=os.path.join(_path, 'lang'), + languages=[locale_name]) + _ = _t.gettext + except OSError as e: + calamares.utils.debug(e) + pass + + # ... and then we can call setText(_("foo")) and similar methods on + # the relevant widgets here to reapply the strings. + +# An example Job class. Implements Calamares::Job. For method identifiers, the +# same rules apply as for ViewStep. No decorators are necessary here, because +# only the ViewStep implementation is the unique entry point, and a module can +# have any number of jobs. + + +class DummyPQJob: + def __init__(self, my_msg): + self.my_msg = my_msg + + def pretty_name(self): + return _("The Dummy PythonQt Job") + + def pretty_description(self): + return _("This is the Dummy PythonQt Job. " + "The dummy job says: {}").format(self.my_msg) + + def pretty_status_message(self): + return _("A status message for Dummy PythonQt Job.") + + def exec(self): + # As an example, we touch a file in the target root filesystem. + rmp = calamares.global_storage['rootMountPoint'] + os.system("touch {}/calamares_dpqt_was_here".format(rmp)) + calamares.utils.debug("the dummy job says {}".format(self.my_msg)) + return {'ok': True} diff --git a/src/modules/dummypythonqt/module.desc b/src/modules/dummypythonqt/module.desc new file mode 100644 index 000000000..46633a6db --- /dev/null +++ b/src/modules/dummypythonqt/module.desc @@ -0,0 +1,7 @@ +# Module metadata file for dummy pythonqt jobmodule +# Syntax is YAML 1.2 +--- +type: "view" +name: "dummypythonqt" +interface: "pythonqt" +script: "main.py" #assumed relative to the current directory diff --git a/src/modules/finished/CMakeLists.txt b/src/modules/finished/CMakeLists.txt index ce6cfd1d8..6482fb2cd 100644 --- a/src/modules/finished/CMakeLists.txt +++ b/src/modules/finished/CMakeLists.txt @@ -1,4 +1,7 @@ +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network ) + include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) + calamares_add_plugin( finished TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO @@ -7,7 +10,8 @@ calamares_add_plugin( finished FinishedPage.cpp UI FinishedPage.ui - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui + Qt5::DBus SHARED_LIB ) diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index 609856975..43e9f5329 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,6 +40,7 @@ FinishedPage::FinishedPage( QWidget* parent ) , ui( new Ui::FinishedPage ) , m_restartSetUp( false ) { + cDebug() << "FinishedPage()"; ui->setupUi( this ); ui->mainText->setAlignment( Qt::AlignCenter ); @@ -48,13 +50,11 @@ FinishedPage::FinishedPage( QWidget* parent ) CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ui->mainText->setText( tr( "

All done.


" - "%1 has been installed on your computer.
" - "You may now restart into your new system, or continue " - "using the %2 Live environment." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ) ); + "%1 has been installed on your computer.
" + "You may now restart into your new system, or continue " + "using the %2 Live environment." ) + .arg( *Calamares::Branding::VersionedName ) + .arg( *Calamares::Branding::ProductName ) ); ) } @@ -83,13 +83,14 @@ FinishedPage::setRestartNowCommand( const QString& command ) void FinishedPage::setUpRestart() { + cDebug() << "FinishedPage::setUpRestart()"; if ( !m_restartSetUp ) { connect( qApp, &QApplication::aboutToQuit, this, [this] { if ( ui->restartCheckBox->isVisible() && - ui->restartCheckBox->isChecked() ) + ui->restartCheckBox->isChecked() ) QProcess::execute( "/bin/sh", { "-c", m_restartNowCommand } ); } ); } @@ -102,3 +103,14 @@ FinishedPage::focusInEvent( QFocusEvent* e ) e->accept(); } +void +FinishedPage::onInstallationFailed( const QString& message, const QString& details ) +{ + Q_UNUSED( details ); + ui->mainText->setText( tr( "

Installation Failed


" + "%1 has not been installed on your computer.
" + "The error message was: %2." ) + .arg( *Calamares::Branding::VersionedName ) + .arg( message ) ); + setRestartNowEnabled( false ); +} diff --git a/src/modules/finished/FinishedPage.h b/src/modules/finished/FinishedPage.h index 31930a6f1..ba3e75667 100644 --- a/src/modules/finished/FinishedPage.h +++ b/src/modules/finished/FinishedPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,6 +39,9 @@ public: void setUpRestart(); +public slots: + void onInstallationFailed( const QString& message, const QString& details ); + protected: void focusInEvent( QFocusEvent* e ) override; //choose the child widget to focus diff --git a/src/modules/finished/FinishedViewStep.cpp b/src/modules/finished/FinishedViewStep.cpp index 7579f9b8b..d3beacb82 100644 --- a/src/modules/finished/FinishedViewStep.cpp +++ b/src/modules/finished/FinishedViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,15 +18,30 @@ */ #include "FinishedViewStep.h" - #include "FinishedPage.h" +#include "JobQueue.h" +#include "utils/Logger.h" + +#include +#include +#include #include +#include "Branding.h" + FinishedViewStep::FinishedViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new FinishedPage() ) + , installFailed( false ) + , m_notifyOnFinished( false ) { + auto jq = Calamares::JobQueue::instance(); + connect( jq, &Calamares::JobQueue::failed, + m_widget, &FinishedPage::onInstallationFailed ); + connect( jq, &Calamares::JobQueue::failed, + this, &FinishedViewStep::onInstallationFailed ); + emit nextStatusChanged( true ); } @@ -90,11 +106,42 @@ FinishedViewStep::isAtEnd() const return true; } +void +FinishedViewStep::sendNotification() +{ + // If the installation failed, don't send notification popup; + // there's a (modal) dialog popped up with the failure notice. + if ( installFailed ) + return; + + QDBusInterface notify( "org.freedesktop.Notifications", "/org/freedesktop/Notifications", "org.freedesktop.Notifications" ); + if ( notify.isValid() ) + { + QDBusReply r = notify.call( "Notify", + QString( "Calamares" ), + QVariant( 0U ), + QString( "calamares" ), + tr( "Installation Complete" ), + tr( "The installation of %1 is complete." ).arg( *Calamares::Branding::VersionedName ), + QStringList(), + QVariantMap(), + QVariant( 0 ) + ); + if ( !r.isValid() ) + cDebug() << "Could not call notify for end of installation." << r.error(); + } + else + cDebug() << "Could not get dbus interface for notifications." << notify.lastError(); +} + void FinishedViewStep::onActivate() { m_widget->setUpRestart(); + + if ( m_notifyOnFinished ) + sendNotification(); } @@ -104,12 +151,19 @@ FinishedViewStep::jobs() const return QList< Calamares::job_ptr >(); } +void +FinishedViewStep::onInstallationFailed( const QString& message, const QString& details ) +{ + Q_UNUSED( message ); + Q_UNUSED( details ); + installFailed = true; +} void FinishedViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { if ( configurationMap.contains( "restartNowEnabled" ) && - configurationMap.value( "restartNowEnabled" ).type() == QVariant::Bool ) + configurationMap.value( "restartNowEnabled" ).type() == QVariant::Bool ) { bool restartNowEnabled = configurationMap.value( "restartNowEnabled" ).toBool(); @@ -117,15 +171,19 @@ FinishedViewStep::setConfigurationMap( const QVariantMap& configurationMap ) if ( restartNowEnabled ) { if ( configurationMap.contains( "restartNowChecked" ) && - configurationMap.value( "restartNowChecked" ).type() == QVariant::Bool && - configurationMap.contains( "restartNowCommand" ) && - configurationMap.value( "restartNowCommand" ).type() == QVariant::String ) - { + configurationMap.value( "restartNowChecked" ).type() == QVariant::Bool ) m_widget->setRestartNowChecked( configurationMap.value( "restartNowChecked" ).toBool() ); + + if ( configurationMap.contains( "restartNowCommand" ) && + configurationMap.value( "restartNowCommand" ).type() == QVariant::String ) m_widget->setRestartNowCommand( configurationMap.value( "restartNowCommand" ).toString() ); - } + else + m_widget->setRestartNowCommand( "systemctl -i reboot" ); } } + if ( configurationMap.contains( "notifyOnFinished" ) && + configurationMap.value( "notifyOnFinished" ).type() == QVariant::Bool ) + m_notifyOnFinished = configurationMap.value( "notifyOnFinished" ).toBool(); } CALAMARES_PLUGIN_FACTORY_DEFINITION( FinishedViewStepFactory, registerPlugin(); ) diff --git a/src/modules/finished/FinishedViewStep.h b/src/modules/finished/FinishedViewStep.h index 30151dffb..f13da9fb8 100644 --- a/src/modules/finished/FinishedViewStep.h +++ b/src/modules/finished/FinishedViewStep.h @@ -34,7 +34,7 @@ class PLUGINDLLEXPORT FinishedViewStep : public Calamares::ViewStep public: explicit FinishedViewStep( QObject* parent = nullptr ); - virtual ~FinishedViewStep(); + virtual ~FinishedViewStep() override; QString prettyName() const override; @@ -55,8 +55,20 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; +public slots: + void onInstallationFailed( const QString& message, const QString& details ); + private: FinishedPage* m_widget; + + /** + * @brief At the end of installation (when this step is activated), + * send a desktop notification via DBus that the install is done. + */ + void sendNotification(); + + bool installFailed; + bool m_notifyOnFinished; }; CALAMARES_PLUGIN_FACTORY_DECLARATION( FinishedViewStepFactory ) diff --git a/src/modules/finished/finished.conf b/src/modules/finished/finished.conf index f93acb587..6bd8bb2d6 100644 --- a/src/modules/finished/finished.conf +++ b/src/modules/finished/finished.conf @@ -1,4 +1,17 @@ +Configuration for the "finished" page, which is usually shown only at +the end of the installation (successful or not). --- +# The finished page can hold a "restart system now" checkbox. +# If this is false, no checkbox is show and the system is not restarted +# when Calamares exits. restartNowEnabled: true +# Initial state of the checkbox "restart now". restartNowChecked: false +# If the checkbox is shown, and the checkbox is checked, then when +# Calamares exits from the finished-page it will run this command. restartNowCommand: "systemctl -i reboot" + +# When the last page is (successfully) reached, send a DBus notification +# to the desktop that the installation is done. This works only if the +# user as whom Calamares is run, can reach the regular desktop session bus. +notifyOnFinished: false diff --git a/src/modules/finished/module.desc b/src/modules/finished/module.desc deleted file mode 100644 index bc3e628c6..000000000 --- a/src/modules/finished/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for greeting viewmodule -# Syntax is YAML 1.2 ---- -type: "view" #core or view -name: "finished" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -load: "libcalamares_viewmodule_finished.so" diff --git a/src/modules/fstab/fstab.conf b/src/modules/fstab/fstab.conf index 7dbf52975..c3dbfc309 100644 --- a/src/modules/fstab/fstab.conf +++ b/src/modules/fstab/fstab.conf @@ -8,3 +8,6 @@ ssdExtraMountOptions: xfs: discard swap: discard btrfs: discard,compress=lzo +crypttabOptions: luks +# For Debian and Debian-based distributions, change the above line to: +# crypttabOptions: luks,keyscript=/bin/cat diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index 8d096017b..1f46fec99 100644 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -4,6 +4,8 @@ # === This file is part of Calamares - === # # Copyright 2014, Aurélien Gâteau +# Copyright 2016, Teo Mrnjavac +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,17 +22,32 @@ import os import re +import subprocess import libcalamares -HEADER = """# /etc/fstab: static file system information. +FSTAB_HEADER = """# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a device; this may # be used with UUID= as a more robust way to name devices that works even if # disks are added and removed. See fstab(5). # -# """ +# """ + +CRYPTTAB_HEADER = """# /etc/crypttab: mappings for encrypted partitions. +# +# Each mapped device will be created in /dev/mapper, so your /etc/fstab +# should use the /dev/mapper/ paths for encrypted devices. +# +# See crypttab(5) for the supported syntax. +# +# NOTE: Do not list your root (/) partition here, it must be set up +# beforehand by the initramfs (/etc/mkinitcpio.conf). The same applies +# to encrypted swap, which should be set up with mkinitcpio-openswap +# for resume support. +# +# """ # Turn Parted filesystem names into fstab names FS_MAP = { @@ -61,8 +78,8 @@ def is_ssd_disk(disk_name): # Should not happen unless sysfs changes, but better safe than sorry return False - with open(filename) as f: - return f.read() == "0\n" + with open(filename) as sysfile: + return sysfile.read() == "0\n" def disk_name_for_partition(partition): @@ -73,7 +90,7 @@ def disk_name_for_partition(partition): """ name = os.path.basename(partition["device"]) - if name.startswith("/dev/mmcblk"): + if name.startswith("/dev/mmcblk") or name.startswith("/dev/nvme"): return re.sub("p[0-9]+$", "", name) return re.sub("[0-9]+$", "", name) @@ -87,11 +104,13 @@ class FstabGenerator(object): :param mount_options: :param ssd_extra_mount_options: """ - def __init__(self, partitions, root_mount_point, mount_options, ssd_extra_mount_options): + def __init__(self, partitions, root_mount_point, mount_options, + ssd_extra_mount_options, crypttab_options): self.partitions = partitions self.root_mount_point = root_mount_point self.mount_options = mount_options self.ssd_extra_mount_options = ssd_extra_mount_options + self.crypttab_options = crypttab_options self.ssd_disks = set() self.root_is_ssd = False @@ -102,6 +121,7 @@ class FstabGenerator(object): """ self.find_ssd_disks() self.generate_fstab() + self.generate_crypttab() self.create_mount_points() return None @@ -111,19 +131,86 @@ class FstabGenerator(object): disks = {disk_name_for_partition(x) for x in self.partitions} self.ssd_disks = {x for x in disks if is_ssd_disk(x)} + def generate_crypttab(self): + """ Create crypttab. """ + mkdir_p(os.path.join(self.root_mount_point, "etc")) + crypttab_path = os.path.join(self.root_mount_point, "etc", "crypttab") + + with open(crypttab_path, "w") as crypttab_file: + print(CRYPTTAB_HEADER, file=crypttab_file) + + for partition in self.partitions: + dct = self.generate_crypttab_line_info(partition) + + if dct: + self.print_crypttab_line(dct, file=crypttab_file) + + def generate_crypttab_line_info(self, partition): + """ Generates information for each crypttab entry. """ + if "luksMapperName" not in partition or "luksUuid" not in partition: + return None + + mapper_name = partition["luksMapperName"] + mount_point = partition["mountPoint"] + luks_uuid = partition["luksUuid"] + if not mapper_name or not luks_uuid: + return None + + return dict( + name=mapper_name, + device="UUID=" + luks_uuid, + password="/crypto_keyfile.bin", + options=self.crypttab_options, + ) + + def print_crypttab_line(self, dct, file=None): + """ Prints line to '/etc/crypttab' file. """ + line = "{:21} {:<45} {} {}".format(dct["name"], + dct["device"], + dct["password"], + dct["options"], + ) + + print(line, file=file) + def generate_fstab(self): """ Create fstab. """ mkdir_p(os.path.join(self.root_mount_point, "etc")) fstab_path = os.path.join(self.root_mount_point, "etc", "fstab") - with open(fstab_path, "w") as fl: - print(HEADER, file=fl) + with open(fstab_path, "w") as fstab_file: + print(FSTAB_HEADER, file=fstab_file) for partition in self.partitions: - dct = self.generate_fstab_line_info(partition) + # Special treatment for a btrfs root with @ and @home + # subvolumes + if (partition["fs"] == "btrfs" + and partition["mountPoint"] == "/"): + output = subprocess.check_output(['btrfs', + 'subvolume', + 'list', + self.root_mount_point]) + output_lines = output.splitlines() + for line in output_lines: + if line.endswith(b'path @'): + root_entry = partition + root_entry["subvol"] = "@" + dct = self.generate_fstab_line_info(root_entry) + if dct: + self.print_fstab_line(dct, file=fstab_file) + elif line.endswith(b'path @home'): + home_entry = partition + home_entry["mountPoint"] = "/home" + home_entry["subvol"] = "@home" + dct = self.generate_fstab_line_info(home_entry) + if dct: + self.print_fstab_line(dct, file=fstab_file) - if dct: - self.print_fstab_line(dct, file=fl) + else: + dct = self.generate_fstab_line_info(partition) + + if dct: + self.print_fstab_line(dct, file=fstab_file) if self.root_is_ssd: # Mount /tmp on a tmpfs @@ -133,26 +220,26 @@ class FstabGenerator(object): options="defaults,noatime,mode=1777", check=0, ) - self.print_fstab_line(dct, file=fl) + self.print_fstab_line(dct, file=fstab_file) def generate_fstab_line_info(self, partition): - """ Generates information for each fstab entry. - - :param partition: - :return: - """ - fs = partition["fs"] + """ Generates information for each fstab entry. """ + filesystem = partition["fs"].lower() + has_luks = "luksMapperName" in partition mount_point = partition["mountPoint"] disk_name = disk_name_for_partition(partition) is_ssd = disk_name in self.ssd_disks - fs = FS_MAP.get(fs, fs) + filesystem = FS_MAP.get(filesystem, filesystem) - if not mount_point and not fs == "swap": + if not mount_point and not filesystem == "swap": return None + if not mount_point: + mount_point = "swap" - options = self.mount_options.get(fs, self.mount_options["default"]) + options = self.mount_options.get(filesystem, + self.mount_options["default"]) if is_ssd: - extra = self.ssd_extra_mount_options.get(fs) + extra = self.ssd_extra_mount_options.get(filesystem) if extra: options += "," + extra @@ -167,25 +254,29 @@ class FstabGenerator(object): if mount_point == "/": self.root_is_ssd = is_ssd - return dict(device="UUID=" + partition["uuid"], - mount_point=mount_point or "swap", - fs=fs, + if filesystem == "btrfs" and "subvol" in partition: + options="subvol={},".format(partition["subvol"]) + options + + if has_luks: + device="/dev/mapper/" + partition["luksMapperName"] + else: + device="UUID=" + partition["uuid"] + + return dict(device=device, + mount_point=mount_point, + fs=filesystem, options=options, check=check, ) def print_fstab_line(self, dct, file=None): - """ Prints line to '/etc/fstab' file. - - :param dct: - :param file: - """ - line = "{:41} {:<14} {:<7} {:<10} 0 {}".format(dct["device"], - dct["mount_point"], - dct["fs"], - dct["options"], - dct["check"], - ) + """ Prints line to '/etc/fstab' file. """ + line = "{:41} {:<14} {:<7} {:<10} 0 {}".format(dct["device"], + dct["mount_point"], + dct["fs"], + dct["options"], + dct["check"], + ) print(line, file=file) def create_mount_points(self): @@ -200,12 +291,17 @@ def run(): :return: """ - gs = libcalamares.globalstorage + global_storage = libcalamares.globalstorage conf = libcalamares.job.configuration - partitions = gs.value("partitions") - root_mount_point = gs.value("rootMountPoint") + partitions = global_storage.value("partitions") + root_mount_point = global_storage.value("rootMountPoint") mount_options = conf["mountOptions"] ssd_extra_mount_options = conf.get("ssdExtraMountOptions", {}) - generator = FstabGenerator(partitions, root_mount_point, mount_options, ssd_extra_mount_options) + crypttab_options = conf.get("crypttabOptions", "luks") + generator = FstabGenerator(partitions, + root_mount_point, + mount_options, + ssd_extra_mount_options, + crypttab_options) return generator.run() diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 5f4e7dcaa..3ef68e46e 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -4,7 +4,10 @@ # === This file is part of Calamares - === # # Copyright 2014-2015, Philip Müller -# Copyright 2015, Teo Mrnjavac +# Copyright 2015-2017, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# Copyright 2017, Adriaan de Groot +# Copyright 2017, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,7 +28,10 @@ import re def modify_grub_default(partitions, root_mount_point, distributor): - """ Configures '/etc/default/grub' for hibernation and plymouth. + """ + Configures '/etc/default/grub' for hibernation and plymouth. + + @see bootloader/main.py, for similar handling of kernel parameters :param partitions: :param root_mount_point: @@ -35,28 +41,73 @@ def modify_grub_default(partitions, root_mount_point, distributor): default_dir = os.path.join(root_mount_point, "etc/default") default_grub = os.path.join(default_dir, "grub") distributor_replace = distributor.replace("'", "'\\''") - plymouth_bin = libcalamares.utils.target_env_call(["sh", "-c", "which plymouth"]) + dracut_bin = libcalamares.utils.target_env_call( + ["sh", "-c", "which dracut"] + ) + have_dracut = dracut_bin == 0 # Shell exit value 0 means success + use_splash = "" swap_uuid = "" + swap_outer_uuid = "" + swap_outer_mappername = None - libcalamares.utils.debug("which plymouth exit code: {!s}".format(plymouth_bin)) + if libcalamares.globalstorage.contains("hasPlymouth"): + if libcalamares.globalstorage.value("hasPlymouth"): + use_splash = "splash" - if plymouth_bin == 0: - use_splash = "splash" + cryptdevice_params = [] - for partition in partitions: - if partition["fs"] == "linuxswap": - swap_uuid = partition["uuid"] + if have_dracut: + for partition in partitions: + has_luks = "luksMapperName" in partition + if partition["fs"] == "linuxswap" and not has_luks: + swap_uuid = partition["uuid"] + + if (partition["fs"] == "linuxswap" and has_luks): + swap_outer_uuid = partition["luksUuid"] + swap_outer_mappername = partition["luksMapperName"] + + if (partition["mountPoint"] == "/" and has_luks): + cryptdevice_params = [ + "rd.luks.uuid={!s}".format(partition["luksUuid"]) + ] + else: + for partition in partitions: + has_luks = "luksMapperName" in partition + if partition["fs"] == "linuxswap" and not has_luks: + swap_uuid = partition["uuid"] + + if (partition["mountPoint"] == "/" and has_luks): + cryptdevice_params = [ + "cryptdevice=UUID={!s}:{!s}".format( + partition["luksUuid"], partition["luksMapperName"] + ), + "root=/dev/mapper/{!s}".format( + partition["luksMapperName"] + ), + "resume=/dev/mapper/{!s}".format( + partition["luksMapperName"] + ) + ] kernel_params = ["quiet"] + if cryptdevice_params: + kernel_params.extend(cryptdevice_params) + if use_splash: kernel_params.append(use_splash) if swap_uuid: kernel_params.append("resume=UUID={!s}".format(swap_uuid)) - distributor_line = "GRUB_DISTRIBUTOR=\"{!s}\"".format(distributor_replace) + if have_dracut and swap_outer_uuid: + kernel_params.append("rd.luks.uuid={!s}".format(swap_outer_uuid)) + if have_dracut and swap_outer_mappername: + kernel_params.append("resume=/dev/mapper/{!s}".format( + swap_outer_mappername)) + + distributor_line = "GRUB_DISTRIBUTOR='{!s}'".format(distributor_replace) if not os.path.exists(default_dir): os.mkdir(default_dir) @@ -75,7 +126,9 @@ def modify_grub_default(partitions, root_mount_point, distributor): for i in range(len(lines)): if lines[i].startswith("#GRUB_CMDLINE_LINUX_DEFAULT"): - kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format(" ".join(kernel_params)) + kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format( + " ".join(kernel_params) + ) lines[i] = kernel_cmd have_kernel_cmd = True elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"): @@ -92,20 +145,26 @@ def modify_grub_default(partitions, root_mount_point, distributor): for existing_param in existing_params: existing_param_name = existing_param.split("=")[0] - if existing_param_name not in ["quiet", "resume", "splash"]: # the only ones we ever add + # the only ones we ever add + if existing_param_name not in [ + "quiet", "resume", "splash"]: kernel_params.append(existing_param) - kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format(" ".join(kernel_params)) + kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format( + " ".join(kernel_params) + ) lines[i] = kernel_cmd have_kernel_cmd = True - elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"): + elif (lines[i].startswith("#GRUB_DISTRIBUTOR") + or lines[i].startswith("GRUB_DISTRIBUTOR")): lines[i] = distributor_line have_distributor_line = True else: lines = [] if "defaults" in libcalamares.job.configuration: - for key, value in libcalamares.job.configuration["defaults"].items(): + for key, value in libcalamares.job.configuration[ + "defaults"].items(): if value.__class__.__name__ == "bool": if value: escaped_value = "true" @@ -114,15 +173,20 @@ def modify_grub_default(partitions, root_mount_point, distributor): else: escaped_value = str(value).replace("'", "'\\''") - lines.append("{!s}=\"{!s}\"".format(key, escaped_value)) + lines.append("{!s}='{!s}'".format(key, escaped_value)) if not have_kernel_cmd: - kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format(" ".join(kernel_params)) + kernel_cmd = "GRUB_CMDLINE_LINUX_DEFAULT=\"{!s}\"".format( + " ".join(kernel_params) + ) lines.append(kernel_cmd) if not have_distributor_line: lines.append(distributor_line) + if cryptdevice_params: + lines.append("GRUB_ENABLE_CRYPTODISK=y") + with open(default_grub, 'w') as grub_file: grub_file.write("\n".join(lines) + "\n") @@ -130,14 +194,31 @@ def modify_grub_default(partitions, root_mount_point, distributor): def run(): - """ Calls routine with given parameters to modify '/etc/default/grub'. + """ + Calls routine with given parameters to modify '/etc/default/grub'. :return: """ - if libcalamares.globalstorage.value("bootLoader") is None: + + fw_type = libcalamares.globalstorage.value("firmwareType") + + if (libcalamares.globalstorage.value("bootLoader") is None + and fw_type != "efi"): return None partitions = libcalamares.globalstorage.value("partitions") + + if fw_type == "efi": + esp_found = False + + for partition in partitions: + if (partition["mountPoint"] + == libcalamares.globalstorage.value("efiSystemPartition")): + esp_found = True + + if not esp_found: + return None + root_mount_point = libcalamares.globalstorage.value("rootMountPoint") branding = libcalamares.globalstorage.value("branding") distributor = branding["bootloaderEntryName"] diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index 54dea7451..8b31080dd 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -5,6 +5,7 @@ # # Copyright 2014 - 2015, Philip Müller # Copyright 2014, Teo Mrnjavac +# Copyright 2017. Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,13 +27,18 @@ import libcalamares def run(): - """ Set hardware clock """ + """ + Set hardware clock. + """ root_mount_point = libcalamares.globalstorage.value("rootMountPoint") try: subprocess.check_call(["hwclock", "--systohc", "--utc"]) except subprocess.CalledProcessError as e: - return "Cannot set hardware clock.", "hwclock terminated with exit code {}.".format(e.returncode) + return ( + "Cannot set hardware clock.", + "hwclock terminated with exit code {}.".format(e.returncode) + ) shutil.copy2("/etc/adjtime", "{!s}/etc/".format(root_mount_point)) diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index 5d4c704f0..a18cd0c4f 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -5,6 +5,7 @@ # # Copyright 2014, Rohan Garg # Copyright 2015, Philip Müller +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,11 +23,12 @@ import libcalamares import os from collections import OrderedDict -from libcalamares.utils import check_target_env_call def cpuinfo(): - """ Return the information in /proc/cpuinfo as a dictionary in the following format: + """ + Return the information in /proc/cpuinfo as a dictionary in the following + format: cpu_info['proc0']={...} cpu_info['proc1']={...} @@ -36,8 +38,8 @@ def cpuinfo(): nprocs = 0 - with open('/proc/cpuinfo') as f: - for line in f: + with open('/proc/cpuinfo') as cpuinfo_file: + for line in cpuinfo_file: if not line.strip(): # end of one processor cpu_info["proc{!s}".format(nprocs)] = procinfo @@ -46,22 +48,30 @@ def cpuinfo(): procinfo = OrderedDict() else: if len(line.split(':')) == 2: - procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip() + splitted_line = line.split(':')[1].strip() + procinfo[line.split(':')[0].strip()] = splitted_line else: procinfo[line.split(':')[0].strip()] = '' return cpu_info -def set_mkinitcpio_hooks_and_modules(hooks, modules, root_mount_point): - """ Set up mkinitcpio.conf. +def write_mkinitcpio_lines(hooks, modules, files, root_mount_point): + """ + Set up mkinitcpio.conf. :param hooks: :param modules: + :param files: :param root_mount_point: """ - with open("/etc/mkinitcpio.conf", "r") as mkinitcpio_file: - mklins = [x.strip() for x in mkinitcpio_file.readlines()] + hostfile = "/etc/mkinitcpio.conf" + try: + with open(hostfile, "r") as mkinitcpio_file: + mklins = [x.strip() for x in mkinitcpio_file.readlines()] + except FileNotFoundError: + libcalamares.utils.debug("Could not open host file '%s'" % hostfile) + mklins = [] for i in range(len(mklins)): if mklins[i].startswith("HOOKS"): @@ -70,6 +80,9 @@ def set_mkinitcpio_hooks_and_modules(hooks, modules, root_mount_point): elif mklins[i].startswith("MODULES"): joined_modules = ' '.join(modules) mklins[i] = "MODULES=\"{!s}\"".format(joined_modules) + elif mklins[i].startswith("FILES"): + joined_files = ' '.join(files) + mklins[i] = "FILES=\"{!s}\"".format(joined_files) path = os.path.join(root_mount_point, "etc/mkinitcpio.conf") @@ -78,7 +91,8 @@ def set_mkinitcpio_hooks_and_modules(hooks, modules, root_mount_point): def modify_mkinitcpio_conf(partitions, root_mount_point): - """ Modifies mkinitcpio.conf + """ + Modifies mkinitcpio.conf :param partitions: :param root_mount_point: @@ -86,8 +100,13 @@ def modify_mkinitcpio_conf(partitions, root_mount_point): cpu = cpuinfo() swap_uuid = "" btrfs = "" - hooks = ["base", "udev", "autodetect", "modconf", "block", "keyboard", "keymap"] + hooks = ["base", "udev", "autodetect", "modconf", "block", "keyboard", + "keymap"] modules = [] + files = [] + encrypt_hook = False + openswap_hook = False + unencrypted_separate_boot = False # It is important that the plymouth hook comes before any encrypt hook plymouth_bin = os.path.join(root_mount_point, "usr/bin/plymouth") @@ -97,27 +116,48 @@ def modify_mkinitcpio_conf(partitions, root_mount_point): for partition in partitions: if partition["fs"] == "linuxswap": swap_uuid = partition["uuid"] + if "luksMapperName" in partition: + openswap_hook = True if partition["fs"] == "btrfs": btrfs = "yes" - if swap_uuid is not "": + if partition["mountPoint"] == "/" and "luksMapperName" in partition: + encrypt_hook = True + + if (partition["mountPoint"] == "/boot" + and "luksMapperName" not in partition): + unencrypted_separate_boot = True + + if encrypt_hook: + hooks.append("encrypt") + if not unencrypted_separate_boot and \ + os.path.isfile( + os.path.join(root_mount_point, "crypto_keyfile.bin") + ): + files.append("/crypto_keyfile.bin") + + if swap_uuid != "": + if encrypt_hook and openswap_hook: + hooks.extend(["openswap"]) hooks.extend(["resume", "filesystems"]) else: hooks.extend(["filesystems"]) - if btrfs is "yes" and cpu['proc0']['vendor_id'].lower() != "genuineintel": + if btrfs == "yes" and cpu['proc0']['vendor_id'].lower() != "genuineintel": modules.append("crc32c") - elif btrfs is "yes" and cpu['proc0']['vendor_id'].lower() == "genuineintel": + elif (btrfs == "yes" + and cpu['proc0']['vendor_id'].lower() == "genuineintel"): modules.append("crc32c-intel") else: hooks.append("fsck") - set_mkinitcpio_hooks_and_modules(hooks, modules, root_mount_point) + write_mkinitcpio_lines(hooks, modules, files, root_mount_point) def run(): - """ Calls routine with given parameters to modify '/etc/mkinitcpio.conf'. + """ + Calls routine with given parameters to modify '/etc/mkinitcpio.conf'. :return: """ diff --git a/src/modules/initramfs/main.py b/src/modules/initramfs/main.py index 58fb296b9..ff7d41f27 100644 --- a/src/modules/initramfs/main.py +++ b/src/modules/initramfs/main.py @@ -4,6 +4,7 @@ # === This file is part of Calamares - === # # Copyright 2014, Philip Müller +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,7 +27,11 @@ def run(): :return: """ - return_code = target_env_call(["update-initramfs", "-k", "all", "-u"]) + return_code = target_env_call(["update-initramfs", "-k", "all", "-c", + "-t"]) if return_code != 0: - return "Failed to run update-initramfs on the target", "The exit code was {}".format(return_code) + return ( + "Failed to run update-initramfs on the target", + "The exit code was {}".format(return_code) + ) diff --git a/src/modules/initramfscfg/encrypt_hook b/src/modules/initramfscfg/encrypt_hook new file mode 100755 index 000000000..257097303 --- /dev/null +++ b/src/modules/initramfscfg/encrypt_hook @@ -0,0 +1,26 @@ +#!/bin/sh + + PREREQ="" + + prereqs() + { + echo "$PREREQ" + } + + case $1 in + # get pre-requisites + prereqs) + prereqs + exit 0 + ;; + esac + + . /usr/share/initramfs-tools/hook-functions + if [ -f /crypto_keyfile.bin ] + then + cp /crypto_keyfile.bin ${DESTDIR} + fi + if [ -f /etc/crypttab ] + then + cp /etc/crypttab ${DESTDIR}/etc/ + fi diff --git a/src/modules/initramfscfg/encrypt_hook_nokey b/src/modules/initramfscfg/encrypt_hook_nokey new file mode 100755 index 000000000..db51475bd --- /dev/null +++ b/src/modules/initramfscfg/encrypt_hook_nokey @@ -0,0 +1,22 @@ +#!/bin/sh + + PREREQ="" + + prereqs() + { + echo "$PREREQ" + } + + case $1 in + # get pre-requisites + prereqs) + prereqs + exit 0 + ;; + esac + + . /usr/share/initramfs-tools/hook-functions + if [ -f /etc/crypttab ] + then + cp /etc/crypttab ${DESTDIR}/etc/ + fi diff --git a/src/modules/initramfscfg/main.py b/src/modules/initramfscfg/main.py new file mode 100644 index 000000000..d935328d6 --- /dev/null +++ b/src/modules/initramfscfg/main.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2014, Rohan Garg +# Copyright 2015, Philip Müller +# Copyright 2016, David McKinney +# Copyright 2016, Kevin Kofler +# Copyright 2017, Alf Gaida +# Copyright 2017, Adriaan de Groot +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares +import os +import shutil + + +def copy_initramfs_hooks(partitions, root_mount_point): + """ + Copies initramfs hooks so they are picked up by update-initramfs + + :param partitions: + :param root_mount_point: + """ + encrypt_hook = False + unencrypted_separate_boot = False + + for partition in partitions: + if partition["mountPoint"] == "/" and "luksMapperName" in partition: + encrypt_hook = True + + if (partition["mountPoint"] == "/boot" + and "luksMapperName" not in partition): + unencrypted_separate_boot = True + + if encrypt_hook: + target = "{!s}/usr/share/initramfs-tools/hooks/encrypt_hook".format( + root_mount_point) + + # Find where this module is installed + _filename = inspect.getframeinfo(inspect.currentframe()).filename + _path = os.path.dirname(os.path.abspath(_filename)) + + if unencrypted_separate_boot: + shutil.copy2( + os.path.join(_path, "encrypt_hook_nokey"), + target + ) + else: + shutil.copy2( + os.path.join(_path, "encrypt_hook"), + target + ) + os.chmod(target, 0o755) + + +def run(): + """ + Calls routine with given parameters to configure initramfs + + :return: + """ + partitions = libcalamares.globalstorage.value("partitions") + root_mount_point = libcalamares.globalstorage.value("rootMountPoint") + copy_initramfs_hooks(partitions, root_mount_point) + + return None diff --git a/src/modules/initramfscfg/module.desc b/src/modules/initramfscfg/module.desc new file mode 100644 index 000000000..6227c2e25 --- /dev/null +++ b/src/modules/initramfscfg/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "initramfscfg" +interface: "python" +script: "main.py" diff --git a/src/modules/interactiveterminal/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index 4d2fb5fcb..7b35fae0d 100644 --- a/src/modules/interactiveterminal/CMakeLists.txt +++ b/src/modules/interactiveterminal/CMakeLists.txt @@ -1,8 +1,8 @@ -find_package(ECM 0.0.13 REQUIRED NO_MODULE) +find_package(ECM 5.10.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) -include(KDEInstallDirs) # this seems to be necessary for KF5::CoreAddons -include(GenerateExportHeader) # this too, because KDE frameworks always want omnomnom more stuff +include(KDEInstallDirs) +include(GenerateExportHeader) find_package( KF5 REQUIRED Service Parts ) @@ -19,7 +19,7 @@ calamares_add_plugin( interactiveterminal SOURCES InteractiveTerminalViewStep.cpp InteractiveTerminalPage.cpp - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui KF5::Service KF5::Parts diff --git a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h index 77f7bdf34..1c95a229a 100644 --- a/src/modules/interactiveterminal/InteractiveTerminalViewStep.h +++ b/src/modules/interactiveterminal/InteractiveTerminalViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +35,7 @@ class PLUGINDLLEXPORT InteractiveTerminalViewStep : public Calamares::ViewStep public: explicit InteractiveTerminalViewStep( QObject* parent = nullptr ); - virtual ~InteractiveTerminalViewStep(); + virtual ~InteractiveTerminalViewStep() override; QString prettyName() const override; diff --git a/src/modules/interactiveterminal/module.desc b/src/modules/interactiveterminal/module.desc deleted file mode 100644 index a2b5087c9..000000000 --- a/src/modules/interactiveterminal/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for interactiveterminal viewmodule -# Syntax is YAML 1.2 ---- -type: "view" -name: "interactiveterminal" -interface: "qtplugin" -load: "libcalamares_viewmodule_interactiveterminal.so" diff --git a/src/modules/keyboard/CMakeLists.txt b/src/modules/keyboard/CMakeLists.txt index c2a67aa22..c0d8575c6 100644 --- a/src/modules/keyboard/CMakeLists.txt +++ b/src/modules/keyboard/CMakeLists.txt @@ -6,6 +6,7 @@ calamares_add_plugin( keyboard SOURCES KeyboardViewStep.cpp KeyboardPage.cpp + KeyboardLayoutModel.cpp SetKeyboardLayoutJob.cpp keyboardwidget/keyboardglobal.cpp keyboardwidget/keyboardpreview.cpp @@ -13,7 +14,7 @@ calamares_add_plugin( keyboard KeyboardPage.ui RESOURCES keyboard.qrc - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui SHARED_LIB ) diff --git a/src/modules/keyboard/KeyboardLayoutModel.cpp b/src/modules/keyboard/KeyboardLayoutModel.cpp new file mode 100644 index 000000000..9f045043e --- /dev/null +++ b/src/modules/keyboard/KeyboardLayoutModel.cpp @@ -0,0 +1,75 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "KeyboardLayoutModel.h" + +#include + + +KeyboardLayoutModel::KeyboardLayoutModel( QObject* parent ) + : QAbstractListModel( parent ) +{ + init(); +} + + +int +KeyboardLayoutModel::rowCount( const QModelIndex& parent ) const +{ + Q_UNUSED( parent ); + return m_layouts.count(); +} + + +QVariant +KeyboardLayoutModel::data( const QModelIndex& index, int role ) const +{ + if ( !index.isValid() ) + return QVariant(); + + switch ( role ) + { + case Qt::DisplayRole: + return m_layouts.at( index.row() ).second.description; + case KeyboardVariantsRole: + return QVariant::fromValue( m_layouts.at( index.row() ).second.variants ); + case KeyboardLayoutKeyRole: + return m_layouts.at( index.row() ).first; + } + + return QVariant(); +} + + +void +KeyboardLayoutModel::init() +{ + QMap< QString, KeyboardGlobal::KeyboardInfo > layouts = + KeyboardGlobal::getKeyboardLayouts(); + for ( QMap< QString, KeyboardGlobal::KeyboardInfo >::const_iterator it = layouts.constBegin(); + it != layouts.constEnd(); ++it ) + { + m_layouts.append( qMakePair( it.key(), it.value() ) ); + } + + std::stable_sort( m_layouts.begin(), m_layouts.end(), []( const QPair< QString, KeyboardGlobal::KeyboardInfo >& a, + const QPair< QString, KeyboardGlobal::KeyboardInfo >& b ) + { + return a.second.description < b.second.description; + } ); +} diff --git a/src/modules/keyboard/KeyboardLayoutModel.h b/src/modules/keyboard/KeyboardLayoutModel.h new file mode 100644 index 000000000..7afca3d47 --- /dev/null +++ b/src/modules/keyboard/KeyboardLayoutModel.h @@ -0,0 +1,51 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef KEYBOARDLAYOUTMODEL_H +#define KEYBOARDLAYOUTMODEL_H + +#include "keyboardwidget/keyboardglobal.h" + +#include +#include +#include + +class KeyboardLayoutModel : public QAbstractListModel +{ + Q_OBJECT + +public: + enum Roles : int + { + KeyboardVariantsRole = Qt::UserRole, + KeyboardLayoutKeyRole + }; + + KeyboardLayoutModel( QObject* parent = nullptr ); + + int rowCount( const QModelIndex& parent = QModelIndex() ) const override; + + QVariant data( const QModelIndex& index, int role ) const override; + +private: + void init(); + + QList< QPair< QString, KeyboardGlobal::KeyboardInfo > > m_layouts; +}; + +#endif // KEYBOARDLAYOUTMODEL_H diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index 94244fcc3..5443cf01a 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -25,6 +26,7 @@ #include "ui_KeyboardPage.h" #include "keyboardwidget/keyboardpreview.h" #include "SetKeyboardLayoutJob.h" +#include "KeyboardLayoutModel.h" #include "GlobalStorage.h" #include "JobQueue.h" @@ -35,9 +37,36 @@ #include #include +class LayoutItem : public QListWidgetItem +{ +public: + QString data; + + virtual ~LayoutItem(); +}; + +LayoutItem::~LayoutItem() +{ +} + +static QPersistentModelIndex +findLayout( const KeyboardLayoutModel* klm, const QString& currentLayout ) +{ + QPersistentModelIndex currentLayoutItem; + + for ( int i = 0; i < klm->rowCount(); ++i ) + { + QModelIndex idx = klm->index( i ); + if ( idx.isValid() && + idx.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString() == currentLayout ) + currentLayoutItem = idx; + } + + return currentLayoutItem; +} KeyboardPage::KeyboardPage( QWidget* parent ) - : QWidget() + : QWidget( parent ) , ui( new Ui::Page_Keyboard ) , m_keyboardPreview( new KeyBoardPreview( this ) ) , m_defaultIndex( 0 ) @@ -47,9 +76,9 @@ KeyboardPage::KeyboardPage( QWidget* parent ) // Keyboard Preview ui->KBPreviewLayout->addWidget( m_keyboardPreview ); + m_setxkbmapTimer.setSingleShot( true ); + // Connect signals and slots - connect( ui->listLayout, &QListWidget::currentItemChanged, - this, &KeyboardPage::onListLayoutCurrentItemChanged ); connect( ui->listVariant, &QListWidget::currentItemChanged, this, &KeyboardPage::onListVariantCurrentItemChanged ); @@ -66,8 +95,8 @@ KeyboardPage::KeyboardPage( QWidget* parent ) QString model = m_models.value( text, "pc105" ); // Set Xorg keyboard model - QProcess::execute( QString( "setxkbmap -model \"%1\"" ) - .arg( model ).toUtf8() ); + QProcess::execute( QLatin1Literal( "setxkbmap" ), + QStringList() << "-model" << model ); }); CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ) @@ -91,10 +120,10 @@ KeyboardPage::init() if ( process.waitForFinished() ) { - QStringList list = QString( process.readAll() ) + const QStringList list = QString( process.readAll() ) .split( "\n", QString::SkipEmptyParts ); - foreach( QString line, list ) + for ( QString line : list ) { line = line.trimmed(); if ( !line.startsWith( "xkb_symbols" ) ) @@ -150,37 +179,27 @@ KeyboardPage::init() //### Layouts and Variants + KeyboardLayoutModel* klm = new KeyboardLayoutModel( this ); + ui->listLayout->setModel( klm ); + connect( ui->listLayout->selectionModel(), &QItemSelectionModel::currentChanged, + this, &KeyboardPage::onListLayoutCurrentItemChanged ); + // Block signals ui->listLayout->blockSignals( true ); - QMap< QString, KeyboardGlobal::KeyboardInfo > layouts = - KeyboardGlobal::getKeyboardLayouts(); - QMapIterator< QString, KeyboardGlobal::KeyboardInfo > li( layouts ); - LayoutItem* currentLayoutItem = nullptr; - - while ( li.hasNext() ) + QPersistentModelIndex currentLayoutItem = findLayout( klm, currentLayout ); + if ( !currentLayoutItem.isValid() && ( + ( currentLayout == "latin" ) + || ( currentLayout == "pc" ) ) ) { - li.next(); - - LayoutItem* item = new LayoutItem(); - KeyboardGlobal::KeyboardInfo info = li.value(); - - item->setText( info.description ); - item->data = li.key(); - item->info = info; - ui->listLayout->addItem( item ); - - // Find current layout index - if ( li.key() == currentLayout ) - currentLayoutItem = item; + currentLayout = "us"; + currentLayoutItem = findLayout( klm, currentLayout ); } - ui->listLayout->sortItems(); - // Set current layout and variant - if ( currentLayoutItem ) + if ( currentLayoutItem.isValid() ) { - ui->listLayout->setCurrentItem( currentLayoutItem ); + ui->listLayout->setCurrentIndex( currentLayoutItem ); updateVariants( currentLayoutItem, currentVariant ); } @@ -189,8 +208,8 @@ KeyboardPage::init() // Default to the first available layout if none was set // Do this after unblocking signals so we get the default variant handling. - if ( !currentLayoutItem && ui->listLayout->count() > 0 ) - ui->listLayout->setCurrentRow( 0 ); + if ( !currentLayoutItem.isValid() && klm->rowCount() > 0 ) + ui->listLayout->setCurrentIndex( klm->index( 0 ) ); } @@ -201,7 +220,7 @@ KeyboardPage::prettyStatus() const status += tr( "Set keyboard model to %1.
" ) .arg( ui->comboBoxModel->currentText() ); status += tr( "Set keyboard layout to %1/%2." ) - .arg( ui->listLayout->currentItem()->text() ) + .arg( ui->listLayout->currentIndex().data().toString() ) .arg( ui->listVariant->currentItem()->text() ); return status; @@ -210,7 +229,8 @@ KeyboardPage::prettyStatus() const QList< Calamares::job_ptr > KeyboardPage::createJobs( const QString& xOrgConfFileName, - const QString& convertedKeymapPath ) + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ) { QList< Calamares::job_ptr > list; QString selectedModel = m_models.value( ui->comboBoxModel->currentText(), @@ -220,7 +240,8 @@ KeyboardPage::createJobs( const QString& xOrgConfFileName, m_selectedLayout, m_selectedVariant, xOrgConfFileName, - convertedKeymapPath ); + convertedKeymapPath, + writeEtcDefaultKeyboard ); list.append( Calamares::job_ptr( j ) ); return list; @@ -249,12 +270,15 @@ KeyboardPage::finalize() void -KeyboardPage::updateVariants( LayoutItem* currentItem, QString currentVariant ) +KeyboardPage::updateVariants( const QPersistentModelIndex& currentItem, + QString currentVariant ) { // Block signals ui->listVariant->blockSignals( true ); - QMap< QString, QString > variants = currentItem->info.variants; + QMap< QString, QString > variants = + currentItem.data( KeyboardLayoutModel::KeyboardVariantsRole ) + .value< QMap< QString, QString > >(); QMapIterator< QString, QString > li( variants ); LayoutItem* defaultItem = nullptr; @@ -285,26 +309,39 @@ KeyboardPage::updateVariants( LayoutItem* currentItem, QString currentVariant ) void -KeyboardPage::onListLayoutCurrentItemChanged( QListWidgetItem* current, QListWidgetItem* previous ) +KeyboardPage::onListLayoutCurrentItemChanged( const QModelIndex& current, + const QModelIndex& previous ) { - LayoutItem* item = dynamic_cast< LayoutItem* >( current ); - if ( !item ) - return; + Q_UNUSED( previous ); + if ( !current.isValid() ) + return; - updateVariants( item ); + updateVariants( QPersistentModelIndex( current ) ); } +/* Returns stringlist with suitable setxkbmap command-line arguments + * to set the given @p layout and @p variant. + */ +static inline QStringList xkbmap_args( QStringList&& r, const QString& layout, const QString& variant) +{ + r << "-layout" << layout; + if ( !variant.isEmpty() ) + r << "-variant" << variant; + return r; +} void KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWidgetItem* previous ) { - LayoutItem* layoutItem = dynamic_cast< LayoutItem* >( ui->listLayout->currentItem() ); + Q_UNUSED( previous ); + + QPersistentModelIndex layoutIndex = ui->listLayout->currentIndex(); LayoutItem* variantItem = dynamic_cast< LayoutItem* >( current ); - if ( !layoutItem || !variantItem ) + if ( !layoutIndex.isValid() || !variantItem ) return; - QString layout = layoutItem->data; + QString layout = layoutIndex.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString(); QString variant = variantItem->data; m_keyboardPreview->setLayout( layout ); @@ -313,11 +350,22 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi //emit checkReady(); // Set Xorg keyboard layout - QProcess::execute( QString( "setxkbmap -layout \"%1\" -variant \"%2\"" ) - .arg( layout, variant ).toUtf8() ); + if ( m_setxkbmapTimer.isActive() ) + { + m_setxkbmapTimer.stop(); + m_setxkbmapTimer.disconnect( this ); + } + + connect( &m_setxkbmapTimer, &QTimer::timeout, + this, [=] + { + QProcess::execute( QLatin1Literal( "setxkbmap" ), + xkbmap_args( QStringList(), layout, variant ) ); + cDebug() << "xkbmap selection changed to: " << layout << "-" << variant; + m_setxkbmapTimer.disconnect( this ); + } ); + m_setxkbmapTimer.start( QApplication::keyboardInputInterval() ); m_selectedLayout = layout; m_selectedVariant = variant; - cDebug() << "xkbmap selection changed to: " << layout << "-" << variant; } - diff --git a/src/modules/keyboard/KeyboardPage.h b/src/modules/keyboard/KeyboardPage.h index bcb820ea3..7a31f6511 100644 --- a/src/modules/keyboard/KeyboardPage.h +++ b/src/modules/keyboard/KeyboardPage.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -29,6 +29,7 @@ #include #include +#include namespace Ui { @@ -49,26 +50,21 @@ public: QString prettyStatus() const; QList< Calamares::job_ptr > createJobs( const QString& xOrgConfFileName, - const QString& convertedKeymapPath ); + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ); void onActivate(); void finalize(); protected slots: - void onListLayoutCurrentItemChanged( QListWidgetItem* current, - QListWidgetItem* previous ); + void onListLayoutCurrentItemChanged( const QModelIndex& current, + const QModelIndex& previous ); void onListVariantCurrentItemChanged( QListWidgetItem* current, QListWidgetItem* previous ); private: - class LayoutItem : public QListWidgetItem - { - public: - QString data; - KeyboardGlobal::KeyboardInfo info; - }; - - void updateVariants( LayoutItem* currentItem, QString currentVariant = QString() ); + void updateVariants( const QPersistentModelIndex& currentItem, + QString currentVariant = QString() ); Ui::Page_Keyboard* ui; KeyBoardPreview* m_keyboardPreview; @@ -77,6 +73,7 @@ private: QString m_selectedLayout; QString m_selectedVariant; + QTimer m_setxkbmapTimer; }; #endif // KEYBOARDPAGE_H diff --git a/src/modules/keyboard/KeyboardPage.ui b/src/modules/keyboard/KeyboardPage.ui index e778722e5..5df874b21 100644 --- a/src/modules/keyboard/KeyboardPage.ui +++ b/src/modules/keyboard/KeyboardPage.ui @@ -87,7 +87,7 @@
- + :/images/restore.png:/images/restore.png @@ -106,7 +106,7 @@ 9 - + @@ -141,6 +141,8 @@ LE_TestKeyboard buttonRestore - + + + diff --git a/src/modules/keyboard/KeyboardViewStep.cpp b/src/modules/keyboard/KeyboardViewStep.cpp index fa6f60c81..0dd326a8d 100644 --- a/src/modules/keyboard/KeyboardViewStep.cpp +++ b/src/modules/keyboard/KeyboardViewStep.cpp @@ -29,6 +29,7 @@ KeyboardViewStep::KeyboardViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new KeyboardPage() ) , m_nextEnabled( false ) + , m_writeEtcDefaultKeyboard( true ) { m_widget->init(); m_nextEnabled = true; @@ -123,7 +124,9 @@ void KeyboardViewStep::onLeave() { m_widget->finalize(); - m_jobs = m_widget->createJobs( m_xOrgConfFileName, m_convertedKeymapPath ); + m_jobs = m_widget->createJobs( m_xOrgConfFileName, + m_convertedKeymapPath, + m_writeEtcDefaultKeyboard ); m_prettyStatus = m_widget->prettyStatus(); } @@ -131,9 +134,6 @@ KeyboardViewStep::onLeave() void KeyboardViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - // Save the settings to the global settings for the SetKeyboardLayoutJob to use - Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - if ( configurationMap.contains( "xOrgConfFileName" ) && configurationMap.value( "xOrgConfFileName" ).type() == QVariant::String && !configurationMap.value( "xOrgConfFileName" ).toString().isEmpty() ) @@ -157,4 +157,14 @@ KeyboardViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_convertedKeymapPath = QString(); } + + if ( configurationMap.contains( "writeEtcDefaultKeyboard" ) && + configurationMap.value( "writeEtcDefaultKeyboard" ).type() == QVariant::Bool ) + { + m_writeEtcDefaultKeyboard = configurationMap.value( "writeEtcDefaultKeyboard" ).toBool(); + } + else + { + m_writeEtcDefaultKeyboard = true; + } } diff --git a/src/modules/keyboard/KeyboardViewStep.h b/src/modules/keyboard/KeyboardViewStep.h index 476d71a3c..64ce2bb75 100644 --- a/src/modules/keyboard/KeyboardViewStep.h +++ b/src/modules/keyboard/KeyboardViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +35,7 @@ class PLUGINDLLEXPORT KeyboardViewStep : public Calamares::ViewStep public: explicit KeyboardViewStep( QObject* parent = nullptr ); - virtual ~KeyboardViewStep(); + virtual ~KeyboardViewStep() override; QString prettyName() const override; QString prettyStatus() const override; @@ -64,6 +65,7 @@ private: QString m_xOrgConfFileName; QString m_convertedKeymapPath; + bool m_writeEtcDefaultKeyboard; QList< Calamares::job_ptr > m_jobs; }; diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.cpp b/src/modules/keyboard/SetKeyboardLayoutJob.cpp index 28542520f..430a227eb 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * Copyright 2014, Kevin Kofler * * Portions from systemd (localed.c): @@ -40,13 +40,15 @@ SetKeyboardLayoutJob::SetKeyboardLayoutJob( const QString& model, const QString& layout, const QString& variant, const QString& xOrgConfFileName, - const QString& convertedKeymapPath ) + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard) : Calamares::Job() , m_model( model ) , m_layout( layout ) , m_variant( variant ) , m_xOrgConfFileName( xOrgConfFileName ) , m_convertedKeymapPath( convertedKeymapPath ) + , m_writeEtcDefaultKeyboard( writeEtcDefaultKeyboard ) { } @@ -240,6 +242,34 @@ SetKeyboardLayoutJob::writeX11Data( const QString& keyboardConfPath ) const } +bool +SetKeyboardLayoutJob::writeDefaultKeyboardData( const QString& defaultKeyboardPath ) const +{ + QFile file( defaultKeyboardPath ); + file.open( QIODevice::WriteOnly | QIODevice::Text ); + QTextStream stream( &file ); + + stream << "# KEYBOARD CONFIGURATION FILE\n\n" + "# Consult the keyboard(5) manual page.\n\n"; + + stream << "XKBMODEL=\"" << m_model << "\"\n"; + stream << "XKBLAYOUT=\"" << m_layout << "\"\n"; + stream << "XKBVARIANT=\"" << m_variant << "\"\n"; + stream << "XKBOPTIONS=\"\"\n\n"; + stream << "BACKSPACE=\"guess\"\n"; + stream.flush(); + + file.close(); + + cDebug() << "Written XKBMODEL" << m_model << + "; XKBLAYOUT" << m_layout << + "; XKBVARIANT" << m_variant << + "to /etc/default/keyboard file" << defaultKeyboardPath; + + return ( stream.status() == QTextStream::Ok ); +} + + Calamares::JobResult SetKeyboardLayoutJob::exec() { @@ -271,6 +301,12 @@ SetKeyboardLayoutJob::exec() } destDir.mkpath( xorgConfDPath ); + QString defaultKeyboardPath; + if ( QDir( destDir.absoluteFilePath( "etc/default" ) ).exists() ) + { + defaultKeyboardPath = destDir.absoluteFilePath( "etc/default/keyboard" ); + } + // Get the path to the destination's path to the converted key mappings QString convertedKeymapPath = m_convertedKeymapPath; if ( !convertedKeymapPath.isEmpty() ) @@ -288,5 +324,12 @@ SetKeyboardLayoutJob::exec() return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for X11." ), tr( "Failed to write to %1" ).arg( keyboardConfPath ) ); + if ( !defaultKeyboardPath.isEmpty() && m_writeEtcDefaultKeyboard ) + { + if ( !writeDefaultKeyboardData( defaultKeyboardPath ) ) + return Calamares::JobResult::error( tr( "Failed to write keyboard configuration to existing /etc/default directory." ), + tr( "Failed to write to %1" ).arg( keyboardConfPath ) ); + } + return Calamares::JobResult::ok(); } diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.h b/src/modules/keyboard/SetKeyboardLayoutJob.h index 096a1fce3..8cafdeb29 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.h +++ b/src/modules/keyboard/SetKeyboardLayoutJob.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * Copyright 2014, Kevin Kofler * * Calamares is free software: you can redistribute it and/or modify @@ -31,7 +31,8 @@ public: const QString& layout, const QString& variant, const QString& xOrgConfFileName, - const QString& convertedKeymapPath ); + const QString& convertedKeymapPath, + bool writeEtcDefaultKeyboard ); QString prettyName() const override; Calamares::JobResult exec() override; @@ -41,13 +42,15 @@ private: QString findLegacyKeymap() const; bool writeVConsoleData( const QString& vconsoleConfPath, const QString& convertedKeymapPath ) const; - bool writeX11Data( const QString& keyboardConfPath ) const; + bool writeX11Data( const QString& keyboardConfPath ) const; + bool writeDefaultKeyboardData( const QString& defaultKeyboardPath ) const; QString m_model; QString m_layout; QString m_variant; QString m_xOrgConfFileName; QString m_convertedKeymapPath; + const bool m_writeEtcDefaultKeyboard; }; #endif /* SETKEYBOARDLAYOUTJOB_H */ diff --git a/src/modules/keyboard/keyboard.conf b/src/modules/keyboard/keyboard.conf index a2606b94e..9f8f27524 100644 --- a/src/modules/keyboard/keyboard.conf +++ b/src/modules/keyboard/keyboard.conf @@ -3,6 +3,12 @@ # The default value is the name used by upstream systemd-localed. # Relative paths are assumed to be relative to /etc/X11/xorg.conf.d xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf" + # The path to search for keymaps converted from X11 to kbd format # Leave this empty if the setting does not make sense on your distribution. convertedKeymapPath: "/lib/kbd/keymaps/xkb" + +# Write keymap configuration to /etc/default/keyboard, usually +# found on Debian-related systems. +# Defaults to true if nothing is set. +#writeEtcDefaultKeyboard: true diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index e29673d88..f9fdf72e8 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -24,14 +24,13 @@ KeyBoardPreview::KeyBoardPreview( QWidget* parent ) : QWidget( parent ) + , layout( "us" ) , space( 0 ) , usable_width( 0 ) , key_w( 0 ) { setMinimumSize(700, 191); - layout = "us"; - // We must set up the font size in pixels to fit the keys lowerFont = QFont("Helvetica", 10, QFont::DemiBold); lowerFont.setPixelSize(16); @@ -62,14 +61,14 @@ KeyBoardPreview::KeyBoardPreview( QWidget* parent ) -void KeyBoardPreview::setLayout(QString layout) { - this->layout = layout; +void KeyBoardPreview::setLayout(QString _layout) { + layout = _layout; } -void KeyBoardPreview::setVariant(QString variant) { - this->variant = variant; +void KeyBoardPreview::setVariant(QString _variant) { + variant = _variant; if (!loadCodes()) return; @@ -122,9 +121,9 @@ bool KeyBoardPreview::loadCodes() { // Clear codes codes.clear(); - QStringList list = QString(process.readAll()).split("\n", QString::SkipEmptyParts); + const QStringList list = QString(process.readAll()).split("\n", QString::SkipEmptyParts); - foreach(QString line, list) { + for (const QString &line : list) { if (!line.startsWith("keycode") || !line.contains('=')) continue; @@ -235,10 +234,10 @@ void KeyBoardPreview::paintEvent(QPaintEvent* event) { for (int i = 0; i < 4; i++) { if (first_key_w > 0) { - first_key_w = first_key_w*1.375; + first_key_w = int(first_key_w * 1.375); if (kb == &kbList[KB_105] && i == 3) - first_key_w = key_w * 1.275; + first_key_w = int(key_w * 1.275); p.drawRoundedRect(QRectF(6, y, first_key_w, key_w), rx, rx); x = 6 + first_key_w + space; @@ -253,7 +252,7 @@ void KeyBoardPreview::paintEvent(QPaintEvent* event) { int rw=usable_width-x; int ii=0; - foreach (int k, kb->keys.at(i)) { + for (int k : kb->keys.at(i)) { QRectF rect = QRectF(x, y, key_w, key_w); if (ii == kb->keys.at(i).size()-1 && last_end) diff --git a/src/modules/keyboard/module.desc b/src/modules/keyboard/module.desc deleted file mode 100644 index 391db19fc..000000000 --- a/src/modules/keyboard/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for keyboard viewmodule -# Syntax is YAML 1.2 ---- -type: "view" -name: "keyboard" -interface: "qtplugin" -load: "libcalamares_viewmodule_keyboard.so" diff --git a/src/modules/license/CMakeLists.txt b/src/modules/license/CMakeLists.txt index dbafe983e..54774dede 100644 --- a/src/modules/license/CMakeLists.txt +++ b/src/modules/license/CMakeLists.txt @@ -15,7 +15,7 @@ set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} LicensePage.cpp UI LicensePage.ui - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui SHARED_LIB ) diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 7499c50c0..680ed33b1 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -97,7 +97,7 @@ LicensePage::setEntries( const QList< LicenseEntry >& entriesList ) CalamaresUtils::clearLayout( ui->licenseEntriesLayout ); bool required = false; - foreach ( const LicenseEntry& entry, entriesList ) + for ( const LicenseEntry& entry : entriesList ) { if ( entry.required ) { @@ -134,7 +134,7 @@ LicensePage::setEntries( const QList< LicenseEntry >& entriesList ) ui->retranslateUi( this ); ) - foreach ( const LicenseEntry& entry, entriesList ) + for ( const LicenseEntry& entry : entriesList ) { QWidget* widget = new QWidget( this ); QPalette pal( palette() ); diff --git a/src/modules/license/LicenseViewStep.cpp b/src/modules/license/LicenseViewStep.cpp index 6e5ad2631..2b1073886 100644 --- a/src/modules/license/LicenseViewStep.cpp +++ b/src/modules/license/LicenseViewStep.cpp @@ -112,7 +112,8 @@ LicenseViewStep::setConfigurationMap( const QVariantMap& configurationMap ) if ( configurationMap.contains( "entries" ) && configurationMap.value( "entries" ).type() == QVariant::List ) { - foreach ( const QVariant& entryV, configurationMap.value( "entries" ).toList() ) + const auto entries = configurationMap.value( "entries" ).toList(); + for ( const QVariant& entryV : entries ) { if ( entryV.type() != QVariant::Map ) continue; diff --git a/src/modules/license/LicenseViewStep.h b/src/modules/license/LicenseViewStep.h index 6229853ba..07824a5e3 100644 --- a/src/modules/license/LicenseViewStep.h +++ b/src/modules/license/LicenseViewStep.h @@ -36,7 +36,7 @@ class PLUGINDLLEXPORT LicenseViewStep : public Calamares::ViewStep public: explicit LicenseViewStep( QObject* parent = nullptr ); - virtual ~LicenseViewStep(); + virtual ~LicenseViewStep() override; QString prettyName() const override; @@ -52,7 +52,7 @@ public: bool isAtEnd() const override; QList< Calamares::job_ptr > jobs() const override; - + void setConfigurationMap( const QVariantMap& configurationMap ) override; private: diff --git a/src/modules/license/module.desc b/src/modules/license/module.desc deleted file mode 100644 index 3c30ec3da..000000000 --- a/src/modules/license/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for keyboard viewmodule -# Syntax is YAML 1.2 ---- -type: "view" -name: "license" -interface: "qtplugin" -load: "libcalamares_viewmodule_license.so" diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 72ce31341..e32f6e613 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -5,15 +5,18 @@ calamares_add_plugin( locale EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES LCLocaleDialog.cpp - LocaleViewStep.cpp + LocaleConfiguration.cpp LocalePage.cpp + LocaleViewStep.cpp SetTimezoneJob.cpp timezonewidget/timezonewidget.cpp timezonewidget/localeglobal.cpp UI RESOURCES locale.qrc - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui + Qt5::Network + ${YAMLCPP_LIBRARY} SHARED_LIB ) diff --git a/src/modules/locale/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index 55b03f7ea..46605091b 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,7 +41,7 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, upperText->setText( tr( "The system locale setting affects the language and character " "set for some command line user interface elements.
" "The current setting is %1." ) - .arg( guessedLCLocale ) ); + .arg( guessedLCLocale ) ); mainLayout->addWidget( upperText ); setMinimumWidth( upperText->fontMetrics().height() * 24 ); @@ -60,8 +61,11 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, } QDialogButtonBox* dbb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, - Qt::Horizontal, - this ); + Qt::Horizontal, + this ); + dbb->button( QDialogButtonBox::Cancel )->setText( tr( "&Cancel" ) ); + dbb->button( QDialogButtonBox::Ok )->setText( tr( "&OK" ) ); + mainLayout->addWidget( dbb ); connect( dbb->button( QDialogButtonBox::Ok ), &QPushButton::clicked, @@ -69,6 +73,8 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, connect( dbb->button( QDialogButtonBox::Cancel ), &QPushButton::clicked, this, &QDialog::reject ); + connect( m_localesWidget, &QListWidget::itemDoubleClicked, + this, &QDialog::accept ); connect( m_localesWidget, &QListWidget::itemSelectionChanged, [this, dbb]() { @@ -80,9 +86,7 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, } ); if ( selected > -1 ) - { m_localesWidget->setCurrentRow( selected ); - } } diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp new file mode 100644 index 000000000..b8f5f6a9e --- /dev/null +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -0,0 +1,326 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "LocaleConfiguration.h" +#include + +LocaleConfiguration::LocaleConfiguration() + : explicit_lang( false ) + , explicit_lc( false ) +{ +} + + +LocaleConfiguration +LocaleConfiguration::createDefault() +{ + LocaleConfiguration lc = LocaleConfiguration(); + lc.lang = lc.lc_numeric = lc.lc_time = lc.lc_monetary = lc.lc_paper = lc.lc_name + = lc.lc_address = lc.lc_telephone = lc.lc_measurement + = lc.lc_identification = "en_US.UTF-8"; + return lc; +} + + +LocaleConfiguration +LocaleConfiguration::fromLanguageAndLocation( const QString& languageLocale, + const QStringList& availableLocales, + const QString& countryCode ) +{ + LocaleConfiguration lc = LocaleConfiguration(); + QString language = languageLocale.split( '_' ).first(); + lc.myLanguageLocaleBcp47 = QLocale(language).bcp47Name(); + + QStringList linesForLanguage; + for ( const QString &line : availableLocales ) + { + if ( line.startsWith( language ) ) + linesForLanguage.append( line ); + } + + QString lang; + if ( linesForLanguage.length() == 0 || languageLocale.isEmpty() ) + lang = "en_US.UTF-8"; + else if ( linesForLanguage.length() == 1 ) + lang = linesForLanguage.first(); + else + { + QStringList linesForLanguageUtf; + // FIXME: this might be useless if we already filter out non-UTF8 locales + foreach ( QString line, linesForLanguage ) + { + if ( line.contains( "UTF-8", Qt::CaseInsensitive ) || + line.contains( "utf8", Qt::CaseInsensitive ) ) + linesForLanguageUtf.append( line ); + } + + if ( linesForLanguageUtf.length() == 1 ) + lang = linesForLanguageUtf.first(); + } + + // lang could still be empty if we found multiple locales that satisfy myLanguage + + // The following block was inspired by Ubiquity, scripts/localechooser-apply. + // No copyright statement found in file, assuming GPL v2 or later. + /* # In the special cases of Portuguese and Chinese, selecting a + # different location may imply a different dialect of the language. + # In such cases, make LANG reflect the selected language (for + # messages, character types, and collation) and make the other + # locale categories reflect the selected location. */ + if ( language == "pt" || language == "zh" ) + { + QString proposedLocale = QString( "%1_%2" ).arg( language ) + .arg( countryCode ); + foreach ( QString line, linesForLanguage ) + { + if ( line.contains( proposedLocale ) ) + { + lang = line; + break; + } + } + } + + // If we found no good way to set a default lang, do a search with the whole + // language locale and pick the first result, if any. + if ( lang.isEmpty() ) + { + for ( const QString &line : availableLocales ) + { + if ( line.startsWith( languageLocale ) ) + { + lang = line; + break; + } + } + + } + + // Else we have an unrecognized or unsupported locale, all we can do is go with + // en_US.UTF-8 UTF-8. This completes all default language setting guesswork. + if ( lang.isEmpty() ) + lang = "en_US.UTF-8"; + + + // The following block was inspired by Ubiquity, scripts/localechooser-apply. + // No copyright statement found in file, assuming GPL v2 or later. + /* # It is relatively common for the combination of language and location (as + # selected on the timezone page) not to identify a supported combined + # locale. For example, this happens when the user is a migrant, or when + # they prefer to use a different language to interact with their computer + # because that language is better-supported. + # + # In such cases, we would like to be able to use a locale reflecting the + # selected language in LANG for messages, character types, and collation, + # and to make the other locale categories reflect the selected location. + # This means that we have to guess at a suitable locale for the selected + # location, and we do not want to ask yet another locale-related question. + # Nevertheless, some cases are ambiguous: a user who has asked for the + # English language and identifies their location as Switzerland will get + # different numeric representation depending on which Swiss locale we pick. + # + # The goal of identifying a reasonable default for migrants makes things + # easier: it is reasonable to default to French for France despite the + # existence of several minority languages there, because anyone who prefers + # those languages will probably already have selected them and won't arrive + # here. However, in some cases we're unsure, and in some cases we actively + # don't want to pick a "preferred" language: selecting either Greek or + # Turkish as the default language for migrants to Cyprus would probably + # offend somebody! In such cases we simply punt to the old behaviour of not + # setting up a locale reflecting the location, which is suboptimal but is at + # least unlikely to give offence. + # + # Our best shot at general criteria for selecting a default language in + # these circumstances are as follows: + # + # * Exclude special-purpose (e.g. en_DK) and artificial (e.g. la_AU, + # tlh_GB) locales. + # * If there is a language specific to or very strongly associated with the + # country in question, prefer it unless it has rather few native + # speakers. + # * Exclude minority languages that are relatively unlikely to be spoken by + # migrants who have not already selected them as their preferred language + # earlier in the installer. + # * If there is an official national language likely to be seen in print + # media, road signs, etc., then prefer that. + # * In cases of doubt, selecting no default language is safe. */ + + // We make a proposed locale based on the UI language and the timezone's country. There is no + // guarantee that this will be a valid, supported locale (often it won't). + QString lc_formats; + QString combined = QString( "%1_%2" ).arg( language ) + .arg( countryCode ); + // We look up if it's a supported locale. + for ( const QString &line : availableLocales ) + { + if ( line.startsWith( combined ) ) + { + lang = line; + lc_formats = line; + break; + } + } + + if ( lc_formats.isEmpty() ) + { + QStringList available; + for ( const QString &line : availableLocales ) + { + if ( line.contains( QString( "_%1" ).arg( countryCode ) ) ) + { + available.append( line ); + } + } + available.sort(); + if ( available.count() == 1 ) + { + lc_formats = available.first(); + } + else + { + QMap< QString, QString > countryToDefaultLanguage { + { "AU", "en" }, + { "CN", "zh" }, + { "DE", "de" }, + { "DK", "da" }, + { "DZ", "ar" }, + { "ES", "es" }, + // Somewhat unclear: Oromo has the greatest number of + // native speakers; English is the most widely spoken + // language and taught in secondary schools; Amharic is + // the official language and was taught in primary + // schools. + { "ET", "am" }, + { "FI", "fi" }, + { "FR", "fr" }, + { "GB", "en" }, + // Irish (Gaelic) is strongly associated with Ireland, + // but nearly all its native speakers also speak English, + // and migrants are likely to use English. + { "IE", "en" }, + { "IT", "it" }, + { "MA", "ar" }, + { "MK", "mk" }, + { "NG", "en" }, + { "NL", "nl" }, + { "NZ", "en" }, + { "IL", "he" }, + // Filipino is a de facto version of Tagalog, which is + // also spoken; English is also an official language. + { "PH", "fil" }, + { "PK", "ur" }, + { "PL", "pl" }, + { "RU", "ru" }, + // Chinese has more speakers, but English is the "common + // language of the nation" (Wikipedia) and official + // documents must be translated into English to be + // accepted. + { "SG", "en" }, + { "SN", "wo" }, + { "TR", "tr" }, + { "TW", "zh" }, + { "UA", "uk" }, + { "US", "en" }, + { "ZM", "en" } + }; + if ( countryToDefaultLanguage.contains( countryCode ) ) + { + QString combinedLocale = + QString( "%1_%2" ).arg( countryToDefaultLanguage.value( countryCode ) ) + .arg( countryCode ); + + for ( const QString &line : availableLocales ) + { + if ( line.startsWith( combinedLocale ) ) + { + lc_formats = line; + break; + } + } + } + } + } + + // If we cannot make a good choice for a given country we go with the LANG + // setting, which defaults to en_US.UTF-8 UTF-8 if all else fails. + if ( lc_formats.isEmpty() ) + lc_formats = lang; + + lc.lang = lang; + lc.lc_address = lc.lc_identification = lc.lc_measurement = lc.lc_monetary + = lc.lc_name = lc.lc_numeric = lc.lc_paper = lc.lc_telephone + = lc.lc_time = lc_formats; + + return lc; +} + + +bool +LocaleConfiguration::isEmpty() const +{ + return lang.isEmpty() && + lc_numeric.isEmpty() && + lc_time.isEmpty() && + lc_monetary.isEmpty() && + lc_paper.isEmpty() && + lc_name.isEmpty() && + lc_address.isEmpty() && + lc_telephone.isEmpty() && + lc_measurement.isEmpty() && + lc_identification.isEmpty(); +} + + +QMap< QString, QString > +LocaleConfiguration::toMap() +{ + QMap< QString, QString > map; + + if ( !lang.isEmpty() ) + map.insert( "LANG", lang ); + + if ( !lc_numeric.isEmpty() ) + map.insert( "LC_NUMERIC", lc_numeric ); + + if ( !lc_time.isEmpty() ) + map.insert( "LC_TIME", lc_time ); + + if ( !lc_monetary.isEmpty() ) + map.insert( "LC_MONETARY", lc_monetary ); + + if ( !lc_paper.isEmpty() ) + map.insert( "LC_PAPER", lc_paper ); + + if ( !lc_name.isEmpty() ) + map.insert( "LC_NAME", lc_name ); + + if ( !lc_address.isEmpty() ) + map.insert( "LC_ADDRESS", lc_address ); + + if ( !lc_telephone.isEmpty() ) + map.insert( "LC_TELEPHONE", lc_telephone ); + + if ( !lc_measurement.isEmpty() ) + map.insert( "LC_MEASUREMENT", lc_measurement ); + + if ( !lc_identification.isEmpty() ) + map.insert( "LC_IDENTIFICATION", lc_identification ); + + return map; +} diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h new file mode 100644 index 000000000..073d19a5b --- /dev/null +++ b/src/modules/locale/LocaleConfiguration.h @@ -0,0 +1,50 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef LOCALECONFIGURATION_H +#define LOCALECONFIGURATION_H + +#include +#include + +class LocaleConfiguration +{ +public: + explicit LocaleConfiguration(); + + static LocaleConfiguration createDefault(); + static LocaleConfiguration fromLanguageAndLocation( const QString& language, + const QStringList& availableLocales, + const QString& countryCode ); + + bool isEmpty() const; + + // These become all uppercase in locale.conf, but we keep them lowercase here to + // avoid confusion with locale.h. + QString lang, lc_numeric, lc_time, lc_monetary, lc_paper, lc_name, lc_address, + lc_telephone, lc_measurement, lc_identification; + QString myLanguageLocaleBcp47; + QMap< QString, QString > toMap(); + + // If the user has explicitly selected language (from the dialog) + // or numbers format, set these to avoid implicit changes to them. + bool explicit_lang, explicit_lc; +}; + +#endif // LOCALECONFIGURATION_H diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 6b516efab..2172586ff 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,6 +26,7 @@ #include "GlobalStorage.h" #include "JobQueue.h" #include "LCLocaleDialog.h" +#include "Settings.h" #include #include @@ -34,7 +36,7 @@ LocalePage::LocalePage( QWidget* parent ) - : QWidget() + : QWidget( parent ) , m_blockTzWidgetSet( false ) { QBoxLayout* mainLayout = new QVBoxLayout; @@ -81,6 +83,17 @@ LocalePage::LocalePage( QWidget* parent ) localeLayout->addWidget( m_localeChangeButton ); mainLayout->addLayout( localeLayout ); + QBoxLayout* formatsLayout = new QHBoxLayout; + m_formatsLabel = new QLabel( this ); + m_formatsLabel->setWordWrap( true ); + m_formatsLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + formatsLayout->addWidget( m_formatsLabel ); + + m_formatsChangeButton = new QPushButton( this ); + m_formatsChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + formatsLayout->addWidget( m_formatsChangeButton ); + mainLayout->addLayout( formatsLayout ); + setLayout( mainLayout ); connect( m_regionCombo, @@ -96,8 +109,8 @@ LocalePage::LocalePage( QWidget* parent ) m_zoneCombo->clear(); - QList< LocaleGlobal::Location > zones = regions.value( m_regionCombo->currentData().toString() ); - foreach ( const LocaleGlobal::Location& zone, zones ) + const QList< LocaleGlobal::Location > zones = regions.value( m_regionCombo->currentData().toString() ); + for ( const LocaleGlobal::Location& zone : zones ) { m_zoneCombo->addItem( LocaleGlobal::Location::pretty( zone.zone ), zone.zone ); } @@ -113,6 +126,7 @@ LocalePage::LocalePage( QWidget* parent ) static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), [this]( int currentIndex ) { + Q_UNUSED( currentIndex ) if ( !m_blockTzWidgetSet ) m_tzWidget->setCurrentLocation( m_regionCombo->currentData().toString(), m_zoneCombo->currentData().toString() ); @@ -145,31 +159,66 @@ LocalePage::LocalePage( QWidget* parent ) } ); connect( m_localeChangeButton, &QPushButton::clicked, - [this]() + [this] { - LCLocaleDialog* dlg = new LCLocaleDialog( lcLocale(), - m_localeGenLines, - this ); + LCLocaleDialog* dlg = + new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? + guessLocaleConfiguration().lang : + m_selectedLocaleConfiguration.lang, + m_localeGenLines, + this ); dlg->exec(); if ( dlg->result() == QDialog::Accepted && !dlg->selectedLCLocale().isEmpty() ) { - m_selectedLocale = dlg->selectedLCLocale(); - m_localeLabel->setText( tr( "The system locale is set to %1." ) - .arg( prettyLCLocale( m_selectedLocale ) ) ); + m_selectedLocaleConfiguration.lang = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.explicit_lang = true; + this->updateLocaleLabels(); } dlg->deleteLater(); } ); + connect( m_formatsChangeButton, &QPushButton::clicked, + [this] + { + LCLocaleDialog* dlg = + new LCLocaleDialog( m_selectedLocaleConfiguration.isEmpty() ? + guessLocaleConfiguration().lc_numeric : + m_selectedLocaleConfiguration.lc_numeric, + m_localeGenLines, + this ); + dlg->exec(); + if ( dlg->result() == QDialog::Accepted && + !dlg->selectedLCLocale().isEmpty() ) + { + // TODO: improve the granularity of this setting. + m_selectedLocaleConfiguration.lc_numeric = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_time = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_monetary = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_paper = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_name = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_address = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_telephone = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_measurement = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.lc_identification = dlg->selectedLCLocale(); + m_selectedLocaleConfiguration.explicit_lc = true; + + this->updateLocaleLabels(); + } + + dlg->deleteLater(); + + } ); + CALAMARES_RETRANSLATE( m_regionLabel->setText( tr( "Region:" ) ); m_zoneLabel->setText( tr( "Zone:" ) ); - m_localeLabel->setText( tr( "The system locale is set to %1." ) - .arg( prettyLCLocale( lcLocale() ) ) ); + updateLocaleLabels(); m_localeChangeButton->setText( tr( "&Change..." ) ); + m_formatsChangeButton->setText( tr( "&Change..." ) ); ) } @@ -178,6 +227,18 @@ LocalePage::~LocalePage() {} +void +LocalePage::updateLocaleLabels() +{ + LocaleConfiguration lc = m_selectedLocaleConfiguration.isEmpty() ? + guessLocaleConfiguration() : + m_selectedLocaleConfiguration; + auto labels = prettyLocaleStatus( lc ); + m_localeLabel->setText( labels.first ); + m_formatsLabel->setText( labels.second ); +} + + void LocalePage::init( const QString& initialRegion, const QString& initialZone, @@ -206,7 +267,7 @@ LocalePage::init( const QString& initialRegion, auto containsLocation = []( const QList< LocaleGlobal::Location >& locations, const QString& zone ) -> bool { - foreach ( const LocaleGlobal::Location& location, locations ) + for ( const LocaleGlobal::Location& location : locations ) { if ( location.zone == zone ) return true; @@ -221,43 +282,114 @@ LocalePage::init( const QString& initialRegion, } else { - m_tzWidget->setCurrentLocation( "Europe", "Berlin" ); + m_tzWidget->setCurrentLocation( "America", "New_York" ); } emit m_tzWidget->locationChanged( m_tzWidget->getCurrentLocation() ); - // Fill in meaningful locale/charset lines from locale.gen + // Some distros come with a meaningfully commented and easy to parse locale.gen, + // and others ship a separate file /usr/share/i18n/SUPPORTED with a clean list of + // supported locales. We first try that one, and if it doesn't exist, we fall back + // to parsing the lines from locale.gen m_localeGenLines.clear(); - QFile localeGen( localeGenPath ); + QFile supported( "/usr/share/i18n/SUPPORTED" ); QByteArray ba; - if ( localeGen.open( QIODevice::ReadOnly | QIODevice::Text ) ) + + if ( supported.exists() && + supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - ba = localeGen.readAll(); - localeGen.close(); + ba = supported.readAll(); + supported.close(); + + const auto lines = ba.split( '\n' ); + for ( const QByteArray &line : lines ) + { + m_localeGenLines.append( QString::fromLatin1( line.simplified() ) ); + } } else { - cDebug() << "Cannot open file" << localeGenPath - << ". Assuming the supported languages are already built into " - "the locale archive."; - QProcess localeA; - localeA.start( "locale", QStringList() << "-a" ); - localeA.waitForFinished(); - ba = localeA.readAllStandardOutput(); + QFile localeGen( localeGenPath ); + if ( localeGen.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + ba = localeGen.readAll(); + localeGen.close(); + } + else + { + cDebug() << "Cannot open file" << localeGenPath + << ". Assuming the supported languages are already built into " + "the locale archive."; + QProcess localeA; + localeA.start( "locale", QStringList() << "-a" ); + localeA.waitForFinished(); + ba = localeA.readAllStandardOutput(); + } + const auto lines = ba.split( '\n' ); + for ( const QByteArray &line : lines ) + { + if ( line.startsWith( "## " ) || + line.startsWith( "# " ) || + line.simplified() == "#" ) + continue; + + QString lineString = QString::fromLatin1( line.simplified() ); + if ( lineString.startsWith( "#" ) ) + lineString.remove( '#' ); + lineString = lineString.simplified(); + + if ( lineString.isEmpty() ) + continue; + + m_localeGenLines.append( lineString ); + } } - foreach ( QByteArray line, ba.split( '\n' ) ) + + if ( m_localeGenLines.isEmpty() ) { - if ( line.startsWith( "# " ) || line.simplified() == "#" ) - continue; - - QString lineString = QString::fromLatin1( line.simplified() ); - - if ( lineString.startsWith( "#" ) ) - lineString.remove( '#' ); - - m_localeGenLines.append( lineString ); + cDebug() << "WARNING: cannot acquire a list of available locales." + << "The locale and localecfg modules will be broken as long as this " + "system does not provide" + << "\n\t " + << "* a well-formed" + << supported.fileName() + << "\n\tOR" + << "* a well-formed" + << (localeGenPath.isEmpty() ? QLatin1Literal("/etc/locale.gen") : localeGenPath) + << "\n\tOR" + << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; + return; // something went wrong and there's nothing we can do about it. } + + // Assuming we have a list of supported locales, we usually only want UTF-8 ones + // because it's not 1995. + for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ) + { + if ( !it->contains( "UTF-8", Qt::CaseInsensitive ) && + !it->contains( "utf8", Qt::CaseInsensitive ) ) + it = m_localeGenLines.erase( it ); + else + ++it; + } + + // We strip " UTF-8" from "en_US.UTF-8 UTF-8" because it's redundant redundant. + for ( auto it = m_localeGenLines.begin(); it != m_localeGenLines.end(); ++it ) + { + if ( it->endsWith( " UTF-8" ) ) + it->chop( 6 ); + *it = it->simplified(); + } + updateGlobalStorage(); } +std::pair< QString, QString > LocalePage::prettyLocaleStatus( const LocaleConfiguration& lc ) const +{ + return std::make_pair< QString, QString >( + tr( "The system language will be set to %1." ) + .arg( prettyLCLocale( lc.lang ) ), + tr( "The numbers and dates locale will be set to %1." ) + .arg( prettyLCLocale( lc.lc_numeric ) ) + ); +} QString LocalePage::prettyStatus() const @@ -267,6 +399,13 @@ LocalePage::prettyStatus() const .arg( m_regionCombo->currentText() ) .arg( m_zoneCombo->currentText() ); + LocaleConfiguration lc = m_selectedLocaleConfiguration.isEmpty() ? + guessLocaleConfiguration() : + m_selectedLocaleConfiguration; + auto labels = prettyLocaleStatus(lc); + status += labels.first + "
"; + status += labels.second + "
"; + return status; } @@ -284,10 +423,12 @@ LocalePage::createJobs() } -QString -LocalePage::lcLocale() +QMap< QString, QString > +LocalePage::localesMap() { - return m_selectedLocale.isEmpty() ? guessLCLocale() : m_selectedLocale; + return m_selectedLocaleConfiguration.isEmpty() ? + guessLocaleConfiguration().toMap() : + m_selectedLocaleConfiguration.toMap(); } @@ -295,79 +436,49 @@ void LocalePage::onActivate() { m_regionCombo->setFocus(); + if ( m_selectedLocaleConfiguration.isEmpty() || + !m_selectedLocaleConfiguration.explicit_lang ) + { + auto newLocale = guessLocaleConfiguration(); + m_selectedLocaleConfiguration.lang = newLocale.lang; + updateLocaleLabels(); + } } -QString -LocalePage::guessLCLocale() +LocaleConfiguration +LocalePage::guessLocaleConfiguration() const { - QLocale myLocale = QLocale(); + QLocale myLocale; // User-selected language + // If we cannot say anything about available locales if ( m_localeGenLines.isEmpty() ) - return "en_US.UTF-8 UTF-8"; - - QString myLanguage = myLocale.name().split( '_' ).first(); - QStringList linesForLanguage; - foreach ( QString line, m_localeGenLines ) { - if ( line.startsWith( myLanguage ) ) - linesForLanguage.append( line ); + cDebug() << "WARNING: guessLocaleConfiguration can't guess from an empty list."; + return LocaleConfiguration::createDefault(); } - if ( linesForLanguage.length() == 0 ) - return "en_US.UTF-8 UTF-8"; - else if ( linesForLanguage.length() == 1 ) - return linesForLanguage.first(); - else - { - QStringList linesForLanguageUtf; - foreach ( QString line, linesForLanguage ) - { - if ( line.contains( "UTF-8" ) ) - linesForLanguageUtf.append( line ); - } + QString myLanguageLocale = myLocale.name(); + if ( myLanguageLocale.isEmpty() ) + return LocaleConfiguration::createDefault(); - if ( linesForLanguageUtf.length() == 1 ) - return linesForLanguageUtf.first(); - } - - // FIXME: use reverse geocoding to guess the country - QString prefix = myLocale.name(); - QStringList linesForLanguageAndCountry; - foreach ( QString line, linesForLanguage ) - { - if ( line.startsWith( prefix ) ) - linesForLanguageAndCountry.append( line ); - } - - if ( linesForLanguageAndCountry.length() == 0 ) - return "en_US.UTF-8 UTF-8"; - else if ( linesForLanguageAndCountry.length() == 1 ) - return linesForLanguageAndCountry.first(); - else - { - QStringList linesForLanguageAndCountryUtf; - foreach ( QString line, linesForLanguageAndCountry ) - { - if ( line.contains( "UTF-8" ) ) - linesForLanguageAndCountryUtf.append( line ); - } - - if ( linesForLanguageAndCountryUtf.length() == 1 ) - return linesForLanguageAndCountryUtf.first(); - } - - return "en_US.UTF-8 UTF-8"; + return LocaleConfiguration::fromLanguageAndLocation( myLanguageLocale, + m_localeGenLines, + m_tzWidget->getCurrentLocation().country ); } QString -LocalePage::prettyLCLocale( const QString& lcLocale ) +LocalePage::prettyLCLocale( const QString& lcLocale ) const { QString localeString = lcLocale; if ( localeString.endsWith( " UTF-8" ) ) localeString.remove( " UTF-8" ); - return localeString; + + QLocale locale( localeString ); + //: Language (Country) + return tr( "%1 (%2)" ).arg( QLocale::languageToString( locale.language() ) ) + .arg( QLocale::countryToString( locale.country() ) ); } void @@ -378,4 +489,39 @@ LocalePage::updateGlobalStorage() ->insert( "locationRegion", location.region ); Calamares::JobQueue::instance()->globalStorage() ->insert( "locationZone", location.zone ); + Calamares::JobQueue::instance()->globalStorage() + ->insert( "locale", m_selectedLocaleConfiguration.myLanguageLocaleBcp47); + + // If we're in chroot mode (normal install mode), then we immediately set the + // timezone on the live system. + if ( Calamares::Settings::instance()->doChroot() ) + { + QProcess ::execute( "timedatectl", // depends on systemd + { "set-timezone", + location.region + '/' + location.zone } ); + } + + // Preserve those settings that have been made explicit. + auto newLocale = guessLocaleConfiguration(); + if ( !m_selectedLocaleConfiguration.isEmpty() && + m_selectedLocaleConfiguration.explicit_lang ) + newLocale.lang = m_selectedLocaleConfiguration.lang; + if ( !m_selectedLocaleConfiguration.isEmpty() && + m_selectedLocaleConfiguration.explicit_lc ) + { + newLocale.lc_numeric = m_selectedLocaleConfiguration.lc_numeric; + newLocale.lc_time = m_selectedLocaleConfiguration.lc_time; + newLocale.lc_monetary = m_selectedLocaleConfiguration.lc_monetary; + newLocale.lc_paper = m_selectedLocaleConfiguration.lc_paper; + newLocale.lc_name = m_selectedLocaleConfiguration.lc_name; + newLocale.lc_address = m_selectedLocaleConfiguration.lc_address; + newLocale.lc_telephone = m_selectedLocaleConfiguration.lc_telephone; + newLocale.lc_measurement = m_selectedLocaleConfiguration.lc_measurement; + newLocale.lc_identification = m_selectedLocaleConfiguration.lc_identification; + } + newLocale.explicit_lang = m_selectedLocaleConfiguration.explicit_lang; + newLocale.explicit_lc = m_selectedLocaleConfiguration.explicit_lc; + + m_selectedLocaleConfiguration = newLocale; + updateLocaleLabels(); } diff --git a/src/modules/locale/LocalePage.h b/src/modules/locale/LocalePage.h index 4b2d5491d..27a7362e3 100644 --- a/src/modules/locale/LocalePage.h +++ b/src/modules/locale/LocalePage.h @@ -21,6 +21,8 @@ #include "Typedefs.h" +#include "LocaleConfiguration.h" + #include class QComboBox; @@ -43,14 +45,20 @@ public: QList< Calamares::job_ptr > createJobs(); - QString lcLocale(); + QMap< QString, QString > localesMap(); void onActivate(); private: - QString guessLCLocale(); - QString prettyLCLocale( const QString& lcLocale ); + LocaleConfiguration guessLocaleConfiguration() const; + QString prettyLCLocale( const QString& localesMap ) const; + + // For the given locale config, return two strings describing + // the settings for language and numbers. + std::pair< QString, QString > prettyLocaleStatus( const LocaleConfiguration& ) const; + void updateGlobalStorage(); + void updateLocaleLabels(); TimeZoneWidget* m_tzWidget; QComboBox* m_regionCombo; @@ -60,8 +68,10 @@ private: QLabel* m_zoneLabel; QLabel* m_localeLabel; QPushButton* m_localeChangeButton; + QLabel* m_formatsLabel; + QPushButton* m_formatsChangeButton; - QString m_selectedLocale; + LocaleConfiguration m_selectedLocaleConfiguration; QStringList m_localeGenLines; diff --git a/src/modules/locale/LocaleViewStep.cpp b/src/modules/locale/LocaleViewStep.cpp index 2458cc64d..4b4219751 100644 --- a/src/modules/locale/LocaleViewStep.cpp +++ b/src/modules/locale/LocaleViewStep.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,11 +26,16 @@ #include "utils/CalamaresUtilsGui.h" #include "utils/Logger.h" +#include "utils/YamlUtils.h" #include #include +#include +#include #include +#include + CALAMARES_PLUGIN_FACTORY_DEFINITION( LocaleViewStepFactory, registerPlugin(); ) @@ -44,25 +49,37 @@ LocaleViewStep::LocaleViewStep( QObject* parent ) m_widget->setLayout( mainLayout ); CalamaresUtils::unmarginLayout( mainLayout ); - WaitingWidget* waitingWidget = - new WaitingWidget( tr( "Loading location data..." ) ); - - mainLayout->addWidget( waitingWidget ); + m_waitingWidget = new WaitingWidget( tr( "Loading location data..." ) ); + mainLayout->addWidget( m_waitingWidget ); connect( &m_initWatcher, &QFutureWatcher< void >::finished, - [=] + this, [=] { - m_actualWidget->init( m_startingTimezone.first, - m_startingTimezone.second, - m_localeGenPath ); - m_widget->layout()->removeWidget( waitingWidget ); - waitingWidget->deleteLater(); - m_widget->layout()->addWidget( m_actualWidget ); - m_nextEnabled = true; - emit nextStatusChanged( m_nextEnabled ); + bool hasInternet = Calamares::JobQueue::instance()->globalStorage() + ->value( "hasInternet" ).toBool(); + if ( m_geoipUrl.isEmpty() || !hasInternet ) + setUpPage(); + else + fetchGeoIpTimezone(); }); - QFuture< void > initFuture = QtConcurrent::run( LocaleGlobal::init ); + QFuture< void > initFuture = QtConcurrent::run( [=] + { + LocaleGlobal::init(); + if ( m_geoipUrl.isEmpty() ) + return; + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + + // Max 10sec wait for RequirementsChecker to finish, assuming the welcome + // module is used. + // If welcome is not used, either "hasInternet" should be set by other means, + // or the GeoIP feature should be disabled. + for ( int i = 0; i < 10; ++i ) + if ( !gs->contains( "hasInternet" ) ) + QThread::sleep( 1 ); + } ); + m_initWatcher.setFuture( initFuture ); emit nextStatusChanged( m_nextEnabled ); @@ -76,6 +93,76 @@ LocaleViewStep::~LocaleViewStep() } +void +LocaleViewStep::setUpPage() +{ + m_actualWidget->init( m_startingTimezone.first, + m_startingTimezone.second, + m_localeGenPath ); + m_widget->layout()->removeWidget( m_waitingWidget ); + m_waitingWidget->deleteLater(); + m_widget->layout()->addWidget( m_actualWidget ); + m_nextEnabled = true; + emit nextStatusChanged( m_nextEnabled ); +} + + +void +LocaleViewStep::fetchGeoIpTimezone() +{ + QNetworkAccessManager *manager = new QNetworkAccessManager( this ); + connect( manager, &QNetworkAccessManager::finished, + [=]( QNetworkReply* reply ) + { + if ( reply->error() == QNetworkReply::NoError ) + { + QByteArray data = reply->readAll(); + + try + { + YAML::Node doc = YAML::Load( reply->readAll() ); + + QVariant var = CalamaresUtils::yamlToVariant( doc ); + if ( !var.isNull() && + var.isValid() && + var.type() == QVariant::Map ) + { + QVariantMap map = var.toMap(); + if ( map.contains( "time_zone" ) && + !map.value( "time_zone" ).toString().isEmpty() ) + { + QString timezoneString = map.value( "time_zone" ).toString(); + QStringList tzParts = timezoneString.split( '/', QString::SkipEmptyParts ); + if ( tzParts.size() >= 2 ) + { + cDebug() << "GeoIP reporting" << timezoneString; + QString region = tzParts.takeFirst(); + QString zone = tzParts.join( '/' ); + m_startingTimezone = qMakePair( region, zone ); + } + } + } + } + catch ( YAML::Exception& e ) + { + CalamaresUtils::explainYamlException( e, data, "GeoIP data"); + } + } + + reply->deleteLater(); + manager->deleteLater(); + setUpPage(); + } ); + + QNetworkRequest request; + QString requestUrl = QString( "%1/json" ) + .arg( QUrl::fromUserInput( m_geoipUrl ).toString() ); + request.setUrl( QUrl( requestUrl ) ); + request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); + manager->get( request ); +} + + QString LocaleViewStep::prettyName() const { @@ -159,8 +246,13 @@ LocaleViewStep::onLeave() m_prettyStatus = m_actualWidget->prettyStatus(); - Calamares::JobQueue::instance()->globalStorage()->insert( "lcLocale", - m_actualWidget->lcLocale() ); + auto map = m_actualWidget->localesMap(); + QVariantMap vm; + for ( auto it = map.constBegin(); it != map.constEnd(); ++it ) + vm.insert( it.key(), it.value() ); + + Calamares::JobQueue::instance()->globalStorage() + ->insert( "localeConf", vm ); } @@ -179,8 +271,8 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) } else { - m_startingTimezone = qMakePair( QStringLiteral( "Europe" ), - QStringLiteral( "Berlin" ) ); + m_startingTimezone = qMakePair( QStringLiteral( "America" ), + QStringLiteral( "New_York" ) ); } if ( configurationMap.contains( "localeGenPath" ) && @@ -193,4 +285,12 @@ LocaleViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_localeGenPath = QStringLiteral( "/etc/locale.gen" ); } + + // Optional + if ( configurationMap.contains( "geoipUrl" ) && + configurationMap.value( "geoipUrl" ).type() == QVariant::String && + !configurationMap.value( "geoipUrl" ).toString().isEmpty() ) + { + m_geoipUrl = configurationMap.value( "geoipUrl" ).toString(); + } } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index 1ab9c451e..402fb7ce9 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,6 +29,7 @@ #include class LocalePage; +class WaitingWidget; class PLUGINDLLEXPORT LocaleViewStep : public Calamares::ViewStep { @@ -36,7 +37,7 @@ class PLUGINDLLEXPORT LocaleViewStep : public Calamares::ViewStep public: explicit LocaleViewStep( QObject* parent = nullptr ); - virtual ~LocaleViewStep(); + virtual ~LocaleViewStep() override; QString prettyName() const override; QString prettyStatus() const override; @@ -59,9 +60,14 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; +private slots: + void setUpPage(); + private: + void fetchGeoIpTimezone(); QWidget* m_widget; QFutureWatcher< void > m_initWatcher; + WaitingWidget* m_waitingWidget; LocalePage* m_actualWidget; bool m_nextEnabled; @@ -69,6 +75,7 @@ private: QPair< QString, QString > m_startingTimezone; QString m_localeGenPath; + QString m_geoipUrl; QList< Calamares::job_ptr > m_jobs; }; diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index c2fba9151..419690780 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -88,16 +88,17 @@ SetTimezoneJob::exec() .arg( zoneinfoPath ) .arg( "/etc/localtime" ) ); - QFile timezoneFile( "/etc/timezone" ); - if ( timezoneFile.exists() ) - { - if (!timezoneFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) - return Calamares::JobResult::error( tr( "Cannot set timezone,"), - tr( "Cannot open /etc/timezone for writing")); + QFile timezoneFile( gs->value( "rootMountPoint" ).toString() + "/etc/timezone" ); + + if ( !timezoneFile.open( QIODevice::WriteOnly | + QIODevice::Text | + QIODevice::Truncate ) ) + return Calamares::JobResult::error( tr( "Cannot set timezone,"), + tr( "Cannot open /etc/timezone for writing")); + + QTextStream out(&timezoneFile); + out << m_region << '/' << m_zone << "\n"; + timezoneFile.close(); - QTextStream out(&timezoneFile); - out << m_region << '/' << m_zone << "\n"; - timezoneFile.close(); - } return Calamares::JobResult::ok(); } diff --git a/src/modules/locale/images/timezone_0.0.png b/src/modules/locale/images/timezone_0.0.png index 987f6caa3..6178a0ce1 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/locale.conf b/src/modules/locale/locale.conf index 795ceb27b..824c8abeb 100644 --- a/src/modules/locale/locale.conf +++ b/src/modules/locale/locale.conf @@ -1,3 +1,7 @@ --- -region: "Europe" -zone: "London" +region: "America" +zone: "New_York" + +# GeoIP settings. Leave commented out to disable GeoIP. +#localeGenPath: "/etc/locale.gen" +#geoipUrl: "freegeoip.net" diff --git a/src/modules/locale/module.desc b/src/modules/locale/module.desc deleted file mode 100644 index d69fb5a1e..000000000 --- a/src/modules/locale/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for locale viewmodule -# Syntax is YAML 1.2 ---- -type: "view" -name: "locale" -interface: "qtplugin" -load: "libcalamares_viewmodule_locale.so" diff --git a/src/modules/locale/timezonewidget/localeglobal.cpp b/src/modules/locale/timezonewidget/localeglobal.cpp index b7aa603e1..7c61ecc99 100644 --- a/src/modules/locale/timezonewidget/localeglobal.cpp +++ b/src/modules/locale/timezonewidget/localeglobal.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Originally from the Manjaro Installation Framework * by Roland Singer @@ -54,7 +54,8 @@ LocaleGlobal::Location::comment() const } -void LocaleGlobal::init() { +void +LocaleGlobal::init() { // TODO: Error handling initLocales(); initLocations(); @@ -62,13 +63,15 @@ void LocaleGlobal::init() { -QHash > > LocaleGlobal::getLocales() { +QHash< QString, QHash< QString, QList< LocaleGlobal::Locale > > > +LocaleGlobal::getLocales() { return locales; } -QHash > LocaleGlobal::getLocations() { +QHash< QString, QList< LocaleGlobal::Location > > +LocaleGlobal::getLocations() { return locations; } @@ -78,7 +81,8 @@ QHash > LocaleGlobal::getLocations() { //### -void LocaleGlobal::initLocales() { +void +LocaleGlobal::initLocales() { locales.clear(); QStringList files = QDir(LOCALESDIR).entryList(QDir::Files, QDir::Name); @@ -125,7 +129,8 @@ void LocaleGlobal::initLocales() { -void LocaleGlobal::initLocations() { +void +LocaleGlobal::initLocations() { locations.clear(); QFile file(TZ_DATA_FILE); @@ -149,10 +154,15 @@ void LocaleGlobal::initLocations() { if (timezone.size() < 2) continue; + QString countryCode = list.at(0).trimmed(); + if (countryCode.size() != 2) + continue; + location.region = timezone.takeFirst(); location.zone = timezone.join( '/' ); location.latitude = getRightGeoLocation(list.at(1).mid(0, cooSplitPos)); location.longitude = getRightGeoLocation(list.at(1).mid(cooSplitPos)); + location.country = countryCode; locations[location.region].append(location); } @@ -160,7 +170,8 @@ void LocaleGlobal::initLocations() { -double LocaleGlobal::getRightGeoLocation(QString str) { +double +LocaleGlobal::getRightGeoLocation(QString str) { double sign = 1, num = 0.00; // Determind sign diff --git a/src/modules/locale/timezonewidget/localeglobal.h b/src/modules/locale/timezonewidget/localeglobal.h index 5bacffc47..665ddefe8 100644 --- a/src/modules/locale/timezonewidget/localeglobal.h +++ b/src/modules/locale/timezonewidget/localeglobal.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Originally from the Manjaro Installation Framework * by Roland Singer @@ -43,7 +43,7 @@ public: }; struct Location { - QString region, zone; + QString region, zone, country; double latitude, longitude; static QString pretty( const QString& s ); QString comment() const; diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index b8713e107..332ca8060 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -107,7 +107,7 @@ QPoint TimeZoneWidget::getLocationPosition(double longitude, double latitude) { if (y >= height) y -= height; - return QPoint((int)x, (int)y); + return QPoint( int(x), int(y) ); } diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 27256fabe..623ddf4b7 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -48,7 +48,7 @@ class TimeZoneWidget : public QWidget { Q_OBJECT public: - explicit TimeZoneWidget(QWidget* parent = 0); + explicit TimeZoneWidget(QWidget* parent = nullptr); LocaleGlobal::Location getCurrentLocation() { return currentLocation; } void setCurrentLocation(QString region, QString zone); diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index eaa5e0344..b850a7392 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -5,6 +5,7 @@ # # Copyright 2014, Anke Boersma # Copyright 2015, Philip Müller +# Copyright 2016, Teo Mrnjavac # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,11 +28,22 @@ import libcalamares def run(): """ Create locale """ - us = '#en_US' - locale = libcalamares.globalstorage.value("lcLocale") + en_us_locale = 'en_US.UTF-8' + locale_conf = libcalamares.globalstorage.value("localeConf") - if not locale: - locale = 'en_US.UTF-8 UTF-8' + if not locale_conf: + locale_conf = { + 'LANG': 'en_US.UTF-8', + 'LC_NUMERIC': 'en_US.UTF-8', + 'LC_TIME': 'en_US.UTF-8', + 'LC_MONETARY': 'en_US.UTF-8', + 'LC_PAPER': 'en_US.UTF-8', + 'LC_NAME': 'en_US.UTF-8', + 'LC_ADDRESS': 'en_US.UTF-8', + 'LC_TELEPHONE': 'en_US.UTF-8', + 'LC_MEASUREMENT': 'en_US.UTF-8', + 'LC_IDENTIFICATION': 'en_US.UTF-8' + } install_path = libcalamares.globalstorage.value("rootMountPoint") @@ -47,26 +59,37 @@ def run(): with open("{!s}/etc/locale.gen".format(install_path), "r") as gen: text = gen.readlines() - # always enable en_US + # we want unique values, so locale_values should have 1 or 2 items + locale_values = set(locale_conf.values()) + with open("{!s}/etc/locale.gen".format(install_path), "w") as gen: for line in text: - if us in line and line[0] == "#": + # always enable en_US + if en_us_locale in line and line[0] == "#": # uncomment line - line = line[1:] + line = line[1:].lstrip() - if locale in line and line[0] == "#": - # uncomment line - line = line[1:] + for locale_value in locale_values: + if locale_value in line and line[0] == "#": + # uncomment line + line = line[1:].lstrip() gen.write(line) libcalamares.utils.target_env_call(['locale-gen']) print('locale.gen done') + # write /etc/locale.conf locale_conf_path = os.path.join(install_path, "etc/locale.conf") + with open(locale_conf_path, "w") as lcf: + for k, v in locale_conf.items(): + lcf.write("{!s}={!s}\n".format(k, v)) - with open(locale_conf_path, "w") as locale_conf: - locale_split = locale.split(' ')[0] - locale_conf.write("LANG={!s}\n".format(locale_split)) + # write /etc/default/locale if /etc/default exists and is a dir + etc_default_path = os.path.join(install_path, "etc/default") + if os.path.isdir(etc_default_path): + with open(os.path.join(etc_default_path, "locale"), "w") as edl: + for k, v in locale_conf.items(): + edl.write("{!s}={!s}\n".format(k, v)) return None diff --git a/src/modules/luksbootkeyfile/main.py b/src/modules/luksbootkeyfile/main.py new file mode 100644 index 000000000..af8f444b4 --- /dev/null +++ b/src/modules/luksbootkeyfile/main.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2016, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# Copyright 2017, Adriaan de Groot +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares + +from libcalamares.utils import check_target_env_call + + +def run(): + """ + This module sets up a file crypto_keyfile.bin on the rootfs, assuming the + rootfs is LUKS encrypted and a passphrase is provided. This file is then + included in the initramfs and used for unlocking the rootfs from a + previously unlocked GRUB2 session. + :return: + """ + + partitions = libcalamares.globalstorage.value("partitions") + + luks_root_device = "" + luks_root_passphrase = "" + + additional_luks_devices = [] + + for partition in partitions: + if partition["mountPoint"] == "/" and "luksMapperName" in partition: + luks_root_device = partition["device"] + luks_root_passphrase = partition["luksPassphrase"] + elif "luksMapperName" in partition and\ + (partition["mountPoint"] or partition["fs"] == "linuxswap"): + additional_luks_devices.append((partition["device"], + partition["luksPassphrase"])) + + if not luks_root_device: + return None + + if not luks_root_passphrase: + return ( + "Encrypted rootfs setup error", + "Rootfs partition {!s} is LUKS but no passphrase found." + .format(luks_root_device)) + + # Generate random keyfile + check_target_env_call(["dd", + "bs=512", + "count=4", + "if=/dev/urandom", + "of=/crypto_keyfile.bin"]) + + check_target_env_call(["cryptsetup", + "luksAddKey", + luks_root_device, + "/crypto_keyfile.bin"], + luks_root_passphrase, + 15) # timeout 15s + + for additional_device in additional_luks_devices: + check_target_env_call(["cryptsetup", + "luksAddKey", + additional_device[0], + "/crypto_keyfile.bin"], + additional_device[1], + 15) # timeout 15s + + check_target_env_call(["chmod", + "g-rwx,o-rwx", + "/crypto_keyfile.bin"]) + + return None diff --git a/src/modules/luksbootkeyfile/module.desc b/src/modules/luksbootkeyfile/module.desc new file mode 100644 index 000000000..11a0173d5 --- /dev/null +++ b/src/modules/luksbootkeyfile/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "luksbootkeyfile" +interface: "python" +script: "main.py" diff --git a/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf new file mode 100644 index 000000000..886867f8d --- /dev/null +++ b/src/modules/luksopenswaphookcfg/luksopenswaphookcfg.conf @@ -0,0 +1,2 @@ +--- +configFilePath: /etc/openswap.conf diff --git a/src/modules/luksopenswaphookcfg/main.py b/src/modules/luksopenswaphookcfg/main.py new file mode 100644 index 000000000..a2bd9c5b1 --- /dev/null +++ b/src/modules/luksopenswaphookcfg/main.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2016, Teo Mrnjavac +# Copyright 2017, Alf Gaida +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares +import os.path + + +def write_openswap_conf(partitions, root_mount_point, openswap_conf_path): + swap_outer_uuid = "" + swap_mapper_name = "" + mountable_keyfile_device = "" + + for partition in partitions: + if partition["fs"] == "linuxswap" and "luksMapperName" in partition: + swap_outer_uuid = partition["luksUuid"] + swap_mapper_name = partition["luksMapperName"] + + elif partition["mountPoint"] == "/" and "luksMapperName" in partition: + mountable_keyfile_device = ( + "/dev/mapper/{!s}".format(partition["luksMapperName"]) + ) + + if not mountable_keyfile_device or not swap_outer_uuid: + return None + + swap_device_path = "/dev/disk/by-uuid/{!s}".format(swap_outer_uuid) + + lines = [] + with open(os.path.join(root_mount_point, + openswap_conf_path), 'r') as openswap_file: + lines = [x.strip() for x in openswap_file.readlines()] + + for i in range(len(lines)): + if lines[i].startswith("swap_device"): + lines[i] = "swap_device={!s}".format(swap_device_path) + + elif lines[i].startswith("crypt_swap_name"): + lines[i] = "crypt_swap_name={!s}".format(swap_mapper_name) + + elif lines[i].startswith("keyfile_device"): + lines[i] = "keyfile_device={!s}".format(mountable_keyfile_device) + + elif lines[i].startswith("keyfile_filename"): + lines[i] = "keyfile_filename=crypto_keyfile.bin" + + with open(os.path.join(root_mount_point, + openswap_conf_path), 'w') as openswap_file: + openswap_file.write("\n".join(lines) + "\n") + + return None + + +def run(): + """ + This module sets up the openswap hook for a resumable encrypted swap. + :return: + """ + + root_mount_point = libcalamares.globalstorage.value("rootMountPoint") + openswap_conf_path = libcalamares.job.configuration["configFilePath"] + partitions = libcalamares.globalstorage.value("partitions") + + openswap_conf_path = openswap_conf_path.lstrip('/') + + return write_openswap_conf( + partitions, root_mount_point, openswap_conf_path + ) diff --git a/src/modules/luksopenswaphookcfg/module.desc b/src/modules/luksopenswaphookcfg/module.desc new file mode 100644 index 000000000..53f8b7c39 --- /dev/null +++ b/src/modules/luksopenswaphookcfg/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "luksopenswaphookcfg" +interface: "python" +script: "main.py" diff --git a/src/modules/machineid/main.py b/src/modules/machineid/main.py index 36b4833fc..649570958 100644 --- a/src/modules/machineid/main.py +++ b/src/modules/machineid/main.py @@ -4,6 +4,8 @@ # === This file is part of Calamares - === # # Copyright 2014, Kevin Kofler +# Copyright 2016, Philip Müller +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,11 +22,22 @@ import libcalamares import os -from libcalamares.utils import check_target_env_call +from libcalamares.utils import check_target_env_call, debug + +import gettext +_ = gettext.translation("calamares-python", + localedir=libcalamares.utils.gettext_path(), + languages=libcalamares.utils.gettext_languages(), + fallback=True).gettext + + +def pretty_name(): + return _("Generate machine-id.") def run(): - """ Generate machine-id using dbus and systemd. + """ + Generate machine-id using dbus and systemd. :return: """ @@ -32,22 +45,21 @@ def run(): enable_systemd = libcalamares.job.configuration["systemd"] enable_dbus = libcalamares.job.configuration["dbus"] enable_symlink = libcalamares.job.configuration["symlink"] - target_systemd_machineid_file = "{}/etc/machine-id".format(root_mount_point) + target_systemd_machineid_file = root_mount_point + "/etc/machine-id" + target_dbus_machineid_file = root_mount_point + "/var/lib/dbus/machine-id" + + if os.path.exists(target_dbus_machineid_file): + os.remove(target_dbus_machineid_file) if enable_systemd: if os.path.exists(target_systemd_machineid_file): os.remove(target_systemd_machineid_file) - check_target_env_call("systemd-machine-id-setup") if enable_dbus: - target_dbus_machineid_file = "{}/var/lib/dbus/machine-id".format(root_mount_point) - - if os.path.exists(target_dbus_machineid_file): - os.remove(target_dbus_machineid_file) - if enable_symlink and os.path.exists(target_systemd_machineid_file): - check_target_env_call(["ln", "-s", "/etc/machine-id", "/var/lib/dbus/machine-id"]) + check_target_env_call(["ln", "-s", "/etc/machine-id", + "/var/lib/dbus/machine-id"]) else: check_target_env_call(["dbus-uuidgen", "--ensure"]) diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index f5b0e09e9..c32c5bfdd 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -4,6 +4,7 @@ # === This file is part of Calamares - === # # Copyright 2014, Aurélien Gâteau +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,36 +20,105 @@ # along with Calamares. If not, see . import tempfile +import subprocess import libcalamares def mount_partitions(root_mount_point, partitions): - """ Pass back mount point and filesystem for each partition. + """ + Pass back mount point and filesystem for each partition. :param root_mount_point: :param partitions: """ for partition in partitions: - if not partition["mountPoint"]: + if "mountPoint" not in partition or not partition["mountPoint"]: continue # Create mount point with `+` rather than `os.path.join()` because # `partition["mountPoint"]` starts with a '/'. mount_point = root_mount_point + partition["mountPoint"] - fstype = partition.get("fs", "") + fstype = partition.get("fs", "").lower() if fstype == "fat16" or fstype == "fat32": fstype = "vfat" - libcalamares.utils.mount(partition["device"], - mount_point, - fstype, - partition.get("options", ""), - ) + if "luksMapperName" in partition: + libcalamares.utils.debug( + "about to mount {!s}".format(partition["luksMapperName"])) + libcalamares.utils.mount( + "/dev/mapper/{!s}".format(partition["luksMapperName"]), + mount_point, + fstype, + partition.get("options", ""), + ) + + else: + libcalamares.utils.mount(partition["device"], + mount_point, + fstype, + partition.get("options", ""), + ) + + # If the root partition is btrfs, we create a subvolume "@" + # for the root mount point. + # If a separate /home partition isn't defined, we also create + # a subvolume "@home". + # Finally we remount all of the above on the correct paths. + if fstype == "btrfs" and partition["mountPoint"] == '/': + has_home_mount_point = False + for p in partitions: + if "mountPoint" not in p or not p["mountPoint"]: + continue + if p["mountPoint"] == "/home": + has_home_mount_point = True + break + + subprocess.check_call(['btrfs', 'subvolume', 'create', + root_mount_point + '/@']) + + if not has_home_mount_point: + subprocess.check_call(['btrfs', 'subvolume', 'create', + root_mount_point + '/@home']) + + subprocess.check_call(["umount", "-v", root_mount_point]) + + if "luksMapperName" in partition: + libcalamares.utils.mount( + "/dev/mapper/{!s}".format(partition["luksMapperName"]), + mount_point, + fstype, + ",".join( + ["subvol=@", partition.get("options", "")]), + ) + if not has_home_mount_point: + libcalamares.utils.mount( + "/dev/mapper/{!s}".format(partition["luksMapperName"]), + root_mount_point + "/home", + fstype, + ",".join( + ["subvol=@home", partition.get("options", "")]), + ) + else: + libcalamares.utils.mount( + partition["device"], + mount_point, + fstype, + ",".join(["subvol=@", partition.get("options", "")]), + ) + if not has_home_mount_point: + libcalamares.utils.mount( + partition["device"], + root_mount_point + "/home", + fstype, + ",".join( + ["subvol=@home", partition.get("options", "")]), + ) def run(): - """ Define mountpoints. + """ + Define mountpoints. :return: """ @@ -70,7 +140,8 @@ def run(): # Remember the extra mounts for the unpackfs module if fw_type == 'efi': - libcalamares.globalstorage.insert("extraMounts", extra_mounts + extra_mounts_efi) + libcalamares.globalstorage.insert( + "extraMounts", extra_mounts + extra_mounts_efi) else: libcalamares.globalstorage.insert("extraMounts", extra_mounts) diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf index 68e214ed3..d8f8fb8cc 100644 --- a/src/modules/mount/mount.conf +++ b/src/modules/mount/mount.conf @@ -12,6 +12,9 @@ extraMounts: - device: tmpfs fs: tmpfs mountPoint: /run + - device: /run/udev + mountPoint: /run/udev + options: bind extraMountsEfi: - device: efivarfs diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt new file mode 100644 index 000000000..67f805734 --- /dev/null +++ b/src/modules/netinstall/CMakeLists.txt @@ -0,0 +1,20 @@ +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) + +calamares_add_plugin( netinstall + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + NetInstallViewStep.cpp + NetInstallPage.cpp + PackageTreeItem.cpp + PackageModel.cpp + UI + page_netinst.ui + RESOURCES + netinstall.qrc + LINK_PRIVATE_LIBRARIES + calamaresui + Qt5::Network + ${YAMLCPP_LIBRARY} + SHARED_LIB +) diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp new file mode 100644 index 000000000..7bfda320c --- /dev/null +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -0,0 +1,144 @@ +/* + * Copyright 2016, Luca Giambonini + * Copyright 2016, Lisa Vitolo + * Copyright 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "NetInstallPage.h" + +#include "PackageModel.h" + +#include "ui_page_netinst.h" +#include "GlobalStorage.h" +#include "JobQueue.h" +#include "utils/Logger.h" +#include "utils/Retranslator.h" +#include "utils/YamlUtils.h" + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +using CalamaresUtils::yamlToVariant; + +NetInstallPage::NetInstallPage( QWidget* parent ) + : QWidget( parent ) + , ui( new Ui::Page_NetInst ) + , m_networkManager( this ) + , m_groups( nullptr ) +{ + ui->setupUi( this ); +} + +bool +NetInstallPage::isReady() +{ + // nothing to wait for, the data are immediately ready + // if the user does not select any group nothing is installed + return true; +} + +bool +NetInstallPage::readGroups( const QByteArray& yamlData ) +{ + try + { + YAML::Node groups = YAML::Load( yamlData.constData() ); + + if ( !groups.IsSequence() ) + cDebug() << "WARNING: netinstall groups data does not form a sequence."; + Q_ASSERT( groups.IsSequence() ); + m_groups = new PackageModel( groups ); + CALAMARES_RETRANSLATE( + m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) ); + m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Description" ) ); ) + return true; + + } + catch ( YAML::Exception& e ) + { + CalamaresUtils::explainYamlException( e, yamlData, "netinstall groups data" ); + return false; + } +} + +void +NetInstallPage::dataIsHere( QNetworkReply* reply ) +{ + if ( reply->error() != QNetworkReply::NoError ) + { + cDebug() << reply->errorString(); + ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); + return; + } + + if ( !readGroups( reply->readAll() ) ) + { + cDebug() << "Netinstall groups data was received, but invalid."; + ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); + reply->deleteLater(); + return; + } + + ui->groupswidget->setModel( m_groups ); + ui->groupswidget->header()->setSectionResizeMode( 0, QHeaderView::ResizeToContents ); + ui->groupswidget->header()->setSectionResizeMode( 1, QHeaderView::Stretch ); + + reply->deleteLater(); + emit checkReady( isReady() ); +} + +QList NetInstallPage::selectedPackages() const +{ + return m_groups->getPackages(); +} + +void NetInstallPage::loadGroupList() +{ + QString confUrl( + Calamares::JobQueue::instance()->globalStorage()->value( + "groupsUrl" ).toString() ); + + QNetworkRequest request; + request.setUrl( QUrl( confUrl ) ); + // Follows all redirects except unsafe ones (https to http). + request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true ); + // Not everybody likes the default User Agent used by this class (looking at you, + // sourceforge.net), so let's set a more descriptive one. + request.setRawHeader( "User-Agent", "Mozilla/5.0 (compatible; Calamares)" ); + + connect( &m_networkManager, &QNetworkAccessManager::finished, + this, &NetInstallPage::dataIsHere ); + m_networkManager.get( request ); +} + +void NetInstallPage::onActivate() +{ + ui->groupswidget->setFocus(); +} diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h new file mode 100644 index 000000000..423c16b8e --- /dev/null +++ b/src/modules/netinstall/NetInstallPage.h @@ -0,0 +1,81 @@ +/* + * Copyright 2016, Luca Giambonini + * Copyright 2016, Lisa Vitolo + * Copyright 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef NETINSTALLPAGE_H +#define NETINSTALLPAGE_H + +#include "PackageModel.h" +#include "PackageTreeItem.h" +#include "Typedefs.h" + +#include +#include +#include + +// required forward declarations +class QByteArray; +class QNetworkReply; + +namespace Ui +{ +class Page_NetInst; +} + +class NetInstallPage : public QWidget +{ + Q_OBJECT +public: + NetInstallPage( QWidget* parent = nullptr ); + + void onActivate(); + + bool isReady(); + + // Retrieves the groups, with name, description and packages, from + // the remote URL configured in the settings. Assumes the URL is already + // in the global storage. This should be called before displaying the page. + void loadGroupList(); + + // Returns the list of packages belonging to groups that are + // selected in the view in this given moment. No data is cached here, so + // this function does not have constant time. + QList selectedPackages() const; + +public slots: + void dataIsHere( QNetworkReply* ); + +signals: + void checkReady( bool ); + +private: + // Takes the YAML data representing the groups and reads them into the + // m_groups and m_groupOrder internal structures. See the README.md + // of this module to know the format expected of the YAML files. + bool readGroups( const QByteArray& yamlData ); + + Ui::Page_NetInst* ui; + + // Handles connection with the remote URL storing the configuration. + QNetworkAccessManager m_networkManager; + + PackageModel* m_groups; +}; + +#endif // NETINSTALLPAGE_H diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp new file mode 100644 index 000000000..c714418df --- /dev/null +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -0,0 +1,170 @@ +/* + * Copyright 2016, Luca Giambonini + * Copyright 2016, Lisa Vitolo + * Copyright 2017, Kyle Robbertze + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "NetInstallViewStep.h" + +#include "JobQueue.h" +#include "GlobalStorage.h" +#include "utils/Logger.h" + +#include "NetInstallPage.h" + +CALAMARES_PLUGIN_FACTORY_DEFINITION( NetInstallViewStepFactory, registerPlugin(); ) + +NetInstallViewStep::NetInstallViewStep( QObject* parent ) + : Calamares::ViewStep( parent ) + , m_widget( new NetInstallPage() ) + , m_nextEnabled( true ) +{ + emit nextStatusChanged( true ); + connect( m_widget, &NetInstallPage::checkReady, + this, &NetInstallViewStep::nextStatusChanged ); +} + + +NetInstallViewStep::~NetInstallViewStep() +{ + if ( m_widget && m_widget->parent() == nullptr ) + m_widget->deleteLater(); +} + + +QString +NetInstallViewStep::prettyName() const +{ + return tr( "Package selection" ); +} + + +QString +NetInstallViewStep::prettyStatus() const +{ + return m_prettyStatus; +} + + +QWidget* +NetInstallViewStep::widget() +{ + return m_widget; +} + + +void +NetInstallViewStep::next() +{ + emit done(); +} + + +void +NetInstallViewStep::back() +{} + + +bool +NetInstallViewStep::isNextEnabled() const +{ + return m_nextEnabled; +} + + +bool +NetInstallViewStep::isBackEnabled() const +{ + return true; +} + + +bool +NetInstallViewStep::isAtBeginning() const +{ + return true; +} + + +bool +NetInstallViewStep::isAtEnd() const +{ + return true; +} + + +QList< Calamares::job_ptr > +NetInstallViewStep::jobs() const +{ + return m_jobs; +} + + +void +NetInstallViewStep::onActivate() +{ + m_widget->onActivate(); +} + + +void +NetInstallViewStep::onLeave() +{ + cDebug() << "Leaving netinstall, adding packages to be installed" + << "to global storage"; + + QMap packagesWithOperation; + QList packages = m_widget->selectedPackages(); + QVariantList installPackages; + QVariantList tryInstallPackages; + cDebug() << "Processing"; + + for ( auto package : packages ) + { + QMap details; + details.insert( "pre-script", package.preScript ); + details.insert( "package", package.packageName ); + details.insert( "post-script", package.postScript ); + if ( package.isCritical ) + installPackages.append( details ); + else + tryInstallPackages.append( details ); + } + + if ( !installPackages.empty() ) + packagesWithOperation.insert( "install", QVariant( installPackages ) ); + if ( !tryInstallPackages.empty() ) + packagesWithOperation.insert( "try_install", QVariant( tryInstallPackages ) ); + + if ( !packagesWithOperation.isEmpty() ) + { + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + gs->insert( "packageOperations", QVariant( packagesWithOperation ) ); + } +} + + +void +NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap ) +{ + if ( configurationMap.contains( "groupsUrl" ) && + configurationMap.value( "groupsUrl" ).type() == QVariant::String ) + { + Calamares::JobQueue::instance()->globalStorage()->insert( + "groupsUrl", configurationMap.value( "groupsUrl" ).toString() ); + m_widget->loadGroupList(); + } +} diff --git a/src/modules/netinstall/NetInstallViewStep.h b/src/modules/netinstall/NetInstallViewStep.h new file mode 100644 index 000000000..d9853f26f --- /dev/null +++ b/src/modules/netinstall/NetInstallViewStep.h @@ -0,0 +1,73 @@ +/* + * Copyright 2016, Luca Giambonini + * Copyright 2016, Lisa Vitolo + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef NETINSTALLVIEWSTEP_H +#define NETINSTALLVIEWSTEP_H + +#include +#include + +#include + +#include + +class NetInstallPage; + +class PLUGINDLLEXPORT NetInstallViewStep : public Calamares::ViewStep +{ + Q_OBJECT + +public: + explicit NetInstallViewStep( QObject* parent = nullptr ); + virtual ~NetInstallViewStep() override; + + QString prettyName() const override; + QString prettyStatus() const override; + + QWidget* widget() override; + + void next() override; + void back() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + QList< Calamares::job_ptr > jobs() const override; + + void onActivate() override; + + // Leaving the page; store all selected packages for later installation. + void onLeave() override; + + void setConfigurationMap( const QVariantMap& configurationMap ) override; + +private: + NetInstallPage* m_widget; + bool m_nextEnabled; + QString m_prettyStatus; + + QList< Calamares::job_ptr > m_jobs; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION( NetInstallViewStepFactory ) + +#endif // NETINSTALLVIEWSTEP_H diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp new file mode 100644 index 000000000..9fe8305a7 --- /dev/null +++ b/src/modules/netinstall/PackageModel.cpp @@ -0,0 +1,254 @@ +/* === This file is part of Calamares - === + * + * Copyright (c) 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PackageModel.h" + +#include "utils/YamlUtils.h" + +PackageModel::PackageModel( const YAML::Node& data, QObject* parent ) : + QAbstractItemModel( parent ), + m_columnHeadings() +{ + m_rootItem = new PackageTreeItem(); + setupModelData( data, m_rootItem ); +} + +PackageModel::~PackageModel() +{ + delete m_rootItem; +} + +QModelIndex +PackageModel::index( int row, int column, const QModelIndex& parent ) const +{ + if ( !hasIndex( row, column, parent ) ) + return QModelIndex(); + + PackageTreeItem* parentItem; + + if ( !parent.isValid() ) + parentItem = m_rootItem; + else + parentItem = static_cast( parent.internalPointer() ); + + PackageTreeItem* childItem = parentItem->child( row ); + if ( childItem ) + return createIndex( row, column, childItem ); + else + return QModelIndex(); +} + +QModelIndex +PackageModel::parent( const QModelIndex& index ) const +{ + if ( !index.isValid() ) + return QModelIndex(); + + PackageTreeItem* child = static_cast( index.internalPointer() ); + PackageTreeItem* parent = child->parentItem(); + + if ( parent == m_rootItem ) + return QModelIndex(); + return createIndex( parent->row(), 0, parent ); +} + +int +PackageModel::rowCount( const QModelIndex& parent ) const +{ + if ( parent.column() > 0 ) + return 0; + + PackageTreeItem* parentItem; + if ( !parent.isValid() ) + parentItem = m_rootItem; + else + parentItem = static_cast( parent.internalPointer() ); + + return parentItem->childCount(); +} + +int +PackageModel::columnCount( const QModelIndex& parent ) const +{ + if ( parent.isValid() ) + return static_cast( parent.internalPointer() )->columnCount(); + return m_rootItem->columnCount(); +} + +QVariant +PackageModel::data( const QModelIndex& index, int role ) const +{ + if ( !index.isValid() ) + return QVariant(); + + PackageTreeItem* item = static_cast( index.internalPointer() ); + if ( index.column() == 0 && role == Qt::CheckStateRole ) + return item->isSelected(); + + if ( item->isHidden() && role == Qt::DisplayRole ) // Hidden group + return QVariant(); + + if ( role == Qt::DisplayRole ) + return item->data( index.column() ); + return QVariant(); +} + +bool +PackageModel::setData( const QModelIndex& index, const QVariant& value, int role ) +{ + if ( role == Qt::CheckStateRole && index.isValid() ) + { + PackageTreeItem* item = static_cast( index.internalPointer() ); + item->setSelected( static_cast( value.toInt() ) ); + + emit dataChanged( this->index( 0, 0 ), index.sibling( index.column(), index.row() + 1 ), + QVector( Qt::CheckStateRole ) ); + } + return true; +} + +bool +PackageModel::setHeaderData( int section, Qt::Orientation orientation, + const QVariant& value, int role ) +{ + Q_UNUSED( role ); + + if ( orientation == Qt::Horizontal ) + { + if ( m_columnHeadings.value( section ) != QVariant() ) + m_columnHeadings.replace( section, value ); + else + m_columnHeadings.insert( section, value ); + emit headerDataChanged( orientation, section, section ); + } + return true; +} + +Qt::ItemFlags +PackageModel::flags( const QModelIndex& index ) const +{ + if ( !index.isValid() ) + return 0; + if ( index.column() == 0 ) + return Qt::ItemIsUserCheckable | QAbstractItemModel::flags( index ); + return QAbstractItemModel::flags( index ); +} + +QVariant +PackageModel::headerData( int section, Qt::Orientation orientation, int role ) const +{ + if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) + return m_columnHeadings.value( section ); + return QVariant(); +} + +QList +PackageModel::getPackages() const +{ + QList items = getItemPackages( m_rootItem ); + for ( auto package : m_hiddenItems ) + items.append( getItemPackages( package ) ); + QList packages; + for ( auto item : items ) + { + PackageTreeItem::ItemData itemData; + itemData.preScript = item->parentItem()->preScript(); // Only groups have hooks + itemData.packageName = item->packageName(); // this seg faults + itemData.postScript = item->parentItem()->postScript(); // Only groups have hooks + itemData.isCritical = item->parentItem()->isCritical(); // Only groups are critical + packages.append( itemData ); + } + return packages; +} + +QList +PackageModel::getItemPackages( PackageTreeItem* item ) const +{ + QList selectedPackages; + for ( int i = 0; i < item->childCount(); i++ ) + { + if ( item->child( i )->isSelected() == Qt::Unchecked ) + continue; + + if ( !item->child( i )->childCount() ) // package + selectedPackages.append( item->child( i ) ); + else + selectedPackages.append( getItemPackages( item->child( i ) ) ); + } + return selectedPackages; + +} + +void +PackageModel::setupModelData( const YAML::Node& data, PackageTreeItem* parent ) +{ + for ( YAML::const_iterator it = data.begin(); it != data.end(); ++it ) + { + const YAML::Node itemDefinition = *it; + + QString name( + tr( CalamaresUtils::yamlToVariant( itemDefinition["name"] ).toByteArray() ) ); + QString description( + tr( CalamaresUtils::yamlToVariant( itemDefinition["description"] ).toByteArray() ) ); + + PackageTreeItem::ItemData itemData; + itemData.name = name; + itemData.description = description; + + if ( itemDefinition["pre-install"] ) + itemData.preScript = + CalamaresUtils::yamlToVariant( itemDefinition["pre-install"] ).toString(); + if ( itemDefinition["post-install"] ) + itemData.postScript = + CalamaresUtils::yamlToVariant( itemDefinition["post-install"] ).toString(); + PackageTreeItem* item = new PackageTreeItem( itemData, parent ); + + if ( itemDefinition["selected"] ) + item->setSelected( + CalamaresUtils::yamlToVariant( itemDefinition["selected"] ).toBool() ? + Qt::Checked : Qt::Unchecked ); + else + item->setSelected( parent->isSelected() ); // Inherit from it's parent + + if ( itemDefinition["hidden"] ) + item->setHidden( + CalamaresUtils::yamlToVariant( itemDefinition["hidden"] ).toBool() ); + + if ( itemDefinition["critical"] ) + item->setCritical( + CalamaresUtils::yamlToVariant( itemDefinition["critical"] ).toBool() ); + + if ( itemDefinition["packages"] ) + for ( YAML::const_iterator packageIt = itemDefinition["packages"].begin(); + packageIt != itemDefinition["packages"].end(); ++packageIt ) + item->appendChild( + new PackageTreeItem( CalamaresUtils::yamlToVariant( *packageIt ).toString(), item ) ); + + if ( itemDefinition["subgroups"] ) + setupModelData( itemDefinition["subgroups"], item ); + + if ( item->isHidden() ) + m_hiddenItems.append( item ); + else + { + item->setCheckable( true ); + parent->appendChild( item ); + } + } +} diff --git a/src/modules/netinstall/PackageModel.h b/src/modules/netinstall/PackageModel.h new file mode 100644 index 000000000..148bd99ab --- /dev/null +++ b/src/modules/netinstall/PackageModel.h @@ -0,0 +1,66 @@ +/* === This file is part of Calamares - === + * + * Copyright (c) 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PACKAGEMODEL_H +#define PACKAGEMODEL_H + +#include "PackageTreeItem.h" + +#include +#include +#include + +#include + +// Required forward declarations +class PackageTreeItem; + +class PackageModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + explicit PackageModel( const YAML::Node& data, QObject* parent = nullptr ); + ~PackageModel() override; + + QVariant data( const QModelIndex& index, int role ) const override; + bool setData( const QModelIndex& index, const QVariant& value, + int role = Qt::EditRole ) override; + bool setHeaderData( int section, Qt::Orientation orientation, + const QVariant& value, int role = Qt::EditRole ) override; + Qt::ItemFlags flags( const QModelIndex& index ) const override; + QVariant headerData( int section, Qt::Orientation orientation, + int role = Qt::DisplayRole ) const override; + QModelIndex index( int row, int column, + const QModelIndex& parent = QModelIndex() ) const override; + QModelIndex parent( const QModelIndex& index ) const override; + int rowCount( const QModelIndex& parent = QModelIndex() ) const override; + int columnCount( const QModelIndex& parent = QModelIndex() ) const override; + QList getPackages() const; + QList getItemPackages( PackageTreeItem* item ) const; + +private: + void setupModelData( const YAML::Node& data, PackageTreeItem* parent ); + + PackageTreeItem* m_rootItem; + QList m_hiddenItems; + QVariantList m_columnHeadings; +}; + +#endif // PACKAGEMODEL_H diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp new file mode 100644 index 000000000..77ca07a9c --- /dev/null +++ b/src/modules/netinstall/PackageTreeItem.cpp @@ -0,0 +1,206 @@ +/* === This file is part of Calamares - === + * + * Copyright (c) 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "PackageTreeItem.h" + +PackageTreeItem::PackageTreeItem( const ItemData& data, PackageTreeItem* parent ) + : m_parentItem( parent ) + , m_data( data ) +{ } + +PackageTreeItem::PackageTreeItem( const QString packageName, PackageTreeItem* parent ) : + m_parentItem( parent ) +{ + m_data.packageName = packageName; + if ( parent != nullptr ) + m_data.selected = parent->isSelected(); + else + m_data.selected = Qt::Unchecked; +} + +PackageTreeItem::PackageTreeItem( PackageTreeItem* parent ) : + m_parentItem( parent ) +{ } + +PackageTreeItem::~PackageTreeItem() +{ + qDeleteAll( m_childItems ); +} + +void +PackageTreeItem::appendChild( PackageTreeItem* child ) +{ + m_childItems.append( child ); +} + +PackageTreeItem* +PackageTreeItem::child( int row ) +{ + return m_childItems.value( row ); +} + +int +PackageTreeItem::childCount() const +{ + return m_childItems.count(); +} + +int +PackageTreeItem::row() const +{ + if ( m_parentItem ) + return m_parentItem->m_childItems.indexOf( const_cast( this ) ); + return 0; +} + +int +PackageTreeItem::columnCount() const +{ + return m_columns; +} + +QVariant +PackageTreeItem::data( int column ) const +{ + if ( packageName() != nullptr ) // package + { + if ( !column ) + return QVariant( packageName() ); + return QVariant(); + } + switch ( column ) // group + { + case 0: + return QVariant( prettyName() ); + case 1: + return QVariant( description() ); + default: + return QVariant(); + } +} + +PackageTreeItem* +PackageTreeItem::parentItem() +{ + return m_parentItem; +} + +QString +PackageTreeItem::prettyName() const +{ + return m_data.name; +} + +QString +PackageTreeItem::description() const +{ + return m_data.description; +} + +QString +PackageTreeItem::preScript() const +{ + return m_data.preScript; +} + +QString +PackageTreeItem::packageName() const +{ + return m_data.packageName; +} + +QString +PackageTreeItem::postScript() const +{ + return m_data.postScript; +} + +bool +PackageTreeItem::isHidden() const +{ + return m_data.isHidden; +} + +void +PackageTreeItem::setHidden( bool isHidden ) +{ + m_data.isHidden = isHidden; +} + +bool +PackageTreeItem::isCritical() const +{ + return m_data.isCritical; +} + +void +PackageTreeItem::setCritical( bool isCritical ) +{ + m_data.isCritical = isCritical; +} + +Qt::CheckState +PackageTreeItem::isSelected() const +{ + return m_data.selected; +} + +void +PackageTreeItem::setSelected( Qt::CheckState isSelected ) +{ + m_data.selected = isSelected; + setChildrenSelected( isSelected ); + PackageTreeItem* currentItem = parentItem(); + while ( currentItem != nullptr ) + { + int childrenSelected = 0; + bool isChildPartiallySelected = false; + for ( int i = 0; i < currentItem->childCount(); i++ ) + { + if ( currentItem->child( i )->isSelected() == Qt::Checked ) + childrenSelected++; + if ( currentItem->child( i )->isSelected() == Qt::PartiallyChecked ) + isChildPartiallySelected = true; + } + if ( !childrenSelected && !isChildPartiallySelected ) + currentItem->m_data.selected = Qt::Unchecked; + else if ( childrenSelected == currentItem->childCount() ) + currentItem->m_data.selected = Qt::Checked; + else + currentItem->m_data.selected = Qt::PartiallyChecked; + currentItem = currentItem->parentItem(); + } +} + +void +PackageTreeItem::setChildrenSelected( Qt::CheckState isSelected ) +{ + if ( isSelected != Qt::PartiallyChecked ) + for ( auto child : m_childItems ) + { + child->m_data.selected = isSelected; + child->setChildrenSelected( isSelected ); + } +} + +int +PackageTreeItem::type() const +{ + return QStandardItem::UserType; +} diff --git a/src/modules/netinstall/PackageTreeItem.h b/src/modules/netinstall/PackageTreeItem.h new file mode 100644 index 000000000..e9bbcf59c --- /dev/null +++ b/src/modules/netinstall/PackageTreeItem.h @@ -0,0 +1,73 @@ +/* === This file is part of Calamares - === + * + * Copyright (c) 2017, Kyle Robbertze + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PACKAGETREEITEM_H +#define PACKAGETREEITEM_H + +#include +#include +#include + +class PackageTreeItem : public QStandardItem +{ +public: + struct ItemData + { + QString name; + QString description; + QString preScript; + QString packageName; + QString postScript; + bool isCritical = false; + bool isHidden = false; + Qt::CheckState selected = Qt::Unchecked; + }; + explicit PackageTreeItem( const ItemData& data, PackageTreeItem* parent = nullptr ); + explicit PackageTreeItem( const QString packageName, PackageTreeItem* parent = nullptr ); + explicit PackageTreeItem( PackageTreeItem* parent = nullptr ); + ~PackageTreeItem() override; + + void appendChild( PackageTreeItem* child ); + PackageTreeItem* child( int row ); + int childCount() const; + int columnCount() const; + QVariant data( int column ) const override; + int row() const; + PackageTreeItem* parentItem(); + QString prettyName() const; + QString description() const; + QString preScript() const; + QString packageName() const; + QString postScript() const; + bool isHidden() const; + void setHidden( bool isHidden ); + bool isCritical() const; + void setCritical( bool isCritical ); + Qt::CheckState isSelected() const; + void setSelected( Qt::CheckState isSelected ); + void setChildrenSelected( Qt::CheckState isSelected ); + int type() const override; +private: + PackageTreeItem* m_parentItem; + QList m_childItems; + ItemData m_data; + const int m_columns = 2; // Name, description +}; + +#endif // PACKAGETREEITEM_H diff --git a/src/modules/netinstall/README.md b/src/modules/netinstall/README.md new file mode 100644 index 000000000..5d199a559 --- /dev/null +++ b/src/modules/netinstall/README.md @@ -0,0 +1,83 @@ +# Netinstall module + +The netinstall module allows distribution maintainers to ship minimal ISOs with only a basic set of preinstall packages. +At installation time, the user is presented with the choice to install groups of packages from a predefined list. + +Calamares will then invoke the correct backend to install the packages. + +## Configuration of the packages +Every distribution can choose which groups to display and which packages should be in the groups. + +The *netinstall.conf* file should have this format: + + ---- + groupsUrl: + +The URL must point to a YAML file. Here is a short example of how the YAML file should look. + + - name: "Group name" + description: "Description of the group" + packages: + - lsb-release + - avahi + - grub + - name: "Second group name" + ... + + +The file is composed of a list of entry, each describing one group. The keys *name*, *description* and *packages* are required. + +More keys are supported: + + - hidden: if true, do not show the group on the page. Defaults to false. + - selected: if true, display the group as selected. Defaults to false. + - critical: if true, make the installation process fail if installing + any of the packages in the group fails. Otherwise, just log a warning. + Defaults to false. + - subgroups: if present this follows the same structure as the top level + of the YAML file, allowing there to be sub-groups of packages to an + arbitary depth + - pre-install: an optional command to run within the new system before + the group's packages are installed. It will run before each package in + the group is installed. + - post-install: an optional command to run within the new system after + the group's packages are installed. It will run after each package in + the group is installed. + +If you set both *hidden* and *selected* for a group, you are basically creating a "default" group of packages +which will always be installed in the user's system. + +## Configuration of the module +Here is the set of instructions to have the module work in your Calamares. As of July 2016, this has been successfully +tested using the live installation of Chakra Fermi. + +First, if the module is used, we need to require a working Internet connection, otherwise the module will be +unable to fetch the package groups and to perform the installation. Requirements for the Calamares instance +are configured in the **welcome.conf** file (configuration for the **welcome** module). Make sure *internet* +is listed below *required*. + +In the *settings.conf* file, decide where the **netinstall** page should be displayed. I put it just after the +**welcome** page, but any position between that and just before **partition** should make no difference. + +If not present, add the **packages** job in the **exec** list. This is the job that calls the package manager +to install packages. Make sure it is configured to use the correct package manager for your distribution; this +is configured in src/modules/packages/packages.conf. + +The exec list should be: + + - unpackfs + - networkcfg + - packages + +**unpackfs** creates the chroot where the installation is performed, and unpacks the root image with the filesystem +structure; **networkcfg** set ups a working network in the chroot; and finally **packages** can install packages +in the chroot. + +## Common issues +If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this +is likely an error in the setup of the chroot; check that the parameter **rootMountPoint** is set to the correct +value in the Calamares configuration. + +If the command is run, but exits with error, check that the network is working in the chroot. Make sure /etc/resolv.conf +exists and that it's not empty. + diff --git a/src/modules/netinstall/netinstall.conf b/src/modules/netinstall/netinstall.conf new file mode 100644 index 000000000..b87aef43e --- /dev/null +++ b/src/modules/netinstall/netinstall.conf @@ -0,0 +1,2 @@ +--- +groupsUrl: http://chakraos.org/netinstall.php diff --git a/src/modules/netinstall/netinstall.yaml b/src/modules/netinstall/netinstall.yaml new file mode 100644 index 000000000..8e9037f4d --- /dev/null +++ b/src/modules/netinstall/netinstall.yaml @@ -0,0 +1,203 @@ +- name: "Default" + description: "Default group" + hidden: true + selected: true + critical: false + packages: + - base + - chakra-live-skel + - cdemu-client + - lsb-release + - avahi + - grub + # disk utils + - dosfstools + - e2fsprogs + - fuse + - gptfdisk + - jfsutils + - ntfs-3g + - reiserfsprogs + - xfsprogs + # power + - acpi_call + - pmtools + # network + - dnsutils + - iputils + - netcfg + - xinetd + # firmwares + - alsa-firmware + - linux-firmware + # sound + - alsa-lib + - alsa-utils + - gstreamer + - gst-plugins-good + - gst-plugins-bad + - libao + - libcanberra-gstreamer + - libcanberra-pulse + - pulseaudio + - pulseaudio-alsa + # tools + - bash-completion + - hwinfo + - lsof + - man-db + - mlocate + - nano + - openssh + - sudo + - vim + - zsh # :D + # archivers + - p7zip + - unarj + - unrar + - unzip + - zip + # xorg base + - xorg + - xorg-apps + - xorg-fonts-alias + - xorg-fonts-encodings + - xorg-fonts-misc + - xorg-res-utils + - xorg-server + - xorg-server-utils + - xorg-xauth + - xorg-xinit + - xorg-xkb-utils + # xorg video drivers + - xf86-video-apm + - xf86-video-ark + - xf86-video-ati + - xf86-video-chips + - xf86-video-cirrus + - xf86-video-glint + - xf86-video-i128 + - xf86-video-i740 + - xf86-video-intel + - xf86-video-mach64 + - xf86-video-mga + - xf86-video-neomagic + - xf86-video-nouveau + - xf86-video-nv + - xf86-video-openchrome + - xf86-video-r128 + - xf86-video-rendition + - xf86-video-s3 + - xf86-video-s3virge + - xf86-video-savage + - xf86-video-siliconmotion + - xf86-video-sisusb + - xf86-video-tdfx + - xf86-video-trident + - xf86-video-tseng + - xf86-video-v4l + - xf86-video-vesa + - xf86-video-voodoo + - mesa-libgl + # xorg input drivers + - xf86-input-synaptics + - xf86-input-wacom + - xf86-input-evdev + - xf86-input-keyboard + - xf86-input-mouse + # fonts + - terminus-font + - ttf-dejavu + - ttf-liberation + - wqy-microhei + - xorg-fonts-100dpi + - xorg-fonts-75dpi + - xorg-fonts-cyrillic + # additional stuff that needs xorg + - hicolor-icon-theme + # kde + - chakra-common + - qt + - kde-baseapps + - kde-baseapps-dolphin + - kde-baseapps-konsole + - kde-runtime + - kde-workspace + - kdelibs + - kdepimlibs + - kdemultimedia-kmix + - oxygen-icons + - phonon-backend-gstreamer + # chakra theme (including kapudan options) + - chakra-wallpapers-dharma + - chakra-wallpapers-curie + - chakra-wallpapers-descartes + - grub2-themes-sirius + - kapudan-kde-themes-caledonia + - kde-kdm-themes-sirius + - kde-ksplash-themes-sirius + - kde-plasma-themes-caledonia + - python2-imaging + - python2-v4l2capture + - python2-xlib + - caledonia-colors + - yakuake-themes-ronak + # kde (everything else) + - kdeadmin-kcron + - kdeadmin-kuser + - kdeplasma-addons-applets-icontasks + - kdesdk-kate + - kdeutils-ark + - kdeutils-kgpg + - kdeutils-sweeper + # kde network + - kdeplasma-applets-plasma-nm + - networkmanager-dispatcher-ntpd + - kcm-ufw + # applications + - rekonq + - yakuake + # enable systemd-units + - chakra-init-live + # overlay pkgs + - partitionmanager + - octopi-notifier + - kapudan +- name: "Wireless" + description: "Tools for wireless connections" + critical: false + packages: + - crda + - ndiswrapper + - usb-modeswitch + - wireless-regdb + - wireless_tools + - wpa_supplicant +- name: "CCR" + description: "Tools for the Chakra Community Repository" + packages: + - ccr + - base-devel +- name: "Graphics" + description: "Applications to work with graphics" + packages: + - kdegraphics-gwenview + - kdegraphics-kamera + - kdegraphics-kcolorchooser + - kdegraphics-kgamma + - kdegraphics-kolourpaint + - kdegraphics-kruler + - kdegraphics-ksaneplugin + - kdegraphics-ksnapshot + - kdegraphics-libkdcraw + - kdegraphics-libkexiv2 + - kdegraphics-libkipi + - kdegraphics-libksane + - kdegraphics-mobipocket + - kdegraphics-okular + - kdegraphics-strigi-analyzer + - kdegraphics-svgpart + - kdegraphics-thumbnailers + - imagemagick + diff --git a/src/modules/netinstall/page_netinst.ui b/src/modules/netinstall/page_netinst.ui new file mode 100644 index 000000000..15d27cfb4 --- /dev/null +++ b/src/modules/netinstall/page_netinst.ui @@ -0,0 +1,57 @@ + + + Page_NetInst + + + + 0 + 0 + 997 + 474 + + + + + + + + + + + 16777215 + 16777215 + + + + true + + + + + 0 + 0 + 981 + 434 + + + + + 11 + + + + + + + + + + + + + + + + + + diff --git a/src/modules/networkcfg/main.py b/src/modules/networkcfg/main.py index b9c347d45..3a9d65318 100644 --- a/src/modules/networkcfg/main.py +++ b/src/modules/networkcfg/main.py @@ -5,6 +5,7 @@ # # Copyright 2014, Philip Müller # Copyright 2014, Teo Mrnjavac +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,11 +27,15 @@ import libcalamares def run(): - """ Setup network configuration """ + """ + Setup network configuration + """ root_mount_point = libcalamares.globalstorage.value("rootMountPoint") source_nm = "/etc/NetworkManager/system-connections/" - target_nm = os.path.join(root_mount_point, "etc/NetworkManager/system-connections/") + target_nm = os.path.join( + root_mount_point, "etc/NetworkManager/system-connections/" + ) # Sanity checks. We don't want to do anything if a network # configuration already exists on the target @@ -49,8 +54,29 @@ def run(): try: shutil.copy(source_network, target_network) except FileNotFoundError: - libcalamares.utils.debug("Can't copy network configuration files in {}".format(source_network)) + libcalamares.utils.debug( + "Can't copy network configuration files in " + + "{}".format(source_network) + ) except FileExistsError: pass + # We need to overwrite the default resolv.conf in the chroot. + source_resolv = "/etc/resolv.conf" + target_resolv = os.path.join(root_mount_point, "etc/resolv.conf") + if source_resolv != target_resolv and os.path.exists(source_resolv): + try: + os.remove(target_resolv) + except Exception as err: + libcalamares.utils.debug( + "Couldn't remove {}: {}".format(target_resolv, err) + ) + + try: + shutil.copy(source_resolv, target_resolv) + except Exception as err: + libcalamares.utils.debug( + "Can't copy resolv.conf from {}: {}".format(source_resolv, err) + ) + return None diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 216e1c046..48caae6bd 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -4,6 +4,9 @@ # === This file is part of Calamares - === # # Copyright 2014, Pier Luigi Fiorini +# Copyright 2015-2017, Teo Mrnjavac +# Copyright 2016-2017, Kyle Robbertze +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,115 +21,426 @@ # You should have received a copy of the GNU General Public License # along with Calamares. If not, see . +import abc +from string import Template +import subprocess + import libcalamares from libcalamares.utils import check_target_env_call, target_env_call +from libcalamares.utils import gettext_path, gettext_languages + +import gettext +_translation = gettext.translation("calamares-python", + localedir=gettext_path(), + languages=gettext_languages(), + fallback=True) +_ = _translation.gettext +_n = _translation.ngettext -class PackageManager: - """ Package manager class. +total_packages = 0 # For the entire job +completed_packages = 0 # Done so far for this job +group_packages = 0 # One group of packages from an -install or -remove entry - :param backend: +INSTALL = object() +REMOVE = object() +mode_packages = None # Changes to INSTALL or REMOVE + + +def _change_mode(mode): + global mode_packages + mode_packages = mode + libcalamares.job.setprogress(completed_packages * 1.0 / total_packages) + + +def pretty_name(): + if not group_packages: + # Outside the context of an operation + s = _("Processing packages (%(count)d / %(total)d)") + elif mode_packages is INSTALL: + s = _n("Installing one package.", + "Installing %(num)d packages.", group_packages) + elif mode_packages is REMOVE: + s = _n("Removing one package.", + "Removing %(num)d packages.", group_packages) + else: + # No mode, generic description + s = _("Install packages.") + + return s % {"num": group_packages, + "count": completed_packages, + "total": total_packages} + + +class PackageManager(metaclass=abc.ABCMeta): """ - def __init__(self, backend): - self.backend = backend + Package manager base class. A subclass implements package management + for a specific backend, and must have a class property `backend` + with the string identifier for that backend. + + Subclasses are collected below to populate the list of possible + backends. + """ + backend = None + + @abc.abstractmethod + def install(self, pkgs, from_local=False): + """ + Install a list of packages (named) into the system. + Although this handles lists, in practice it is called + with one package at a time. + + @param pkgs: list[str] + list of package names + @param from_local: bool + if True, then these are local packages (on disk) and the + pkgs names are paths. + """ + pass + + @abc.abstractmethod + def remove(self, pkgs): + """ + Removes packages. + + @param pkgs: list[str] + list of package names + """ + pass + + @abc.abstractmethod + def update_db(self): + pass + + def run(self, script): + if script != "": + check_target_env_call(script.split(" ")) + + def install_package(self, packagedata, from_local=False): + """ + Install a package from a single entry in the install list. + This can be either a single package name, or an object + with pre- and post-scripts. + + @param packagedata: str|dict + @param from_local: bool + see install.from_local + """ + if isinstance(packagedata, str): + self.install([packagedata], from_local=from_local) + else: + self.run(packagedata["pre-script"]) + self.install([packagedata["package"]], from_local=from_local) + self.run(packagedata["post-script"]) + + +class PMPackageKit(PackageManager): + backend = "packagekit" def install(self, pkgs, from_local=False): - """ Installs packages. - - :param pkgs: - :param from_local: - """ - if self.backend == "packagekit": - for pkg in pkgs: - check_target_env_call(["pkcon", "-py", "install", pkg]) - elif self.backend == "zypp": - check_target_env_call(["zypper", "--non-interactive", "--quiet-install", "install", - "--auto-agree-with-licenses", "install"] + pkgs) - elif self.backend == "yum": - check_target_env_call(["yum", "install", "-y"] + pkgs) - elif self.backend == "dnf": - check_target_env_call(["dnf", "install", "-y"] + pkgs) - elif self.backend == "urpmi": - check_target_env_call(["urpmi", "--download-all", "--no-suggests", "--no-verify-rpm", - "--fastunsafe", "--ignoresize", "--nolock", "--auto"] + pkgs) - elif self.backend == "apt": - check_target_env_call(["apt-get", "-q", "-y", "install"] + pkgs) - elif self.backend == "pacman": - if from_local: - pacman_flags = "-U" - else: - pacman_flags = "-Sy" - - check_target_env_call(["pacman", pacman_flags, "--noconfirm"] + pkgs) - elif self.backend == "portage": - check_target_env_call(["emerge", "-v"] + pkgs) - elif self.backend == "entropy": - check_target_env_call(["equo", "i"] + pkgs) + for pkg in pkgs: + check_target_env_call(["pkcon", "-py", "install", pkg]) def remove(self, pkgs): - """ Removes packages. + for pkg in pkgs: + check_target_env_call(["pkcon", "-py", "remove", pkg]) - :param pkgs: - """ - if self.backend == "packagekit": - for pkg in pkgs: - check_target_env_call(["pkcon", "-py", "remove", pkg]) - elif self.backend == "zypp": - check_target_env_call(["zypper", "--non-interactive", "remove"] + pkgs) - elif self.backend == "yum": - check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", "remove"] + pkgs) - elif self.backend == "dnf": - # ignore the error code for now because dnf thinks removing a nonexistent package is an error - target_env_call(["dnf", "--disablerepo=*", "-C", "-y", "remove"] + pkgs) - elif self.backend == "urpmi": - check_target_env_call(["urpme", "--auto"] + pkgs) - elif self.backend == "apt": - check_target_env_call(["apt-get", "--purge", "-q", "-y", "remove"] + pkgs) - check_target_env_call(["apt-get", "--purge", "-q", "-y", "autoremove"]) - elif self.backend == "pacman": - check_target_env_call(["pacman", "-Rs", "--noconfirm"] + pkgs) - elif self.backend == "portage": - check_target_env_call(["emerge", "-C"] + pkgs) - elif self.backend == "entropy": - check_target_env_call(["equo", "rm"] + pkgs) + def update_db(self): + check_target_env_call(["pkcon", "refresh"]) + + +class PMZypp(PackageManager): + backend = "zypp" + + def install(self, pkgs, from_local=False): + check_target_env_call(["zypper", "--non-interactive", + "--quiet-install", "install", + "--auto-agree-with-licenses", + "install"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["zypper", "--non-interactive", + "remove"] + pkgs) + + def update_db(self): + check_target_env_call(["zypper", "--non-interactive", "update"]) + + +class PMYum(PackageManager): + backend = "yum" + + def install(self, pkgs, from_local=False): + check_target_env_call(["yum", "install", "-y"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["yum", "--disablerepo=*", "-C", "-y", + "remove"] + pkgs) + + def update_db(self): + # Doesn't need updates + pass + + +class PMDnf(PackageManager): + backend = "dnf" + + def install(self, pkgs, from_local=False): + check_target_env_call(["dnf", "install", "-y"] + pkgs) + + def remove(self, pkgs): + # ignore the error code for now because dnf thinks removing a + # nonexistent package is an error + target_env_call(["dnf", "--disablerepo=*", "-C", "-y", + "remove"] + pkgs) + + def update_db(self): + # Doesn't need to update explicitly + pass + + +class PMUrpmi(PackageManager): + backend = "urpmi" + + def install(self, pkgs, from_local=False): + check_target_env_call(["urpmi", "--download-all", "--no-suggests", + "--no-verify-rpm", "--fastunsafe", + "--ignoresize", "--nolock", + "--auto"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["urpme", "--auto"] + pkgs) + + def update_db(self): + check_target_env_call(["urpmi.update", "-a"]) + + +class PMApt(PackageManager): + backend = "apt" + + def install(self, pkgs, from_local=False): + check_target_env_call(["apt-get", "-q", "-y", "install"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["apt-get", "--purge", "-q", "-y", + "remove"] + pkgs) + check_target_env_call(["apt-get", "--purge", "-q", "-y", + "autoremove"]) + + def update_db(self): + check_target_env_call(["apt-get", "update"]) + + +class PMPacman(PackageManager): + backend = "pacman" + + def install(self, pkgs, from_local=False): + if from_local: + pacman_flags = "-U" + else: + pacman_flags = "-Sy" + + check_target_env_call(["pacman", pacman_flags, + "--noconfirm"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["pacman", "-Rs", "--noconfirm"] + pkgs) + + def update_db(self): + check_target_env_call(["pacman", "-Sy"]) + + +class PMPortage(PackageManager): + backend = "portage" + + def install(self, pkgs, from_local=False): + check_target_env_call(["emerge", "-v"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["emerge", "-C"] + pkgs) + check_target_env_call(["emerge", "--depclean", "-q"]) + + def update_db(self): + check_target_env_call(["emerge", "--sync"]) + + +class PMEntropy(PackageManager): + backend = "entropy" + + def install(self, pkgs, from_local=False): + check_target_env_call(["equo", "i"] + pkgs) + + def remove(self, pkgs): + check_target_env_call(["equo", "rm"] + pkgs) + + def update_db(self): + check_target_env_call(["equo", "update"]) + + +class PMDummy(PackageManager): + backend = "dummy" + + def install(self, pkgs, from_local=False): + libcalamares.utils.debug("Installing " + str(pkgs)) + + def remove(self, pkgs): + libcalamares.utils.debug("Removing " + str(pkgs)) + + def update_db(self): + libcalamares.utils.debug("Updating DB") + + def run(self, script): + libcalamares.utils.debug("Running script '" + str(script) + "'") + + +# Collect all the subclasses of PackageManager defined above, +# and index them based on the backend property of each class. +backend_managers = [ + (c.backend, c) + for c in globals().values() + if type(c) is abc.ABCMeta and issubclass(c, PackageManager) and c.backend] + + +def subst_locale(plist): + """ + Returns a locale-aware list of packages, based on @p plist. + Package names that contain LOCALE are localized with the + BCP47 name of the chosen system locale; if the system + locale is 'en' (e.g. English, US) then these localized + packages are dropped from the list. + + @param plist: list[str|dict] + Candidate packages to install. + @return: list[str|dict] + """ + locale = libcalamares.globalstorage.value("locale") + if not locale: + return plist + + ret = [] + for packagedata in plist: + if isinstance(packagedata, str): + packagename = packagedata + else: + packagename = packagedata["package"] + + # Update packagename: substitute LOCALE, and drop packages + # if locale is en and LOCALE is in the package name. + if locale != "en": + packagename = Template(packagename).safe_substitute(LOCALE=locale) + elif 'LOCALE' in packagename: + packagename = None + + if packagename is not None: + # Put it back in packagedata + if isinstance(packagedata, str): + packagedata = packagename + else: + packagedata["package"] = packagename + + ret.append(packagedata) + + return ret def run_operations(pkgman, entry): - """ Call package manager with given parameters. + """ + Call package manager with given parameters. :param pkgman: :param entry: """ + global group_packages, completed_packages, mode_packages + for key in entry.keys(): + entry[key] = subst_locale(entry[key]) + group_packages = len(entry[key]) if key == "install": - pkgman.install(entry[key]) + _change_mode(INSTALL) + if all([isinstance(x, str) for x in entry[key]]): + pkgman.install(entry[key]) + else: + for package in entry[key]: + pkgman.install_package(package) + elif key == "try_install": + _change_mode(INSTALL) + # we make a separate package manager call for each package so a + # single failing package won't stop all of them + for package in entry[key]: + try: + pkgman.install_package(package) + except subprocess.CalledProcessError: + warn_text = "WARNING: could not install package " + warn_text += str(package) + libcalamares.utils.debug(warn_text) elif key == "remove": + _change_mode(REMOVE) pkgman.remove(entry[key]) + elif key == "try_remove": + _change_mode(REMOVE) + for package in entry[key]: + try: + pkgman.remove([package]) + except subprocess.CalledProcessError: + warn_text = "WARNING: could not remove package " + warn_text += package + libcalamares.utils.debug(warn_text) elif key == "localInstall": + _change_mode(INSTALL) pkgman.install(entry[key], from_local=True) + completed_packages += len(entry[key]) + libcalamares.job.setprogress(completed_packages * 1.0 / total_packages) + libcalamares.utils.debug(pretty_name()) + + group_packages = 0 + _change_mode(None) + def run(): - """ Calls routine with detected package manager to install locale packages + """ + Calls routine with detected package manager to install locale packages or remove drivers not needed on the installed system. :return: """ + global mode_packages, total_packages, completed_packages, group_packages + backend = libcalamares.job.configuration.get("backend") - if backend not in ("packagekit", "zypp", "yum", "dnf", "urpmi", "apt", "pacman", "portage", "entropy"): + for identifier, impl in backend_managers: + if identifier == backend: + pkgman = impl() + break + else: return "Bad backend", "backend=\"{}\"".format(backend) - pkgman = PackageManager(backend) + update_db = libcalamares.job.configuration.get("update_db", False) + if update_db and libcalamares.globalstorage.value("hasInternet"): + pkgman.update_db() + operations = libcalamares.job.configuration.get("operations", []) + if libcalamares.globalstorage.contains("packageOperations"): + operations += libcalamares.globalstorage.value("packageOperations") + + mode_packages = None + total_packages = 0 + completed_packages = 0 + for op in operations: + for packagelist in op.values(): + total_packages += len(packagelist) + + if not total_packages: + # Avoids potential divide-by-zero in progress reporting + return None for entry in operations: + group_packages = 0 + libcalamares.utils.debug(pretty_name()) run_operations(pkgman, entry) - if libcalamares.globalstorage.contains("packageOperations"): - operations = libcalamares.globalstorage.value("packageOperations") + mode_packages = None - for entry in operations: - run_operations(pkgman, entry) + libcalamares.job.setprogress(1.0) + libcalamares.utils.debug(pretty_name()) return None diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index e72763731..6e3af05a8 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -8,10 +8,17 @@ # - urpmi - Mandriva package manager # - apt - APT frontend for DEB and RPM # - pacman - Pacman -# - portage - Gentoo package manager -# - entropy - Sabayon package manager +# - portage - Gentoo package manager +# - entropy - Sabayon package manager +# - dummy - Dummy manager, only logs # -backend: packagekit +backend: dummy + +# If set to true, a package-manager specific update procedure +# is run first (only if there is internet) to update the list +# of packages and dependencies. +update_db: true + # # List of maps with package operations such as install or remove. # Distro developers can provide a list of packages to remove @@ -26,20 +33,90 @@ backend: packagekit # storage called "packageOperations" and it is processed # after the static list in the job configuration. # -#operations: -# - install: -# - pkg1 -# - pkg2 -# - remove: -# - pkg3 -# - pkg4 -# - install: -# - pkg5 -# - remove: -# - pkg2 -# - pkg1 -# install: -# - pkgs6 -# - pkg7 -# - localInstall: -# - /path/to/pkg8 +# Allowed package operations are: +# - install, try_install: will call the package manager to +# install one or more packages. The install target will +# abort the whole installation if package-installation +# fails, while try_install carries on. Packages may be +# listed as (localized) names, or as (localized) package-data. +# See below for the description of the format. +# - localInstall: this is used to call the package manager +# to install a package from a path-to-a-package. This is +# useful if you have a static package archive on the install media. +# - remove, try_remove: will call the package manager to +# remove one or more packages. The remove target will +# abort the whole installation if package-removal fails, +# while try_remove carries on. Packages may be listed as +# (localized) names. +# +# There are two formats for naming packages: as a name # or as package-data, +# which is an object notation providing package-name, as well as pre- and +# post-install scripts. +# +# Here are both formats, for installing vi. The first one just names the +# package for vi (using the naming of the installed package manager), while +# the second contains three data-items; the pre-script is run before invoking +# the package manager, and the post-script runs once it is done. +# +# - install +# - vi +# - package: vi +# pre-script: touch /tmp/installing-vi +# post-script: rm -f /tmp/installing-vi +# +# The pre- and post-scripts are optional, but not both optional: using +# "package: vi" with neither script option will trick Calamares into +# trying to install a package named "package: vi", which is unlikely to work. +# +# Any package name may be localized; this is used to install localization +# packages for software based on the selected system locale. By including +# the string LOCALE in the package name, the following happens: +# +# - if the system locale is English (generally US English; en_GB is a valid +# localization), then the package is not installed at all, +# - otherwise LOCALE is replaced by the Bcp47 name of the selected system +# locale, e.g. nl_BE. +# +# The following installs localizations for vi, if they are relevant; if +# there is no localization, installation continues normally. +# +# - install +# - vi-LOCALE +# - package: vi-LOCALE +# pre-script: touch /tmp/installing-vi +# post-script: rm -f /tmp/installing-vi +# +# When installing packages, Calamares will invoke the package manager +# with a list of package names if it can; package-data prevents this because +# of the scripts that need to run. In other words, this: +# +# - install: +# - vi +# - binutils +# - package: wget +# pre-script: touch /tmp/installing-wget +# +# This will invoke the package manager three times, once for each package, +# because not all of them are simple package names. You can speed up the +# process if you have only a few pre-scriots, by using multiple install targets: +# +# - install: +# - vi +# - binutils +# - install: +# - package: wget +# pre-script: touch /tmp/installing-wget +# +# This will call the package manager once with the package-names "vi" and +# "binutils", and then a second time for "wget". When installing large numbers +# of packages, this can lead to a considerable time savings. +# +operations: + - install: + - vi + - wget + - binutils + - remove: + - vi + - wget + - binutils diff --git a/src/modules/packages/test.yaml b/src/modules/packages/test.yaml index ba84cddc9..8902b657a 100644 --- a/src/modules/packages/test.yaml +++ b/src/modules/packages/test.yaml @@ -1,6 +1,12 @@ +backend: dummy rootMountPoint: /tmp/mount -packageOperations: +operations: - install: - - vi + - pre-script: touch /tmp/foo + package: vi + post-script: rm /tmp/foo + - wget + - binutils - remove: - vi + - wget diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index a81664fd5..1ea69c027 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -1,27 +1,40 @@ -# ECM used for something in the tests directory -find_package(ECM 0.0.13 REQUIRED NO_MODULE) +find_package(ECM 5.10.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) -# KF5::CoreAddons seems to be used for *something* in this module, not sure what -include(KDEInstallDirs) # this seems to be necessary for KF5::CoreAddons -include(GenerateExportHeader) # this too, because KDE frameworks always want omnomnom more stuff +include(KDEInstallDirs) +include(GenerateExportHeader) find_package( KF5 REQUIRED CoreAddons ) # These are needed because KPMcore links publicly against ConfigCore, I18n, IconThemes, KIOCore and Service find_package( KF5 REQUIRED Config I18n IconThemes KIO Service ) -find_package( KPMcore 2.1 REQUIRED ) +find_package( KPMcore 3.1.50 QUIET ) +if ( ${KPMcore_FOUND} ) + add_definitions(-DWITH_KPMCORE22) +endif() +find_package( KPMcore 3.0.3 REQUIRED ) +find_library( atasmart_LIB atasmart ) +find_library( blkid_LIB blkid ) +if( NOT atasmart_LIB ) + message( WARNING "atasmart library not found." ) +endif() +if( NOT blkid_LIB ) + message( WARNING "blkid library not found." ) +endif() + + +include_directories( ${KPMCORE_INCLUDE_DIR} ) +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) add_subdirectory( tests ) -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) - calamares_add_plugin( partition TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES core/BootLoaderModel.cpp core/ColorUtils.cpp + core/DeviceList.cpp core/DeviceModel.cpp core/KPMHelpers.cpp core/PartitionActions.cpp @@ -30,11 +43,12 @@ calamares_add_plugin( partition core/PartitionIterator.cpp core/PartitionModel.cpp core/PartUtils.cpp + gui/BootInfoWidget.cpp gui/ChoicePage.cpp gui/CreatePartitionDialog.cpp - gui/EditExistingPartitionDialog.cpp - gui/BootInfoWidget.cpp gui/DeviceInfoWidget.cpp + gui/EditExistingPartitionDialog.cpp + gui/EncryptWidget.cpp gui/PartitionPage.cpp gui/PartitionBarsView.cpp gui/PartitionLabelsView.cpp @@ -61,9 +75,10 @@ calamares_add_plugin( partition gui/CreatePartitionDialog.ui gui/CreatePartitionTableDialog.ui gui/EditExistingPartitionDialog.ui + gui/EncryptWidget.ui gui/PartitionPage.ui gui/ReplaceWidget.ui - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES kpmcore calamaresui KF5::CoreAddons diff --git a/src/modules/partition/README.md b/src/modules/partition/README.md index 425d0980b..3491b309b 100644 --- a/src/modules/partition/README.md +++ b/src/modules/partition/README.md @@ -61,7 +61,7 @@ run on storage device which does not contain any data you care about. To build them: - cd $top_build_dir/src/modules/partitions/tests + cd $top_build_dir make buildtests To run them you need to define the `CALAMARES_TEST_DISK` environment variable. @@ -69,7 +69,7 @@ It should contain the device path to the test disk. For example, assuming you plugged a test USB stick identified as `/dev/sdb`, you would run the tests like this: - sudo CALAMARES_TEST_DISK=/dev/sdb $top_build_dir/partitiontests + sudo CALAMARES_TEST_DISK=/dev/sdb $top_build_dir/partitionjobtests # TODO diff --git a/src/modules/partition/core/BootLoaderModel.h b/src/modules/partition/core/BootLoaderModel.h index 27684e326..e911d9029 100644 --- a/src/modules/partition/core/BootLoaderModel.h +++ b/src/modules/partition/core/BootLoaderModel.h @@ -38,8 +38,8 @@ public: IsPartitionRole }; - BootLoaderModel( QObject* parent = 0 ); - ~BootLoaderModel(); + BootLoaderModel( QObject* parent = nullptr ); + ~BootLoaderModel() override; /** * Init the model with the list of devices. Does *not* take ownership of the diff --git a/src/modules/partition/core/ColorUtils.cpp b/src/modules/partition/core/ColorUtils.cpp index 7266ceb0a..2f9710057 100644 --- a/src/modules/partition/core/ColorUtils.cpp +++ b/src/modules/partition/core/ColorUtils.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * Copyright 2015-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ // KPMcore #include +#include // Qt #include @@ -84,8 +85,21 @@ colorForPartition( Partition* partition ) return FREE_SPACE_COLOR; if ( partition->roles().has( PartitionRole::Extended ) ) return EXTENDED_COLOR; - if ( s_partitionColorsCache.contains( partition->partitionPath() ) ) - return s_partitionColorsCache[ partition->partitionPath() ]; + + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() ) + { + if ( partition->fileSystem().type() == FileSystem::Luks ) + { + FS::luks& luksFs = dynamic_cast< FS::luks& >( partition->fileSystem() ); + if ( !luksFs.outerUuid().isEmpty() && + s_partitionColorsCache.contains( luksFs.outerUuid() ) ) + return s_partitionColorsCache[ luksFs.outerUuid() ]; + } + + if ( s_partitionColorsCache.contains( partition->fileSystem().uuid() ) ) + return s_partitionColorsCache[ partition->fileSystem().uuid() ]; + } // No partition-specific color needed, pick one from our list, but skip // free space: we don't want a partition to change colors if space before @@ -107,16 +121,29 @@ colorForPartition( Partition* partition ) { if ( KPMHelpers::isPartitionNew( child ) ) ++newColorIdx; - else - ++colorIdx; + ++colorIdx; } } if ( KPMHelpers::isPartitionNew( partition ) ) return NEW_PARTITION_COLORS[ newColorIdx % NUM_NEW_PARTITION_COLORS ]; - s_partitionColorsCache.insert( partition->partitionPath(), - PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] ); + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() ) + { + if ( partition->fileSystem().type() == FileSystem::Luks ) + { + FS::luks& luksFs = dynamic_cast< FS::luks& >( partition->fileSystem() ); + if ( !luksFs.outerUuid().isEmpty() ) + { + s_partitionColorsCache.insert( luksFs.outerUuid(), + PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] ); + } + } + else + s_partitionColorsCache.insert( partition->fileSystem().uuid(), + PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] ); + } return PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ]; } @@ -143,4 +170,11 @@ colorForPartitionInFreeSpace( Partition* partition ) return NEW_PARTITION_COLORS[ newColorIdx % NUM_NEW_PARTITION_COLORS ]; } + +void +invalidateCache() +{ + s_partitionColorsCache.clear(); +} + } // namespace diff --git a/src/modules/partition/core/ColorUtils.h b/src/modules/partition/core/ColorUtils.h index 7cbe8f313..50f4fd785 100644 --- a/src/modules/partition/core/ColorUtils.h +++ b/src/modules/partition/core/ColorUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,6 +34,12 @@ QColor freeSpaceColor(); QColor unknownDisklabelColor(); +/** + * @brief colorForPartition iterates over partitions, caches their colors and returns + * a color for the given partition. + * @param partition the partition for which to return a color. + * @return a color for the partition. + */ QColor colorForPartition( Partition* partition ); /** @@ -41,6 +48,11 @@ QColor colorForPartition( Partition* partition ); */ QColor colorForPartitionInFreeSpace( Partition* freeSpacePartition ); +/** + * @brief invalidateCache clears the partition colors cache. + */ +void invalidateCache(); + } #endif /* COLORUTILS_H */ diff --git a/src/modules/partition/core/DeviceList.cpp b/src/modules/partition/core/DeviceList.cpp new file mode 100644 index 000000000..05616335b --- /dev/null +++ b/src/modules/partition/core/DeviceList.cpp @@ -0,0 +1,161 @@ +/* === This file is part of Calamares - === + * + * Copyright 2015-2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "DeviceList.h" + +#include "PartitionCoreModule.h" + +#include "core/DeviceModel.h" +#include "core/KPMHelpers.h" +#include "core/PartitionIterator.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +namespace PartUtils +{ + +/** + * Does the given @p device contain the root filesystem? This is true if + * the device contains a partition which is currently mounted at / . + */ +static bool +hasRootPartition( Device* device ) +{ + for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) + if ( ( *it )->mountPoint() == "/" ) + return true; + return false; +} + +/* Unused */ +static bool +hasMountedPartitions( Device* device ) +{ + cDebug() << "Checking for mounted partitions in" << device->deviceNode(); + for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) + { + if ( ! ( *it )->isMounted() ) + { + cDebug() << " .." << ( *it )->partitionPath() << "is mounted on" << ( *it )->mountPoint(); + return true; + } + } + return false; +} + +static bool +isIso9660( const Device* device ) +{ + QString path = device->deviceNode(); + if ( path.isEmpty() ) + return false; + + QProcess blkid; + blkid.start( "blkid", { path } ); + blkid.waitForFinished(); + QString output = QString::fromLocal8Bit( blkid.readAllStandardOutput() ); + if ( output.contains( "iso9660" ) ) + return true; + + if ( device->partitionTable() && + !device->partitionTable()->children().isEmpty() ) + { + for ( const Partition* partition : device->partitionTable()->children() ) + { + path = partition->partitionPath(); + blkid.start( "blkid", { path } ); + blkid.waitForFinished(); + QString output = QString::fromLocal8Bit( blkid.readAllStandardOutput() ); + if ( output.contains( "iso9660" ) ) + return true; + } + } + return false; +} + + +static inline QDebug& +operator <<( QDebug& s, QList< Device* >::iterator& it ) +{ + s << ( ( *it ) ? ( *it )->deviceNode() : QString( "" ) ); + return s; +} + +using DeviceList = QList< Device* >; + +static inline DeviceList::iterator +erase(DeviceList& l, DeviceList::iterator& it) +{ + Device* p = *it; + auto r = l.erase( it ); + if (p) + delete p; + return r; +} + +QList< Device* > getDevices( DeviceType which, qint64 minimumSize ) +{ + bool writableOnly = (which == DeviceType::WritableOnly); + + CoreBackend* backend = CoreBackendManager::self()->backend(); + DeviceList devices = backend->scanDevices( true ); + + cDebug() << "Removing unsuitable devices:" << devices.count() << "candidates."; + + // Remove the device which contains / from the list + for ( DeviceList::iterator it = devices.begin(); it != devices.end(); ) + if ( ! ( *it ) || + ( *it )->deviceNode().startsWith( "/dev/zram" ) + ) + { + cDebug() << " .. Removing zram" << it; + it = erase(devices, it ); + + } + else if ( writableOnly && hasRootPartition( *it ) ) + { + cDebug() << " .. Removing device with root filesystem (/) on it" << it; + it = erase(devices, it ); + } + else if ( writableOnly && isIso9660( *it ) ) + { + cDebug() << " .. Removing device with iso9660 filesystem (probably a CD) on it" << it; + it = erase(devices, it ); + } + else if ( (minimumSize >= 0) && !( (*it)->capacity() > minimumSize ) ) + { + cDebug() << " .. Removing too-small" << it; + it = erase(devices, it ); + } + else + ++it; + + return devices; +} + +} // namespace PartUtils diff --git a/src/modules/partition/core/DeviceList.h b/src/modules/partition/core/DeviceList.h new file mode 100644 index 000000000..6da34c5d1 --- /dev/null +++ b/src/modules/partition/core/DeviceList.h @@ -0,0 +1,48 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef DEVICELIST_H +#define DEVICELIST_H + +#include +#include + +class Device; + +namespace PartUtils +{ + +enum class DeviceType { All, WritableOnly }; + +/** + * @brief Gets a list of storage devices. + * @param which Can be used to select from all the devices in + * the system, filtering out those that do not meet a criterium. + * If set to WritableOnly, only devices which can be overwritten + * safely are returned (e.g. RO-media are ignored, as are mounted partitions). + * @param minimumSize Can be used to filter devices based on their + * size (in bytes). If non-negative, only devices with a size + * greater than @p minimumSize will be returned. + * @return a list of Devices meeting this criterium. + */ +QList< Device* > getDevices( DeviceType which = DeviceType::All, qint64 minimumSize = -1 ); + +} + +#endif // DEVICELIST_H diff --git a/src/modules/partition/core/DeviceModel.h b/src/modules/partition/core/DeviceModel.h index 21c6bd939..32c557d9e 100644 --- a/src/modules/partition/core/DeviceModel.h +++ b/src/modules/partition/core/DeviceModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,8 +33,8 @@ class DeviceModel : public QAbstractListModel { Q_OBJECT public: - DeviceModel( QObject* parent = 0 ); - ~DeviceModel(); + DeviceModel( QObject* parent = nullptr ); + ~DeviceModel() override; /** * Init the model with the list of devices. Does *not* take ownership of the diff --git a/src/modules/partition/core/KPMHelpers.cpp b/src/modules/partition/core/KPMHelpers.cpp index dc0938ebc..6ed167eee 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -23,9 +23,11 @@ #include "core/PartitionIterator.h" // KPMcore +#include #include #include #include +#include #include @@ -42,10 +44,7 @@ initKPMcore() return true; QByteArray backendName = qgetenv( "KPMCORE_BACKEND" ); - if ( backendName.isEmpty() ) - backendName = "pmlibpartedbackendplugin"; - - if ( !CoreBackendManager::self()->load( backendName ) ) + if ( !CoreBackendManager::self()->load( backendName.isEmpty() ? CoreBackendManager::defaultBackendName() : backendName ) ) { qWarning() << "Failed to load backend plugin" << backendName; return false; @@ -116,7 +115,11 @@ createNewPartition( PartitionNode* parent, qint64 lastSector, PartitionTable::Flags flags ) { - FileSystem* fs = FileSystemFactory::create( fsType, firstSector, lastSector ); + FileSystem* fs = FileSystemFactory::create( fsType, firstSector, lastSector +#ifdef WITH_KPMCORE22 + ,device.logicalSize() +#endif + ); return new Partition( parent, device, @@ -132,6 +135,50 @@ createNewPartition( PartitionNode* parent, } +Partition* +createNewEncryptedPartition( PartitionNode* parent, + const Device& device, + const PartitionRole& role, + FileSystem::Type fsType, + qint64 firstSector, + qint64 lastSector, + const QString& passphrase, + PartitionTable::Flags flags ) +{ + PartitionRole::Roles newRoles = role.roles(); + if ( !role.has( PartitionRole::Luks ) ) + newRoles |= PartitionRole::Luks; + + FS::luks* fs = dynamic_cast< FS::luks* >( + FileSystemFactory::create( FileSystem::Luks, + firstSector, + lastSector +#ifdef WITH_KPMCORE22 + ,device.logicalSize() +#endif + ) ); + if ( !fs ) + { + qDebug() << "ERROR: cannot create LUKS filesystem. Giving up."; + return nullptr; + } + + fs->createInnerFileSystem( fsType ); + fs->setPassphrase( passphrase ); + Partition* p = new Partition( parent, + device, + PartitionRole( newRoles ), + fs, fs->firstSector(), fs->lastSector(), + QString() /* path */, + PartitionTable::FlagNone /* availableFlags */, + QString() /* mountPoint */, + false /* mounted */, + flags /* activeFlags */, + Partition::StateNew ); + return p; +} + + Partition* clonePartition( Device* device, Partition* partition ) { @@ -139,6 +186,9 @@ clonePartition( Device* device, Partition* partition ) partition->fileSystem().type(), partition->firstSector(), partition->lastSector() +#ifdef WITH_KPMCORE22 + ,device->logicalSize() +#endif ); return new Partition( partition->parent(), *device, @@ -163,7 +213,7 @@ prettyNameForFileSystemType( FileSystem::Type t ) case FileSystem::Unformatted: return QObject::tr( "unformatted" ); case FileSystem::LinuxSwap: - return "swap"; + return QObject::tr( "swap" ); case FileSystem::Fat16: case FileSystem::Fat32: case FileSystem::Ntfs: diff --git a/src/modules/partition/core/KPMHelpers.h b/src/modules/partition/core/KPMHelpers.h index f89cd2f8e..f6f5bb8c1 100644 --- a/src/modules/partition/core/KPMHelpers.h +++ b/src/modules/partition/core/KPMHelpers.h @@ -91,6 +91,15 @@ Partition* createNewPartition( PartitionNode* parent, qint64 lastSector, PartitionTable::Flags flags = PartitionTable::FlagNone ); +Partition* createNewEncryptedPartition( PartitionNode* parent, + const Device& device, + const PartitionRole& role, + FileSystem::Type fsType, + qint64 firstSector, + qint64 lastSector, + const QString& passphrase, + PartitionTable::Flags flags = PartitionTable::FlagNone ); + Partition* clonePartition( Device* device, Partition* partition ); QString prettyNameForFileSystemType( FileSystem::Type t ); diff --git a/src/modules/partition/core/OsproberEntry.h b/src/modules/partition/core/OsproberEntry.h index 58e7bc9d7..e57ac986d 100644 --- a/src/modules/partition/core/OsproberEntry.h +++ b/src/modules/partition/core/OsproberEntry.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,12 +21,27 @@ #include +struct FstabEntry +{ + QString partitionNode; + QString mountPoint; + QString fsType; + QString options; + int dump; + int pass; +}; + +typedef QList< FstabEntry > FstabEntryList; + struct OsproberEntry { QString prettyName; QString path; + QString uuid; bool canBeResized; QStringList line; + FstabEntryList fstab; + QString homePath; }; typedef QList< OsproberEntry > OsproberEntryList; diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 32872e048..d2493239e 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -22,7 +22,11 @@ #include "core/DeviceModel.h" #include "core/KPMHelpers.h" +#include "core/PartitionIterator.h" +#include +#include +#include #include #include @@ -30,6 +34,7 @@ #include #include +#include namespace PartUtils { @@ -37,7 +42,10 @@ namespace PartUtils bool canBeReplaced( Partition* candidate ) { - if ( KPMHelpers::isPartitionFreeSpace( candidate ) ) + if ( !candidate ) + return false; + + if ( candidate->isMounted() ) return false; bool ok = false; @@ -50,8 +58,9 @@ canBeReplaced( Partition* candidate ) qint64 requiredStorageB = ( requiredStorageGB + 0.5 ) * 1024 * 1024 * 1024; cDebug() << "Required storage B:" << requiredStorageB << QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 ); - cDebug() << "Available storage B:" << availableStorageB - << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ); + cDebug() << "Storage capacity B:" << availableStorageB + << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ) + << "for" << candidate->partitionPath() << " length:" << candidate->length(); if ( ok && availableStorageB > requiredStorageB ) @@ -67,6 +76,9 @@ canBeReplaced( Partition* candidate ) bool canBeResized( Partition* candidate ) { + if ( !candidate ) + return false; + if ( !candidate->fileSystem().supportGrow() || !candidate->fileSystem().supportShrink() ) return false; @@ -74,6 +86,9 @@ canBeResized( Partition* candidate ) if ( KPMHelpers::isPartitionFreeSpace( candidate ) ) return false; + if ( candidate->isMounted() ) + return false; + if ( candidate->roles().has( PartitionRole::Primary ) ) { PartitionTable* table = dynamic_cast< PartitionTable* >( candidate->parent() ); @@ -89,19 +104,22 @@ canBeResized( Partition* candidate ) ->globalStorage() ->value( "requiredStorageGB" ) .toDouble( &ok ); + double advisedStorageGB = requiredStorageGB + 0.5 + 2.0; qint64 availableStorageB = candidate->available(); // We require a little more for partitioning overhead and swap file // TODO: maybe make this configurable? - qint64 requiredStorageB = ( requiredStorageGB + 0.5 + 2.0 ) * 1024 * 1024 * 1024; - cDebug() << "Required storage B:" << requiredStorageB - << QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 ); + qint64 advisedStorageB = advisedStorageGB * 1024 * 1024 * 1024; + cDebug() << "Required storage B:" << advisedStorageB + << QString( "(%1GB)" ).arg( advisedStorageGB ); cDebug() << "Available storage B:" << availableStorageB - << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ); + << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ) + << "for" << candidate->partitionPath() << " length:" << candidate->length() + << " sectorsUsed:" << candidate->sectorsUsed() << " fsType:" << candidate->fileSystem().name(); if ( ok && - availableStorageB > requiredStorageB ) + availableStorageB > advisedStorageB ) { cDebug() << "Partition" << candidate->partitionPath() << "authorized for resize + autopartition install."; @@ -139,6 +157,120 @@ canBeResized( PartitionCoreModule* core, const QString& partitionPath ) } +static FstabEntryList +lookForFstabEntries( const QString& partitionPath ) +{ + FstabEntryList fstabEntries; + QTemporaryDir mountsDir; + + int exit = QProcess::execute( "mount", { partitionPath, mountsDir.path() } ); + if ( !exit ) // if all is well + { + QFile fstabFile( mountsDir.path() + "/etc/fstab" ); + if ( fstabFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + const QStringList fstabLines = QString::fromLocal8Bit( fstabFile.readAll() ) + .split( '\n' ); + + for ( const QString& rawLine : fstabLines ) + { + QString line = rawLine.simplified(); + if ( line.startsWith( '#' ) ) + continue; + + QStringList splitLine = line.split( ' ' ); + if ( splitLine.length() != 6 ) + continue; + + fstabEntries.append( { splitLine.at( 0 ), // path, or UUID, or LABEL, etc. + splitLine.at( 1 ), // mount point + splitLine.at( 2 ), // fs type + splitLine.at( 3 ), // options + splitLine.at( 4 ).toInt(), //dump + splitLine.at( 5 ).toInt() //pass + } ); + } + + fstabFile.close(); + } + + QProcess::execute( "umount", { "-R", mountsDir.path() } ); + } + + return fstabEntries; +} + + +static QString +findPartitionPathForMountPoint( const FstabEntryList& fstab, + const QString& mountPoint ) +{ + if ( fstab.isEmpty() ) + return QString(); + + for ( const FstabEntry& entry : fstab ) + { + if ( entry.mountPoint == mountPoint ) + { + QProcess readlink; + QString partPath; + + if ( entry.partitionNode.startsWith( "/dev" ) ) // plain dev node + { + partPath = entry.partitionNode; + } + else if ( entry.partitionNode.startsWith( "LABEL=" ) ) + { + partPath = entry.partitionNode.mid( 6 ); + partPath.remove( "\"" ); + partPath.replace( "\\040", "\\ " ); + partPath.prepend( "/dev/disk/by-label/" ); + } + else if ( entry.partitionNode.startsWith( "UUID=" ) ) + { + partPath = entry.partitionNode.mid( 5 ); + partPath.remove( "\"" ); + partPath = partPath.toLower(); + partPath.prepend( "/dev/disk/by-uuid/" ); + } + else if ( entry.partitionNode.startsWith( "PARTLABEL=" ) ) + { + partPath = entry.partitionNode.mid( 10 ); + partPath.remove( "\"" ); + partPath.replace( "\\040", "\\ " ); + partPath.prepend( "/dev/disk/by-partlabel/" ); + } + else if ( entry.partitionNode.startsWith( "PARTUUID=" ) ) + { + partPath = entry.partitionNode.mid( 9 ); + partPath.remove( "\"" ); + partPath = partPath.toLower(); + partPath.prepend( "/dev/disk/by-partuuid/" ); + } + + // At this point we either have /dev/sda1, or /dev/disk/by-something/... + + if ( partPath.startsWith( "/dev/disk/by-" ) ) // we got a fancy node + { + readlink.start( "readlink", { "-en", partPath }); + if ( !readlink.waitForStarted( 1000 ) ) + return QString(); + if ( !readlink.waitForFinished( 1000 ) ) + return QString(); + if ( readlink.exitCode() != 0 || readlink.exitStatus() != QProcess::NormalExit ) + return QString(); + partPath = QString::fromLocal8Bit( + readlink.readAllStandardOutput() ).trimmed(); + } + + return partPath; + } + } + + return QString(); +} + + OsproberEntryList runOsprober( PartitionCoreModule* core ) { @@ -165,7 +297,8 @@ runOsprober( PartitionCoreModule* core ) QString osProberReport( "Osprober lines, clean:\n" ); QStringList osproberCleanLines; OsproberEntryList osproberEntries; - foreach ( const QString& line, osproberOutput.split( '\n' ) ) + const auto lines = osproberOutput.split( '\n' ); + for ( const QString& line : lines ) { if ( !line.simplified().isEmpty() ) { @@ -180,10 +313,16 @@ runOsprober( PartitionCoreModule* core ) if ( !path.startsWith( "/dev/" ) ) //basic sanity check continue; + FstabEntryList fstabEntries = lookForFstabEntries( path ); + QString homePath = findPartitionPathForMountPoint( fstabEntries, "/home" ); + osproberEntries.append( { prettyName, path, + QString(), canBeResized( core, path ), - lineColumns } ); + lineColumns, + fstabEntries, + homePath } ); osproberCleanLines.append( line ); } } @@ -195,5 +334,10 @@ runOsprober( PartitionCoreModule* core ) return osproberEntries; } - +bool +isEfiSystem() +{ + return QDir( "/sys/firmware/efi/efivars" ).exists(); } + +} // nmamespace PartUtils diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index 2cd63c241..c8d0714f0 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -29,14 +29,44 @@ class Partition; namespace PartUtils { +/** + * @brief canBeReplaced checks whether the given Partition satisfies the criteria + * for replacing it with the new OS. + * @param candidate the candidate partition to replace. + * @return true if the criteria are met, otherwise false. + */ bool canBeReplaced( Partition* candidate ); +/** + * @brief canBeReplaced checks whether the given Partition satisfies the criteria + * for resizing (shrinking) it to make room for a new OS. + * @param candidate the candidate partition to resize. + * @return true if the criteria are met, otherwise false. + */ bool canBeResized( Partition* candidate ); +/** + * @brief canBeReplaced checks whether the given Partition satisfies the criteria + * for resizing (shrinking) it to make room for a new OS. + * @param core the PartitionCoreModule instance. + * @param partitionPath the device path of the candidate partition to resize. + * @return true if the criteria are met, otherwise false. + */ bool canBeResized( PartitionCoreModule* core, const QString& partitionPath ); +/** + * @brief runOsprober executes os-prober, parses the output and writes relevant + * data to GlobalStorage. + * @param core the PartitionCoreModule instance. + * @return a list of os-prober entries, parsed. + */ OsproberEntryList runOsprober( PartitionCoreModule* core ); +/** + * @brief Is this system EFI-enabled? Decides based on /sys/firmware/efi + */ +bool isEfiSystem(); + } #endif // PARTUTILS_H diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 67d73782f..1c2363845 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,8 +22,10 @@ #include "core/KPMHelpers.h" #include "core/PartitionInfo.h" #include "core/PartitionCoreModule.h" +#include "core/PartUtils.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Units.h" #include "JobQueue.h" #include "utils/Logger.h" #include "GlobalStorage.h" @@ -34,27 +37,29 @@ namespace PartitionActions { +using CalamaresUtils::GiBtoBytes; +using CalamaresUtils::MiBtoBytes; +using CalamaresUtils::operator""_GiB; +using CalamaresUtils::operator""_MiB; qint64 swapSuggestion( const qint64 availableSpaceB ) { - -#define MiB * static_cast< qint64 >( 1024 ) * 1024 -#define GiB * static_cast< qint64 >( 1024 ) * 1024 * 1024 - - // swap(mem) = max(2, 2 * mem), if mem < 2 GiB - // = mem, if 2 GiB <= mem < 8 GiB - // = mem / 2, if 8 GIB <= mem < 64 GiB - // = 4 GiB, if mem >= 64 GiB - + /* If suspend-to-disk is demanded, then we always need enough + * swap to write the whole memory to disk -- between 2GB and 8GB + * RAM give proportionally more swap, and from 8GB RAM keep + * swap = RAM. + * + * If suspend-to-disk is not demanded, then ramp up more slowly, + * to 8GB swap at 16GB memory, and then drop to 4GB for "large + * memory" machines, on the assumption that those don't need swap + * because they have tons of memory (or whatever they are doing, + * had better not run into swap). + */ qint64 suggestedSwapSizeB = 0; - qint64 availableRamB = CalamaresUtils::System::instance()->getPhysicalMemoryB(); - qreal overestimationFactor = 1.01; - if ( !availableRamB ) - { - availableRamB = CalamaresUtils::System::instance()->getTotalMemoryB(); - overestimationFactor = 1.10; - } + auto memory = CalamaresUtils::System::instance()->getTotalMemoryB(); + qint64 availableRamB = memory.first; + qreal overestimationFactor = memory.second; bool ensureSuspendToDisk = Calamares::JobQueue::instance()->globalStorage()-> @@ -62,10 +67,10 @@ swapSuggestion( const qint64 availableSpaceB ) if ( ensureSuspendToDisk ) { - if ( availableRamB < 4 GiB ) - suggestedSwapSizeB = qMax( 2 GiB, availableRamB * 2 ); - else if ( availableRamB >= 4 GiB && availableRamB < 8 GiB ) - suggestedSwapSizeB = 8 GiB; + if ( availableRamB < 4_GiB ) + suggestedSwapSizeB = qMax( 2_GiB, availableRamB * 2 ); + else if ( availableRamB >= 4_GiB && availableRamB < 8_GiB ) + suggestedSwapSizeB = 8_GiB; else suggestedSwapSizeB = availableRamB; @@ -73,14 +78,14 @@ swapSuggestion( const qint64 availableSpaceB ) } else //if we don't care about suspend to disk { - if ( availableRamB < 2 GiB ) - suggestedSwapSizeB = qMax( 2 GiB, availableRamB * 2 ); - else if ( availableRamB >= 2 GiB && availableRamB < 8 GiB ) + if ( availableRamB < 2_GiB ) + suggestedSwapSizeB = qMax( 2_GiB, availableRamB * 2 ); + else if ( availableRamB >= 2_GiB && availableRamB < 8_GiB ) suggestedSwapSizeB = availableRamB; - else if ( availableRamB >= 8 GiB && availableRamB < 64 GiB ) - suggestedSwapSizeB = availableRamB / 2; + else if ( availableRamB >= 8_GiB && availableRamB < 16_GiB ) + suggestedSwapSizeB = 8_GiB; else - suggestedSwapSizeB = 4 GiB; + suggestedSwapSizeB = 4_GiB; suggestedSwapSizeB *= overestimationFactor; @@ -98,14 +103,15 @@ swapSuggestion( const qint64 availableSpaceB ) void -doAutopartition( PartitionCoreModule* core, Device* dev ) +doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPassphrase ) { - bool isEfi = false; - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) - isEfi = true; + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); -#define MiB * static_cast< qint64 >( 1024 ) * 1024 -#define GiB * static_cast< qint64 >( 1024 ) * 1024 * 1024 + bool isEfi = PartUtils::isEfiSystem(); + + QString defaultFsType = gs->value( "defaultFileSystemType" ).toString(); + if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown ) + defaultFsType = "ext4"; // Partition sizes are expressed in MiB, should be multiples of // the logical sector size (usually 512B). @@ -122,11 +128,11 @@ doAutopartition( PartitionCoreModule* core, Device* dev ) empty_space_size = 1; } - qint64 firstFreeSector = empty_space_size MiB / dev->logicalSectorSize() + 1; + qint64 firstFreeSector = MiBtoBytes(empty_space_size) / dev->logicalSize() + 1; if ( isEfi ) { - qint64 lastSector = firstFreeSector + ( uefisys_part_size MiB / dev->logicalSectorSize() ); + qint64 lastSector = firstFreeSector + ( MiBtoBytes(uefisys_part_size) / dev->logicalSize() ); core->createPartitionTable( dev, PartitionTable::gpt ); Partition* efiPartition = KPMHelpers::createNewPartition( dev->partitionTable(), @@ -134,14 +140,13 @@ doAutopartition( PartitionCoreModule* core, Device* dev ) PartitionRole( PartitionRole::Primary ), FileSystem::Fat32, firstFreeSector, - lastSector + lastSector, + PartitionTable::FlagEsp ); PartitionInfo::setFormat( efiPartition, true ); - PartitionInfo::setMountPoint( efiPartition, Calamares::JobQueue::instance() - ->globalStorage() - ->value( "efiSystemPartition" ) + PartitionInfo::setMountPoint( efiPartition, gs->value( "efiSystemPartition" ) .toString() ); - core->createPartition( dev, efiPartition ); + core->createPartition( dev, efiPartition, PartitionTable::FlagEsp | PartitionTable::FlagBoot ); firstFreeSector = lastSector + 1; } else @@ -149,46 +154,82 @@ doAutopartition( PartitionCoreModule* core, Device* dev ) core->createPartitionTable( dev, PartitionTable::msdos ); } + const bool mayCreateSwap = !gs->value( "neverCreateSwap" ).toBool(); bool shouldCreateSwap = false; - qint64 availableSpaceB = ( dev->totalSectors() - firstFreeSector ) * dev->logicalSectorSize(); - qint64 suggestedSwapSizeB = swapSuggestion( availableSpaceB ); - qint64 requiredSpaceB = - ( Calamares::JobQueue::instance()-> - globalStorage()-> - value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) GiB + - suggestedSwapSizeB; + qint64 suggestedSwapSizeB = 0; - // If there is enough room for ESP + root + swap, create swap, otherwise don't. - shouldCreateSwap = availableSpaceB > requiredSpaceB; - - qint64 lastSectorForRoot = dev->totalSectors() - 1; //last sector of the device - if ( shouldCreateSwap ) + if ( mayCreateSwap ) { - lastSectorForRoot -= suggestedSwapSizeB / dev->logicalSectorSize() + 1; + qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize(); + suggestedSwapSizeB = swapSuggestion( availableSpaceB ); + qint64 requiredSpaceB = + GiBtoBytes( gs->value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) + + suggestedSwapSizeB; + + // If there is enough room for ESP + root + swap, create swap, otherwise don't. + shouldCreateSwap = availableSpaceB > requiredSpaceB; } - Partition* rootPartition = KPMHelpers::createNewPartition( - dev->partitionTable(), - *dev, - PartitionRole( PartitionRole::Primary ), - FileSystem::Ext4, - firstFreeSector, - lastSectorForRoot - ); + qint64 lastSectorForRoot = dev->totalLogical() - 1; //last sector of the device + if ( shouldCreateSwap ) + { + lastSectorForRoot -= suggestedSwapSizeB / dev->logicalSize() + 1; + } + + Partition* rootPartition = nullptr; + if ( luksPassphrase.isEmpty() ) + { + rootPartition = KPMHelpers::createNewPartition( + dev->partitionTable(), + *dev, + PartitionRole( PartitionRole::Primary ), + FileSystem::typeForName( defaultFsType ), + firstFreeSector, + lastSectorForRoot + ); + } + else + { + rootPartition = KPMHelpers::createNewEncryptedPartition( + dev->partitionTable(), + *dev, + PartitionRole( PartitionRole::Primary ), + FileSystem::typeForName( defaultFsType ), + firstFreeSector, + lastSectorForRoot, + luksPassphrase + ); + } PartitionInfo::setFormat( rootPartition, true ); PartitionInfo::setMountPoint( rootPartition, "/" ); core->createPartition( dev, rootPartition ); if ( shouldCreateSwap ) { - Partition* swapPartition = KPMHelpers::createNewPartition( - dev->partitionTable(), - *dev, - PartitionRole( PartitionRole::Primary ), - FileSystem::LinuxSwap, - lastSectorForRoot + 1, - dev->totalSectors() - 1 - ); + Partition* swapPartition = nullptr; + if ( luksPassphrase.isEmpty() ) + { + swapPartition = KPMHelpers::createNewPartition( + dev->partitionTable(), + *dev, + PartitionRole( PartitionRole::Primary ), + FileSystem::LinuxSwap, + lastSectorForRoot + 1, + dev->totalLogical() - 1 + ); + } + else + { + swapPartition = KPMHelpers::createNewEncryptedPartition( + dev->partitionTable(), + *dev, + PartitionRole( PartitionRole::Primary ), + FileSystem::LinuxSwap, + lastSectorForRoot + 1, + dev->totalLogical() - 1, + luksPassphrase + ); + } PartitionInfo::setFormat( swapPartition, true ); core->createPartition( dev, swapPartition ); } @@ -198,10 +239,19 @@ doAutopartition( PartitionCoreModule* core, Device* dev ) void -doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition ) +doReplacePartition( PartitionCoreModule* core, + Device* dev, + Partition* partition, + const QString& luksPassphrase ) { cDebug() << "doReplacePartition for device" << partition->partitionPath(); + QString defaultFsType = Calamares::JobQueue::instance()-> + globalStorage()-> + value( "defaultFileSystemType" ).toString(); + if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown ) + defaultFsType = "ext4"; + PartitionRole newRoles( partition->roles() ); if ( partition->roles().has( PartitionRole::Extended ) ) newRoles = PartitionRole( PartitionRole::Primary ); @@ -218,13 +268,30 @@ doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition } } - Partition* newPartition = KPMHelpers::createNewPartition( - partition->parent(), - *dev, - newRoles, - FileSystem::Ext4, - partition->firstSector(), - partition->lastSector() ); + Partition* newPartition = nullptr; + if ( luksPassphrase.isEmpty() ) + { + newPartition = KPMHelpers::createNewPartition( + partition->parent(), + *dev, + newRoles, + FileSystem::typeForName( defaultFsType ), + partition->firstSector(), + partition->lastSector() + ); + } + else + { + newPartition = KPMHelpers::createNewEncryptedPartition( + partition->parent(), + *dev, + newRoles, + FileSystem::typeForName( defaultFsType ), + partition->firstSector(), + partition->lastSector(), + luksPassphrase + ); + } PartitionInfo::setMountPoint( newPartition, "/" ); PartitionInfo::setFormat( newPartition, true ); diff --git a/src/modules/partition/core/PartitionActions.h b/src/modules/partition/core/PartitionActions.h index f1056edfd..5bdf86c76 100644 --- a/src/modules/partition/core/PartitionActions.h +++ b/src/modules/partition/core/PartitionActions.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,14 +19,37 @@ #ifndef PARTITIONACTIONS_H #define PARTITIONACTIONS_H +#include + class PartitionCoreModule; class Device; class Partition; namespace PartitionActions { -void doAutopartition( PartitionCoreModule* core, Device* dev ); -void doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition ); + +/** + * @brief doAutopartition sets up an autopartitioning operation on the given Device. + * @param core a pointer to the PartitionCoreModule instance. + * @param dev the device to wipe. + * @param luksPassphrase the passphrase for LUKS encryption (optional, default is empty). + */ +void doAutopartition( PartitionCoreModule* core, + Device* dev, + const QString& luksPassphrase = QString() ); + +/** + * @brief doReplacePartition sets up replace-partitioning with the given partition. + * @param core a pointer to the PartitionCoreModule instance. + * @param dev a pointer to the Device on which to replace a partition. + * @param partition a pointer to the Partition to be replaced. + * @param luksPassphrase the passphrase for LUKS encryption (optional, default is empty). + * @note this function also takes care of requesting PCM to delete the partition. + */ +void doReplacePartition( PartitionCoreModule* core, + Device* dev, + Partition* partition, + const QString& luksPassphrase = QString() ); } #endif // PARTITIONACTIONS_H diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index d38025e8b..a40ca1035 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,8 @@ #include "core/PartitionCoreModule.h" #include "core/BootLoaderModel.h" +#include "core/ColorUtils.h" +#include "core/DeviceList.h" #include "core/DeviceModel.h" #include "core/PartitionInfo.h" #include "core/PartitionIterator.h" @@ -53,19 +56,11 @@ #include #include -static bool -hasRootPartition( Device* device ) -{ - for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) - if ( ( *it )->mountPoint() == "/" ) - return true; - return false; -} - //- DeviceInfo --------------------------------------------- PartitionCoreModule::DeviceInfo::DeviceInfo( Device* _device ) : device( _device ) , partitionModel( new PartitionModel ) + , immutableDevice( new Device( *_device ) ) {} PartitionCoreModule::DeviceInfo::~DeviceInfo() @@ -104,46 +99,77 @@ PartitionCoreModule::PartitionCoreModule( QObject* parent ) { if ( !KPMHelpers::initKPMcore() ) qFatal( "Failed to initialize KPMcore backend" ); - FileSystemFactory::init(); - init(); } + void PartitionCoreModule::init() { - CoreBackend* backend = CoreBackendManager::self()->backend(); - auto devices = backend->scanDevices( true ); + QMutexLocker locker( &m_revertMutex ); + doInit(); +} - // Remove the device which contains / from the list - for ( auto it = devices.begin(); it != devices.end(); ) - if ( hasRootPartition( *it ) ) - it = devices.erase( it ); - else - ++it; - cDebug() << "LIST OF DETECTED DEVICES:\nnode\tcapacity\tname\tprettyName"; +void +PartitionCoreModule::doInit() +{ + FileSystemFactory::init(); + + using DeviceList = QList< Device* >; + DeviceList devices = PartUtils::getDevices( PartUtils::DeviceType::WritableOnly ); + + cDebug() << "LIST OF DETECTED DEVICES:"; + cDebug() << "node\tcapacity\tname\tprettyName"; for ( auto device : devices ) { + // Gives ownership of the Device* to the DeviceInfo object auto deviceInfo = new DeviceInfo( device ); m_deviceInfos << deviceInfo; cDebug() << device->deviceNode() << device->capacity() << device->name() << device->prettyName(); } + cDebug() << ".." << devices.count() << "devices detected."; m_deviceModel->init( devices ); // The following PartUtils::runOsprober call in turn calls PartUtils::canBeResized, // which relies on a working DeviceModel. m_osproberLines = PartUtils::runOsprober( this ); + // We perform a best effort of filling out filesystem UUIDs in m_osproberLines + // because we will need them later on in PartitionModel if partition paths + // change. + // It is a known fact that /dev/sda1-style device paths aren't persistent + // across reboots (and this doesn't affect us), but partition numbers can also + // change at runtime against our will just for shits and giggles. + // But why would that ever happen? What system could possibly be so poorly + // designed that it requires a partition path rearrangement at runtime? + // Logical partitions on an MSDOS disklabel of course. + // See DeletePartitionJob::updatePreview. for ( auto deviceInfo : m_deviceInfos ) { - deviceInfo->partitionModel->init( deviceInfo->device.data(), m_osproberLines ); + for ( auto it = PartitionIterator::begin( deviceInfo->device.data() ); + it != PartitionIterator::end( deviceInfo->device.data() ); ++it ) + { + Partition* partition = *it; + for ( auto jt = m_osproberLines.begin(); + jt != m_osproberLines.end(); ++jt ) + { + if ( jt->path == partition->partitionPath() && + partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() ) + jt->uuid = partition->fileSystem().uuid(); + } + } } + for ( auto deviceInfo : m_deviceInfos ) + deviceInfo->partitionModel->init( deviceInfo->device.data(), m_osproberLines ); + m_bootLoaderModel->init( devices ); - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) - scanForEfiSystemPartitions(); //FIXME: this should be removed in favor of - // proper KPM support for EFI + //FIXME: this should be removed in favor of + // proper KPM support for EFI + if ( PartUtils::isEfiSystem() ) + scanForEfiSystemPartitions(); } PartitionCoreModule::~PartitionCoreModule() @@ -164,7 +190,7 @@ PartitionCoreModule::bootLoaderModel() const } PartitionModel* -PartitionCoreModule::partitionModelForDevice( Device* device ) const +PartitionCoreModule::partitionModelForDevice( const Device* device ) const { DeviceInfo* info = infoForDevice( device ); Q_ASSERT( info ); @@ -173,12 +199,14 @@ PartitionCoreModule::partitionModelForDevice( Device* device ) const Device* -PartitionCoreModule::createImmutableDeviceCopy( Device* device ) +PartitionCoreModule::immutableDeviceCopy( const Device* device ) { - CoreBackend* backend = CoreBackendManager::self()->backend(); + Q_ASSERT( device ); + DeviceInfo* info = infoForDevice( device ); + if ( !info ) + return nullptr; - Device* deviceBefore = backend->scanDevice( device->deviceNode() ); - return deviceBefore; + return info->immutableDevice.data(); } @@ -202,8 +230,8 @@ PartitionCoreModule::createPartitionTable( Device* device, PartitionTable::Table } void -PartitionCoreModule::createPartition( Device *device, - Partition *partition, +PartitionCoreModule::createPartition( Device* device, + Partition* partition, PartitionTable::Flags flags ) { auto deviceInfo = infoForDevice( device ); @@ -242,8 +270,8 @@ PartitionCoreModule::deletePartition( Device* device, Partition* partition ) if ( !KPMHelpers::isPartitionFreeSpace( childPartition ) ) lst << childPartition; - for ( auto partition : lst ) - deletePartition( device, partition ); + for ( auto childPartition : lst ) + deletePartition( device, childPartition ); } QList< Calamares::job_ptr >& jobs = deviceInfo->jobs; @@ -367,14 +395,13 @@ PartitionCoreModule::jobs() const lst << info->jobs; devices << info->device.data(); } + cDebug() << "Creating FillGlobalStorageJob with bootLoader path" << m_bootLoaderInstallPath; lst << Calamares::job_ptr( new FillGlobalStorageJob( devices, m_bootLoaderInstallPath ) ); QStringList jobsDebug; foreach ( auto job, lst ) - { jobsDebug.append( job->prettyName() ); - } cDebug() << "PartitionCodeModule has been asked for jobs. About to return:" << jobsDebug.join( "\n" ); @@ -407,14 +434,14 @@ PartitionCoreModule::dumpQueue() const } -OsproberEntryList +const OsproberEntryList PartitionCoreModule::osproberEntries() const { return m_osproberLines; } void -PartitionCoreModule::refreshPartition( Device* device, Partition* partition ) +PartitionCoreModule::refreshPartition( Device* device, Partition* ) { // Keep it simple for now: reset the model. This can be improved to cause // the model to emit dataChanged() for the affected row instead, avoiding @@ -432,9 +459,11 @@ PartitionCoreModule::refresh() updateHasRootMountPoint(); updateIsDirty(); m_bootLoaderModel->update(); - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) - scanForEfiSystemPartitions(); //FIXME: this should be removed in favor of - // proper KPM support for EFI + + //FIXME: this should be removed in favor of + // proper KPM support for EFI + if ( PartUtils::isEfiSystem() ) + scanForEfiSystemPartitions(); } void PartitionCoreModule::updateHasRootMountPoint() @@ -474,29 +503,14 @@ PartitionCoreModule::scanForEfiSystemPartitions() devices.append( device ); } - //FIXME: Unfortunately right now we have to call sgdisk manually because - // the KPM submodule does not expose the ESP flag from libparted. - // The following findPartitions call and lambda should be scrapped and - // rewritten based on libKPM. -- Teo 5/2015 QList< Partition* > efiSystemPartitions = KPMHelpers::findPartitions( devices, - []( Partition* partition ) -> bool + []( Partition* partition ) -> bool { - QProcess process; - process.setProgram( "sgdisk" ); - process.setArguments( { "-i", - QString::number( partition->number() ), - partition->devicePath() } ); - process.setProcessChannelMode( QProcess::MergedChannels ); - process.start(); - if ( process.waitForFinished() ) + if ( partition->activeFlags().testFlag( PartitionTable::FlagEsp ) ) { - if ( process.readAllStandardOutput() - .contains( "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" ) ) - { - cDebug() << "Found EFI system partition at" << partition->partitionPath(); - return true; - } + cDebug() << "Found EFI system partition at" << partition->partitionPath(); + return true; } return false; } ); @@ -508,12 +522,15 @@ PartitionCoreModule::scanForEfiSystemPartitions() } PartitionCoreModule::DeviceInfo* -PartitionCoreModule::infoForDevice( Device* device ) const +PartitionCoreModule::infoForDevice( const Device* device ) const { - for ( auto deviceInfo : m_deviceInfos ) + for ( auto it = m_deviceInfos.constBegin(); + it != m_deviceInfos.constEnd(); ++it ) { - if ( deviceInfo->device.data() == device ) - return deviceInfo; + if ( ( *it )->device.data() == device ) + return *it; + if ( ( *it )->immutableDevice.data() == device ) + return *it; } return nullptr; } @@ -534,6 +551,7 @@ PartitionCoreModule::findPartitionByMountPoint( const QString& mountPoint ) cons void PartitionCoreModule::setBootLoaderInstallPath( const QString& path ) { + cDebug() << "PCM::setBootLoaderInstallPath" << path; m_bootLoaderInstallPath = path; } @@ -543,7 +561,7 @@ PartitionCoreModule::revert() QMutexLocker locker( &m_revertMutex ); qDeleteAll( m_deviceInfos ); m_deviceInfos.clear(); - init(); + doInit(); updateIsDirty(); emit reverted(); } @@ -553,9 +571,7 @@ void PartitionCoreModule::revertAllDevices() { foreach ( DeviceInfo* devInfo, m_deviceInfos ) - { revertDevice( devInfo->device.data() ); - } refresh(); } @@ -569,7 +585,7 @@ PartitionCoreModule::revertDevice( Device* dev ) return; devInfo->forgetChanges(); CoreBackend* backend = CoreBackendManager::self()->backend(); - Device *newDev = backend->scanDevice( devInfo->device->deviceNode() ); + Device* newDev = backend->scanDevice( devInfo->device->deviceNode() ); devInfo->device.reset( newDev ); devInfo->partitionModel->init( newDev, m_osproberLines ); @@ -606,9 +622,7 @@ void PartitionCoreModule::clearJobs() { foreach ( DeviceInfo* deviceInfo, m_deviceInfos ) - { deviceInfo->forgetChanges(); - } updateIsDirty(); } @@ -623,7 +637,6 @@ QList< PartitionCoreModule::SummaryInfo > PartitionCoreModule::createSummaryInfo() const { QList< SummaryInfo > lst; - CoreBackend* backend = CoreBackendManager::self()->backend(); for ( auto deviceInfo : m_deviceInfos ) { if ( !deviceInfo->isDirty() ) @@ -632,7 +645,7 @@ PartitionCoreModule::createSummaryInfo() const summaryInfo.deviceName = deviceInfo->device->name(); summaryInfo.deviceNode = deviceInfo->device->deviceNode(); - Device* deviceBefore = backend->scanDevice( deviceInfo->device->deviceNode() ); + Device* deviceBefore = deviceInfo->immutableDevice.data(); summaryInfo.partitionModelBefore = new PartitionModel; summaryInfo.partitionModelBefore->init( deviceBefore, m_osproberLines ); // Make deviceBefore a child of partitionModelBefore so that it is not diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index 75126b25a..c035670f0 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -53,6 +53,11 @@ class PartitionCoreModule : public QObject { Q_OBJECT public: + /** + * @brief The SummaryInfo struct is a wrapper for PartitionModel instances for + * a given Device. + * Each Device gets a mutable "after" model and an immutable "before" model. + */ struct SummaryInfo { QString deviceName; @@ -64,19 +69,41 @@ public: PartitionCoreModule( QObject* parent = nullptr ); ~PartitionCoreModule(); + /** + * @brief init performs a devices scan and initializes all KPMcore data + * structures. + * This function is thread safe. + */ + void init(); + + /** + * @brief deviceModel returns a model which exposes a list of available + * storage devices. + * @return the device model. + */ DeviceModel* deviceModel() const; - PartitionModel* partitionModelForDevice( Device* device ) const; + /** + * @brief partitionModelForDevice returns the PartitionModel for the given device. + * @param device the device for which to get a model. + * @return a PartitionModel which represents the partitions of a device. + */ + PartitionModel* partitionModelForDevice( const Device* device ) const; //HACK: all devices change over time, and together make up the state of the CoreModule. // However this makes it hard to show the *original* state of a device. - // With this horrible hack we rescan a single device node to create a Device object - // that contains the current state of a disk regardless of subsequent changes. - // This should probably be redone some other way. + // For each DeviceInfo we keep a second Device object that contains the + // current state of a disk regardless of subsequent changes. // -- Teo 4/2015 //FIXME: make this horrible method private. -- Teo 12/2015 - static Device* createImmutableDeviceCopy( Device* device ); + Device* immutableDeviceCopy( const Device* device ); + /** + * @brief bootLoaderModel returns a model which represents the available boot + * loader locations. + * The single BootLoaderModel instance belongs to the PCM. + * @return the BootLoaderModel. + */ QAbstractItemModel* bootLoaderModel() const; void createPartitionTable( Device* device, PartitionTable::TableType type ); @@ -94,21 +121,35 @@ public: void setBootLoaderInstallPath( const QString& path ); + /** + * @brief jobs creates and returns a list of jobs which can then apply the changes + * requested by the user. + * @return a list of jobs. + */ QList< Calamares::job_ptr > jobs() const; bool hasRootMountPoint() const; QList< Partition* > efiSystemPartitions() const; + + /** + * @brief findPartitionByMountPoint returns a Partition* for a given mount point. + * @param mountPoint the mount point to find a partition for. + * @return a pointer to a Partition object. + * Note that this function looks for partitions in live devices (the "proposed" + * state), not the immutable copies. Comparisons with Partition* objects that + * refer to immutable Device*s will fail. + */ Partition* findPartitionByMountPoint( const QString& mountPoint ) const; - void revert(); - void revertAllDevices(); - void revertDevice( Device* dev ); - void asyncRevertDevice( Device* dev, std::function< void() > callback ); + void revert(); // full revert, thread safe, calls doInit + void revertAllDevices(); // convenience function, calls revertDevice + void revertDevice( Device* dev ); // rescans a single Device and updates DeviceInfo + void asyncRevertDevice( Device* dev, std::function< void() > callback ); //like revertDevice, but asynchronous - void clearJobs(); + void clearJobs(); // only clear jobs, the Device* states are preserved - bool isDirty(); + bool isDirty(); // true if there are pending changes, otherwise false /** * To be called when a partition has been altered, but only for changes @@ -123,9 +164,9 @@ public: */ QList< SummaryInfo > createSummaryInfo() const; - void dumpQueue() const; + void dumpQueue() const; // debug output - OsproberEntryList osproberEntries() const; + const OsproberEntryList osproberEntries() const; // os-prober data structure, cached Q_SIGNALS: void hasRootMountPointChanged( bool value ); @@ -145,6 +186,7 @@ private: ~DeviceInfo(); QScopedPointer< Device > device; QScopedPointer< PartitionModel > partitionModel; + const QScopedPointer< Device > immutableDevice; QList< Calamares::job_ptr > jobs; void forgetChanges(); @@ -159,12 +201,12 @@ private: bool m_isDirty = false; QString m_bootLoaderInstallPath; - void init(); + void doInit(); void updateHasRootMountPoint(); void updateIsDirty(); void scanForEfiSystemPartitions(); - DeviceInfo* infoForDevice( Device* ) const; + DeviceInfo* infoForDevice( const Device* ) const; OsproberEntryList m_osproberLines; diff --git a/src/modules/partition/core/PartitionIterator.cpp b/src/modules/partition/core/PartitionIterator.cpp index 097e8d4aa..26fa1df8c 100644 --- a/src/modules/partition/core/PartitionIterator.cpp +++ b/src/modules/partition/core/PartitionIterator.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -83,6 +84,9 @@ PartitionIterator::operator!=( const PartitionIterator& other ) const PartitionIterator PartitionIterator::begin( Device* device ) { + if ( !device ) + return PartitionIterator( nullptr ); + Q_ASSERT(device); PartitionTable* table = device->partitionTable(); if ( !table ) return PartitionIterator( nullptr ); @@ -105,6 +109,8 @@ PartitionIterator::begin( PartitionTable* table ) PartitionIterator PartitionIterator::end( Device* device ) { + if ( !device ) + return PartitionIterator( nullptr ); PartitionTable* table = device->partitionTable(); if ( !table ) return PartitionIterator( nullptr ); diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index 6e3a2d885..648c57932 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -148,7 +148,7 @@ PartitionModel::data( const QModelIndex& index, int role ) const return PartitionInfo::mountPoint( partition ); if ( col == SizeColumn ) { - qint64 size = ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSectorSize(); + qint64 size = ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSize(); return KFormat().formatByteSize( size ); } cDebug() << "Unknown column" << col; @@ -175,12 +175,12 @@ PartitionModel::data( const QModelIndex& index, int role ) const } } QString prettyFileSystem = KPMHelpers::prettyNameForFileSystemType( partition->fileSystem().type() ); - qint64 size = ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSectorSize(); + qint64 size = ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSize(); QString prettySize = KFormat().formatByteSize( size ); return QVariant(name + " " + prettyFileSystem + " " + prettySize); } case SizeRole: - return ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSectorSize(); + return ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSize(); case IsFreeSpaceRole: return KPMHelpers::isPartitionFreeSpace( partition ); @@ -205,24 +205,39 @@ PartitionModel::data( const QModelIndex& index, int role ) const // Osprober roles: case OsproberNameRole: foreach ( const OsproberEntry& osproberEntry, m_osproberEntries ) - if ( osproberEntry.path == partition->partitionPath() ) + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() && + osproberEntry.uuid == partition->fileSystem().uuid() ) return osproberEntry.prettyName; return QVariant(); case OsproberPathRole: foreach ( const OsproberEntry& osproberEntry, m_osproberEntries ) - if ( osproberEntry.path == partition->partitionPath() ) + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() && + osproberEntry.uuid == partition->fileSystem().uuid() ) return osproberEntry.path; return QVariant(); case OsproberCanBeResizedRole: foreach ( const OsproberEntry& osproberEntry, m_osproberEntries ) - if ( osproberEntry.path == partition->partitionPath() ) + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() && + osproberEntry.uuid == partition->fileSystem().uuid() ) return osproberEntry.canBeResized; return QVariant(); case OsproberRawLineRole: foreach ( const OsproberEntry& osproberEntry, m_osproberEntries ) - if ( osproberEntry.path == partition->partitionPath() ) + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() && + osproberEntry.uuid == partition->fileSystem().uuid() ) return osproberEntry.line; return QVariant(); + case OsproberHomePartitionPathRole: + foreach ( const OsproberEntry& osproberEntry, m_osproberEntries ) + if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone && + !partition->fileSystem().uuid().isEmpty() && + osproberEntry.uuid == partition->fileSystem().uuid() ) + return osproberEntry.homePath; + return QVariant(); // end Osprober roles. default: diff --git a/src/modules/partition/core/PartitionModel.h b/src/modules/partition/core/PartitionModel.h index 77a14f9d5..71764d8e9 100644 --- a/src/modules/partition/core/PartitionModel.h +++ b/src/modules/partition/core/PartitionModel.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -77,7 +78,8 @@ public: OsproberNameRole, OsproberPathRole, OsproberCanBeResizedRole, - OsproberRawLineRole + OsproberRawLineRole, + OsproberHomePartitionPathRole }; enum Column @@ -89,7 +91,7 @@ public: ColumnCount // Must remain last }; - PartitionModel( QObject* parent = 0 ); + PartitionModel( QObject* parent = nullptr ); /** * device must remain alive for the life of PartitionModel */ diff --git a/src/modules/partition/gui/AlongsidePage.cpp b/src/modules/partition/gui/AlongsidePage.cpp deleted file mode 100644 index 2271691dd..000000000 --- a/src/modules/partition/gui/AlongsidePage.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2014-2015, Teo Mrnjavac - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#include "AlongsidePage.h" - -#include "core/ColorUtils.h" -#include "core/PartitionCoreModule.h" -#include "core/DeviceModel.h" -#include "core/KPMHelpers.h" -#include "core/PartitionInfo.h" -#include "core/PartitionIterator.h" -#include "gui/PartitionSplitterWidget.h" -#include "gui/PartitionBarsView.h" -#include "gui/PartitionLabelsView.h" - -#include "JobQueue.h" -#include "GlobalStorage.h" -#include "utils/Logger.h" -#include "utils/CalamaresUtilsGui.h" -#include "utils/Retranslator.h" -#include "Branding.h" - -// KPMcore -#include -#include - -#include -#include -#include -#include - - -AlongsidePage::AlongsidePage( QWidget* parent ) - : QWidget( parent ) - , m_nextEnabled( false ) - , m_core( nullptr ) -{ - QVBoxLayout* mainLayout = new QVBoxLayout; - setLayout( mainLayout ); - - QHBoxLayout* partitionsComboLayout = new QHBoxLayout; - mainLayout->addLayout( partitionsComboLayout ); - - QLabel* partitionsLabel = new QLabel; - partitionsComboLayout->addWidget( partitionsLabel ); - - m_partitionsComboBox = new QComboBox; - partitionsComboLayout->addWidget( m_partitionsComboBox ); - partitionsLabel->setBuddy( m_partitionsComboBox ); - - partitionsComboLayout->addStretch(); - - m_previewWidget = new PartitionBarsView; - m_previewLabels = new PartitionLabelsView; - mainLayout->addWidget( m_previewWidget ); - mainLayout->addWidget( m_previewLabels ); - - QLabel* allocateSpaceLabel = new QLabel(); - mainLayout->addWidget( allocateSpaceLabel ); - - CALAMARES_RETRANSLATE( - partitionsLabel->setText( tr( "Choose partition to shrink:" ) ); - allocateSpaceLabel->setText( tr( "Allocate drive space by dragging the divider below:" ) ); - ) - - m_splitterWidget = new PartitionSplitterWidget; - mainLayout->addWidget( m_splitterWidget ); - - m_sizeLabel = new QLabel; - m_sizeLabel->setWordWrap( true ); - mainLayout->addWidget( m_sizeLabel ); - - QBoxLayout* efiLayout = new QHBoxLayout; - m_efiLabel = new QLabel; - m_efiComboBox = new QComboBox; - efiLayout->addWidget( m_efiLabel ); - efiLayout->addWidget( m_efiComboBox ); - m_efiLabel->setBuddy( m_efiComboBox ); - efiLayout->addStretch(); - mainLayout->addLayout( efiLayout ); - - m_efiLabel->hide(); - m_efiComboBox->hide(); - - m_isEfi = QDir( "/sys/firmware/efi/efivars" ).exists(); - - mainLayout->addStretch(); -} - - -void -AlongsidePage::init( PartitionCoreModule* core ) -{ - if ( m_core != core ) - m_core = core; - - m_partitionsComboBox->clear(); - - connect( m_partitionsComboBox, - static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), - this, &AlongsidePage::onPartitionSelected ); - - connect( m_splitterWidget, &PartitionSplitterWidget::partitionResized, - this, [ this ]( const QString& path, qint64 size, qint64 sizeNext ) - { - m_sizeLabel->setText( tr( "With this operation, the partition %1 which contains " - "%4 will be shrunk " - "to %2MB and a new %3MB partition will be created for %5." ) - .arg( path ) - .arg( size / ( 1024 * 1024 ) ) - .arg( sizeNext / ( 1024 * 1024 ) ) - .arg( m_partitionsComboBox->currentText() ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ) ); - } ); - - foreach ( const OsproberEntry& e, m_core->osproberEntries() ) - { - if ( e.canBeResized ) - m_partitionsComboBox->addItem( e.prettyName + " (" + e.path + ")", e.path ); - } - setNextEnabled( true ); -} - - -void -AlongsidePage::onPartitionSelected( int comboBoxIndex ) -{ - QString path = m_partitionsComboBox->itemData( comboBoxIndex ).toString(); - cDebug() << "Current index changed:" << path; - - DeviceModel* dm = m_core->deviceModel(); - for ( int i = 0; i < dm->rowCount(); ++i ) - { - Device* dev = dm->deviceForIndex( dm->index( i ) ); - Partition* candidate = KPMHelpers::findPartitionByPath( { dev }, path ); - if ( candidate ) - { - // store candidate->partitionPath() here! - - bool ok = false; - double requiredStorageGB = Calamares::JobQueue::instance() - ->globalStorage() - ->value( "requiredStorageGB" ) - .toDouble( &ok ); - - qint64 usedStorageB = candidate->sectorsUsed() * dev->logicalSectorSize(); - qint64 requiredStorageB = ( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024; - - // set up splitter widget here, then set up the split position - - Device* deviceBefore = m_core->createImmutableDeviceCopy( dev ); - - PartitionModel* partitionModelBefore = new PartitionModel; - partitionModelBefore->init( deviceBefore, m_core->osproberEntries() ); - deviceBefore->setParent( partitionModelBefore ); - partitionModelBefore->setParent( m_previewWidget ); - - m_previewWidget->setModel( partitionModelBefore ); - m_previewLabels->setModel( partitionModelBefore ); - m_splitterWidget->init( dev ); - - m_splitterWidget->setSplitPartition( candidate->partitionPath(), - candidate->used() * 1.1, - candidate->capacity() - requiredStorageB, - candidate->capacity() / 2, - Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ); - - m_splitterWidget->setFixedHeight( qMax< int >( CalamaresUtils::defaultFontHeight() * 1.5, 30 ) ); - - m_efiComboBox->hide(); - m_efiLabel->hide(); - - if ( m_isEfi ) - { - QList< Partition* > efiSystemPartitions = m_core->efiSystemPartitions(); - m_efiLabel->show(); - - if ( efiSystemPartitions.count() == 0 ) - { - m_efiLabel->setText( - tr( "An EFI system partition cannot be found anywhere " - "on this system. Please go back and use manual " - "partitioning to set up %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); - setNextEnabled( false ); - } - else if ( efiSystemPartitions.count() == 1 ) - { - m_efiLabel->setText( - tr( "The EFI system partition at %1 will be used for " - "starting %2." ) - .arg( efiSystemPartitions.first()->partitionPath() ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); - setNextEnabled( true ); - } - else - { - m_efiComboBox->show(); - m_efiLabel->setText( tr( "EFI system partition:" ) ); - for ( int i = 0; i < efiSystemPartitions.count(); ++i ) - { - Partition* efiPartition = efiSystemPartitions.at( i ); - m_efiComboBox->addItem( efiPartition->partitionPath(), i ); - if ( efiPartition->devicePath() == candidate->devicePath() && - efiPartition->number() == 1 ) - m_efiComboBox->setCurrentIndex( i ); - } - setNextEnabled( true ); - } - } - else - { - setNextEnabled( true ); - } - return; - } - } -} - - -bool -AlongsidePage::isNextEnabled() const -{ - return m_nextEnabled; -} - - -void -AlongsidePage::applyChanges() -{ - m_core->revert(); - - Q_ASSERT( m_splitterWidget->splitPartitionSize() >= 0 ); - Q_ASSERT( m_splitterWidget->newPartitionSize() >= 0 ); - - - QString path = m_partitionsComboBox->currentData().toString(); - - DeviceModel* dm = m_core->deviceModel(); - for ( int i = 0; i < dm->rowCount(); ++i ) - { - Device* dev = dm->deviceForIndex( dm->index( i ) ); - Partition* candidate = KPMHelpers::findPartitionByPath( { dev }, path ); - if ( candidate ) - { - qint64 firstSector = candidate->firstSector(); - qint64 oldLastSector = candidate->lastSector(); - qint64 newLastSector = m_splitterWidget->splitPartitionSize() / - dev->logicalSectorSize(); - - m_core->resizePartition( dev, candidate, firstSector, newLastSector ); - Partition* newPartition = KPMHelpers::createNewPartition( - candidate->parent(), - *dev, - candidate->roles(), - FileSystem::Ext4, - newLastSector + 1, - oldLastSector ); - PartitionInfo::setMountPoint( newPartition, "/" ); - PartitionInfo::setFormat( newPartition, true ); - - m_core->createPartition( dev, newPartition ); - m_core->setBootLoaderInstallPath( dev->deviceNode() ); - - if ( m_isEfi ) - { - QList< Partition* > efiSystemPartitions = m_core->efiSystemPartitions(); - if ( efiSystemPartitions.count() == 1 ) - { - PartitionInfo::setMountPoint( - efiSystemPartitions.first(), - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "efiSystemPartition" ).toString() ); - } - else if ( efiSystemPartitions.count() > 1 ) - { - PartitionInfo::setMountPoint( - efiSystemPartitions.at( m_efiComboBox->currentIndex() ), - Calamares::JobQueue::instance()-> - globalStorage()-> - value( "efiSystemPartition" ).toString() ); - } - } - - m_core->dumpQueue(); - - break; - } - } -} - - -void -AlongsidePage::setNextEnabled( bool enabled ) -{ - if ( enabled == m_nextEnabled ) - return; - - m_nextEnabled = enabled; - emit nextStatusChanged( enabled ); -} - diff --git a/src/modules/partition/gui/AlongsidePage.h b/src/modules/partition/gui/AlongsidePage.h deleted file mode 100644 index cb02af646..000000000 --- a/src/modules/partition/gui/AlongsidePage.h +++ /dev/null @@ -1,72 +0,0 @@ -/* === This file is part of Calamares - === - * - * Copyright 2014-2015, Teo Mrnjavac - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . - */ - -#ifndef ALONGSIDEPAGE_H -#define ALONGSIDEPAGE_H - -#include - -#include "core/OsproberEntry.h" - -class QComboBox; -class QLabel; -class PartitionCoreModule; -class PartitionSplitterWidget; -class Partition; -class PartitionBarsView; -class PartitionLabelsView; -class Device; - -class AlongsidePage : public QWidget -{ - Q_OBJECT -public: - explicit AlongsidePage( QWidget* parent = nullptr ); - - void init( PartitionCoreModule* core ); - - bool isNextEnabled() const; - - void applyChanges(); - -signals: - void nextStatusChanged( bool ); - -private slots: - void onPartitionSelected( int comboBoxIndex ); - -private: - void setNextEnabled( bool enabled ); - - QComboBox* m_partitionsComboBox; - PartitionSplitterWidget* m_splitterWidget; - PartitionBarsView* m_previewWidget; - PartitionLabelsView* m_previewLabels; - QLabel* m_sizeLabel; - - QLabel* m_efiLabel; - QComboBox* m_efiComboBox; - - PartitionCoreModule* m_core; - - bool m_isEfi; - - bool m_nextEnabled; -}; - -#endif // ALONGSIDEPAGE_H diff --git a/src/modules/partition/gui/BootInfoWidget.cpp b/src/modules/partition/gui/BootInfoWidget.cpp index 605144271..cb89432b0 100644 --- a/src/modules/partition/gui/BootInfoWidget.cpp +++ b/src/modules/partition/gui/BootInfoWidget.cpp @@ -18,8 +18,10 @@ #include "BootInfoWidget.h" +#include "core/PartUtils.h" -#include +#include "utils/CalamaresUtilsGui.h" +#include "utils/Retranslator.h" #include #include @@ -58,18 +60,20 @@ BootInfoWidget::BootInfoWidget( QWidget* parent ) m_bootIcon->setPalette( palette ); m_bootLabel->setPalette( palette ); + CALAMARES_RETRANSLATE( retranslateUi(); ) +} + +void +BootInfoWidget::retranslateUi() +{ m_bootIcon->setToolTip( tr( "The boot environment of this system.

" "Older x86 systems only support BIOS.
" "Modern systems usually use EFI, but " "may also show up as BIOS if started in compatibility " "mode." ) ); - bool isEfi = false; - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) - isEfi = true; - QString bootToolTip; - if ( isEfi ) + if ( PartUtils::isEfiSystem() ) { m_bootLabel->setText( "EFI " ); bootToolTip = tr( "This system was started with an EFI " diff --git a/src/modules/partition/gui/BootInfoWidget.h b/src/modules/partition/gui/BootInfoWidget.h index b8012b361..ac70a7b9a 100644 --- a/src/modules/partition/gui/BootInfoWidget.h +++ b/src/modules/partition/gui/BootInfoWidget.h @@ -30,6 +30,9 @@ class BootInfoWidget : public QWidget public: explicit BootInfoWidget( QWidget* parent = nullptr ); +public slots: + void retranslateUi(); + private: QLabel* m_bootIcon; QLabel* m_bootLabel; diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 38e5ba77f..b4e9b0c9f 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -68,23 +69,33 @@ */ ChoicePage::ChoicePage( QWidget* parent ) : QWidget( parent ) - , m_choice( NoChoice ) , m_nextEnabled( false ) , m_core( nullptr ) + , m_choice( NoChoice ) + , m_isEfi( false ) , m_grp( nullptr ) , m_alongsideButton( nullptr ) , m_eraseButton( nullptr ) , m_replaceButton( nullptr ) , m_somethingElseButton( nullptr ) , m_deviceInfoWidget( nullptr ) - , m_lastSelectedDeviceIndex( -1 ) - , m_isEfi( false ) , m_beforePartitionBarsView( nullptr ) , m_beforePartitionLabelsView( nullptr ) , m_bootloaderComboBox( nullptr ) + , m_lastSelectedDeviceIndex( -1 ) + , m_enableEncryptionWidget( true ) { setupUi( this ); + m_defaultFsType = Calamares::JobQueue::instance()-> + globalStorage()-> + value( "defaultFileSystemType" ).toString(); + m_enableEncryptionWidget = Calamares::JobQueue::instance()-> + globalStorage()-> + value( "enableLuksAutomatedPartitioning" ).toBool(); + if ( FileSystem::typeForName( m_defaultFsType ) == FileSystem::Unknown ) + m_defaultFsType = "ext4"; + // Set up drives combo m_mainLayout->setDirection( QBoxLayout::TopToBottom ); m_drivesLayout->setDirection( QBoxLayout::LeftToRight ); @@ -121,7 +132,9 @@ ChoicePage::ChoicePage( QWidget* parent ) m_previewAfterFrame->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding ); m_previewAfterLabel->hide(); m_previewAfterFrame->hide(); - // end + m_encryptWidget->hide(); + m_reuseHomeCheckBox->hide(); + Calamares::JobQueue::instance()->globalStorage()->insert( "reuseHome", false ); } @@ -129,17 +142,11 @@ ChoicePage::~ChoicePage() {} -/** - * @brief ChoicePage::init runs when the PartitionViewStep and the PartitionCoreModule are - * ready. Sets up the rest of the UI based on os-prober output. - * @param core the PartitionCoreModule pointer. - * @param osproberEntries the output of os-prober, cleaned up and structured. - */ void ChoicePage::init( PartitionCoreModule* core ) { m_core = core; - m_isEfi = QDir( "/sys/firmware/efi/efivars" ).exists(); + m_isEfi = PartUtils::isEfiSystem(); setupChoices(); @@ -157,6 +164,11 @@ ChoicePage::init( PartitionCoreModule* core ) static_cast< void ( QComboBox::* )( int ) >( &QComboBox::currentIndexChanged ), this, &ChoicePage::applyDeviceChoice ); + connect( m_encryptWidget, &EncryptWidget::stateChanged, + this, &ChoicePage::onEncryptWidgetStateChanged ); + connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, + this, &ChoicePage::onHomeCheckBoxStateChanged ); + ChoicePage::applyDeviceChoice(); } @@ -238,14 +250,8 @@ ChoicePage::setupChoices() if ( checked ) // An action was picked. { m_choice = static_cast< Choice >( id ); - if ( m_choice == Replace ) - { - setNextEnabled( false ); - } - else - { - setNextEnabled( true ); - } + updateNextEnabled(); + emit actionChosen(); } else // An action was unpicked, either on its own or because of another selection. @@ -253,7 +259,8 @@ ChoicePage::setupChoices() if ( m_grp->checkedButton() == nullptr ) // If no other action is chosen, we must { // set m_choice to NoChoice and reset previews. m_choice = NoChoice; - setNextEnabled( false ); + updateNextEnabled(); + emit actionChosen(); } } @@ -369,14 +376,18 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice ) } ), [ = ] { - PartitionActions::doAutopartition( m_core, selectedDevice() ); + PartitionActions::doAutopartition( m_core, + selectedDevice(), + m_encryptWidget->passphrase() ); emit deviceChosen(); }, this ); } else { - PartitionActions::doAutopartition( m_core, selectedDevice() ); + PartitionActions::doAutopartition( m_core, + selectedDevice(), + m_encryptWidget->passphrase() ); emit deviceChosen(); } @@ -392,10 +403,10 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice ) []{}, this ); } - setNextEnabled( !m_beforePartitionBarsView->selectionModel()->selectedRows().isEmpty() ); + updateNextEnabled(); connect( m_beforePartitionBarsView->selectionModel(), SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), - this, SLOT( doReplaceSelectedPartition( QModelIndex, QModelIndex ) ), + this, SLOT( onPartitionToReplaceSelected( QModelIndex, QModelIndex ) ), Qt::UniqueConnection ); break; @@ -412,10 +423,11 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice ) // We need to reupdate after reverting because the splitter widget is // not a true view. updateActionChoicePreview( currentChoice() ); + updateNextEnabled(); }, this ); } - setNextEnabled( !m_beforePartitionBarsView->selectionModel()->selectedRows().isEmpty() ); + updateNextEnabled(); connect( m_beforePartitionBarsView->selectionModel(), SIGNAL( currentRowChanged( QModelIndex, QModelIndex ) ), this, SLOT( doAlongsideSetupSplitter( QModelIndex, QModelIndex ) ), @@ -456,22 +468,59 @@ ChoicePage::doAlongsideSetupSplitter( const QModelIndex& current, ->value( "requiredStorageGB" ) .toDouble(); - qint64 requiredStorageB = ( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024; + qint64 requiredStorageB = qRound64( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024; m_afterPartitionSplitterWidget->setSplitPartition( part->partitionPath(), - part->used() * 1.1, + qRound64( part->used() * 1.1 ), part->capacity() - requiredStorageB, - part->capacity() / 2, - Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ); - - setNextEnabled( m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() ); + part->capacity() / 2 ); if ( m_isEfi ) setupEfiSystemPartitionSelector(); cDebug() << "Partition selected for Alongside."; + + updateNextEnabled(); +} + + +void +ChoicePage::onEncryptWidgetStateChanged() +{ + EncryptWidget::State state = m_encryptWidget->state(); + if ( m_choice == Erase ) + { + if ( state == EncryptWidget::EncryptionConfirmed || + state == EncryptWidget::EncryptionDisabled ) + applyActionChoice( m_choice ); + } + else if ( m_choice == Replace ) + { + if ( m_beforePartitionBarsView && + m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() && + ( state == EncryptWidget::EncryptionConfirmed || + state == EncryptWidget::EncryptionDisabled ) ) + { + doReplaceSelectedPartition( m_beforePartitionBarsView-> + selectionModel()-> + currentIndex() ); + } + } + updateNextEnabled(); +} + + +void +ChoicePage::onHomeCheckBoxStateChanged() +{ + if ( currentChoice() == Replace && + m_beforePartitionBarsView->selectionModel()->currentIndex().isValid() ) + { + doReplaceSelectedPartition( m_beforePartitionBarsView-> + selectionModel()-> + currentIndex() ); + } } @@ -509,8 +558,20 @@ ChoicePage::onLeave() } else // installPath is then passed to the bootloader module for MBR setup { - if ( m_bootloaderComboBox.isNull() ) - m_core->setBootLoaderInstallPath( selectedDevice()->deviceNode() ); + if ( !m_isEfi ) + { + if ( m_bootloaderComboBox.isNull() ) + { + m_core->setBootLoaderInstallPath( selectedDevice()->deviceNode() ); + } + else + { + QVariant var = m_bootloaderComboBox->currentData( BootLoaderModel::BootLoaderPathRole ); + if ( !var.isValid() ) + return; + m_core->setBootLoaderInstallPath( var.toString() ); + } + } } } @@ -521,6 +582,8 @@ ChoicePage::doAlongsideApply() Q_ASSERT( m_afterPartitionSplitterWidget->splitPartitionSize() >= 0 ); Q_ASSERT( m_afterPartitionSplitterWidget->newPartitionSize() >= 0 ); + QMutexLocker locker( &m_coreMutex ); + QString path = m_beforePartitionBarsView-> selectionModel()-> currentIndex().data( PartitionModel::PartitionPathRole ).toString(); @@ -536,16 +599,34 @@ ChoicePage::doAlongsideApply() qint64 oldLastSector = candidate->lastSector(); qint64 newLastSector = firstSector + m_afterPartitionSplitterWidget->splitPartitionSize() / - dev->logicalSectorSize(); + dev->logicalSize(); m_core->resizePartition( dev, candidate, firstSector, newLastSector ); - Partition* newPartition = KPMHelpers::createNewPartition( - candidate->parent(), - *dev, - candidate->roles(), - FileSystem::Ext4, - newLastSector + 2, // * - oldLastSector ); + Partition* newPartition = nullptr; + QString luksPassphrase = m_encryptWidget->passphrase(); + if ( luksPassphrase.isEmpty() ) + { + newPartition = KPMHelpers::createNewPartition( + candidate->parent(), + *dev, + candidate->roles(), + FileSystem::typeForName( m_defaultFsType ), + newLastSector + 2, // * + oldLastSector + ); + } + else + { + newPartition = KPMHelpers::createNewEncryptedPartition( + candidate->parent(), + *dev, + candidate->roles(), + FileSystem::typeForName( m_defaultFsType ), + newLastSector + 2, // * + oldLastSector, + luksPassphrase + ); + } PartitionInfo::setMountPoint( newPartition, "/" ); PartitionInfo::setFormat( newPartition, true ); // * for some reason ped_disk_add_partition refuses to create a new partition @@ -563,14 +644,33 @@ ChoicePage::doAlongsideApply() void -ChoicePage::doReplaceSelectedPartition( const QModelIndex& current, - const QModelIndex& previous ) +ChoicePage::onPartitionToReplaceSelected( const QModelIndex& current, + const QModelIndex& previous ) { Q_UNUSED( previous ); if ( !current.isValid() ) return; - ScanningDialog::run( QtConcurrent::run( [ = ] + // Reset state on selection regardless of whether this will be used. + m_reuseHomeCheckBox->setChecked( false ); + + doReplaceSelectedPartition( current ); +} + + +void +ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) +{ + if ( !current.isValid() ) + return; + + QString* homePartitionPath = new QString(); + bool doReuseHomePartition = m_reuseHomeCheckBox->isChecked(); + + // NOTE: using by-ref captures because we need to write homePartitionPath and + // doReuseHomePartition *after* the device revert, for later use. + ScanningDialog::run( QtConcurrent::run( + [ this, current ]( QString* homePartitionPath, bool doReuseHomePartition ) { QMutexLocker locker( &m_coreMutex ); @@ -579,29 +679,108 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current, m_core->revertDevice( selectedDevice() ); } - // TODO: get the selected partition in the immutable model with PartitionPtrRole, - // check KPMHelpers::isPartitionFreeSpace, if true then don't replace but - // just m_core->createPartition for the same first/last sector as the - // free space "partition" in the immutable model. - // Also set parent correctly (see PartitionActions::doReplacePartition) - // as well as mount point and format. + // if the partition is unallocated(free space), we don't replace it but create new one + // with the same first and last sector + Partition* selectedPartition = + static_cast< Partition* >( current.data( PartitionModel::PartitionPtrRole ) + .value< void* >() ); + if ( KPMHelpers::isPartitionFreeSpace( selectedPartition ) ) + { + //NOTE: if the selected partition is free space, we don't deal with + // a separate /home partition at all because there's no existing + // rootfs to read it from. + PartitionRole newRoles = PartitionRole( PartitionRole::Primary ); + PartitionNode* newParent = selectedDevice()->partitionTable(); - // We can't use the PartitionPtrRole because we need to make changes to the - // main DeviceModel, not the immutable copy. - QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); - Partition* partition = KPMHelpers::findPartitionByPath( { selectedDevice() }, - partPath ); - if ( partition ) - PartitionActions::doReplacePartition( m_core, - selectedDevice(), - partition ); - } ), - [=] + if ( selectedPartition->parent() ) + { + Partition* parent = dynamic_cast< Partition* >( selectedPartition->parent() ); + if ( parent && parent->roles().has( PartitionRole::Extended ) ) + { + newRoles = PartitionRole( PartitionRole::Logical ); + newParent = KPMHelpers::findPartitionByPath( { selectedDevice() }, parent->partitionPath() ); + } + } + + Partition* newPartition = nullptr; + if ( m_encryptWidget->state() == EncryptWidget::EncryptionConfirmed ) + { + newPartition = KPMHelpers::createNewEncryptedPartition( + newParent, + *selectedDevice(), + newRoles, + FileSystem::typeForName( m_defaultFsType ), + selectedPartition->firstSector(), + selectedPartition->lastSector(), + m_encryptWidget->passphrase() ); + } + else + { + newPartition = KPMHelpers::createNewPartition( + newParent, + *selectedDevice(), + newRoles, + FileSystem::typeForName( m_defaultFsType ), + selectedPartition->firstSector(), + selectedPartition->lastSector() ); + } + + PartitionInfo::setMountPoint( newPartition, "/" ); + PartitionInfo::setFormat( newPartition, true ); + + m_core->createPartition( selectedDevice(), newPartition); + } + else + { + // We can't use the PartitionPtrRole because we need to make changes to the + // main DeviceModel, not the immutable copy. + QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); + selectedPartition = KPMHelpers::findPartitionByPath( { selectedDevice() }, + partPath ); + if ( selectedPartition ) + { + // Find out is the selected partition has a rootfs. If yes, then make the + // m_reuseHomeCheckBox visible and set its text to something meaningful. + homePartitionPath->clear(); + for ( const OsproberEntry& osproberEntry : m_core->osproberEntries() ) + if ( osproberEntry.path == partPath ) + *homePartitionPath = osproberEntry.homePath; + if ( homePartitionPath->isEmpty() ) + doReuseHomePartition = false; + + PartitionActions::doReplacePartition( m_core, + selectedDevice(), + selectedPartition, + m_encryptWidget->passphrase() ); + Partition* homePartition = KPMHelpers::findPartitionByPath( { selectedDevice() }, + *homePartitionPath ); + + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); + if ( homePartition && doReuseHomePartition ) + { + PartitionInfo::setMountPoint( homePartition, "/home" ); + gs->insert( "reuseHome", true ); + } + else + { + gs->insert( "reuseHome", false ); + } + } + } + }, homePartitionPath, doReuseHomePartition ), + [ = ] { + m_reuseHomeCheckBox->setVisible( !homePartitionPath->isEmpty() ); + if ( !homePartitionPath->isEmpty() ) + m_reuseHomeCheckBox->setText( tr( "Reuse %1 as home partition for %2." ) + .arg( *homePartitionPath ) + .arg( *Calamares::Branding::ShortProductName ) ); + delete homePartitionPath; + if ( m_isEfi ) setupEfiSystemPartitionSelector(); - setNextEnabled( !m_beforePartitionBarsView->selectionModel()->selectedRows().isEmpty() ); + updateNextEnabled(); if ( !m_bootloaderComboBox.isNull() && m_bootloaderComboBox->currentIndex() < 0 ) m_bootloaderComboBox->setCurrentIndex( m_lastSelectedDeviceIndex ); @@ -626,9 +805,12 @@ ChoicePage::updateDeviceStatePreview() cDebug() << "Updating partitioning state widgets."; qDeleteAll( m_previewBeforeFrame->children() ); - m_previewBeforeFrame->layout()->deleteLater(); - QVBoxLayout* layout = new QVBoxLayout; + auto layout = m_previewBeforeFrame->layout(); + if ( layout ) + layout->deleteLater(); // Doesn't like nullptr + + layout = new QVBoxLayout; m_previewBeforeFrame->setLayout( layout ); CalamaresUtils::unmarginLayout( layout ); layout->setSpacing( 6 ); @@ -642,14 +824,14 @@ ChoicePage::updateDeviceStatePreview() m_beforePartitionLabelsView = new PartitionLabelsView( m_previewBeforeFrame ); m_beforePartitionLabelsView->setExtendedPartitionHidden( mode == PartitionBarsView::NoNestedPartitions ); - Device* deviceBefore = m_core->createImmutableDeviceCopy( currentDevice ); + Device* deviceBefore = m_core->immutableDeviceCopy( currentDevice ); PartitionModel* model = new PartitionModel( m_beforePartitionBarsView ); model->init( deviceBefore, m_core->osproberEntries() ); // The QObject parents tree is meaningful for memory management here, // see qDeleteAll above. - deviceBefore->setParent( model ); + deviceBefore->setParent( model ); // Can't reparent across threads model->setParent( m_beforePartitionBarsView ); m_beforePartitionBarsView->setModel( model ); @@ -658,7 +840,8 @@ ChoicePage::updateDeviceStatePreview() // Make the bars and labels view use the same selectionModel. auto sm = m_beforePartitionLabelsView->selectionModel(); m_beforePartitionLabelsView->setSelectionModel( m_beforePartitionBarsView->selectionModel() ); - sm->deleteLater(); + if ( sm ) + sm->deleteLater(); switch ( m_choice ) { @@ -694,7 +877,10 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) cDebug() << "Updating partitioning preview widgets."; qDeleteAll( m_previewAfterFrame->children() ); - m_previewAfterFrame->layout()->deleteLater(); + + auto oldlayout = m_previewAfterFrame->layout(); + if ( oldlayout ) + oldlayout->deleteLater(); QVBoxLayout* layout = new QVBoxLayout; m_previewAfterFrame->setLayout( layout ); @@ -706,10 +892,15 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) PartitionBarsView::DrawNestedPartitions : PartitionBarsView::NoNestedPartitions; + m_reuseHomeCheckBox->hide(); + Calamares::JobQueue::instance()->globalStorage()->insert( "reuseHome", false ); + switch ( choice ) { case Alongside: { + if ( m_enableEncryptionWidget ) + m_encryptWidget->show(); m_previewBeforeLabel->setText( tr( "Current:" ) ); m_selectLabel->setText( tr( "Select a partition to shrink, " "then drag the bottom bar to resize" ) ); @@ -723,15 +914,17 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) layout->addWidget( sizeLabel ); sizeLabel->setWordWrap( true ); connect( m_afterPartitionSplitterWidget, &PartitionSplitterWidget::partitionResized, - this, [ this, sizeLabel ]( const QString& path, qint64 size, qint64 sizeNext ) + this, [ this, sizeLabel ]( const QString& path, + qint64 size, + qint64 sizeNext ) { + Q_UNUSED( path ) sizeLabel->setText( tr( "%1 will be shrunk to %2MB and a new " "%3MB partition will be created for %4." ) .arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() ) .arg( size / ( 1024 * 1024 ) ) .arg( sizeNext / ( 1024 * 1024 ) ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); + .arg( *Calamares::Branding::ShortProductName ) ); } ); m_previewAfterFrame->show(); @@ -739,7 +932,10 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) SelectionFilter filter = [ this ]( const QModelIndex& index ) { - return PartUtils::canBeResized( (Partition*)( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); + return PartUtils::canBeResized( + static_cast< Partition* >( + index.data( PartitionModel::PartitionPtrRole ) + .value< void* >() ) ); }; m_beforePartitionBarsView->setSelectionFilter( filter ); m_beforePartitionLabelsView->setSelectionFilter( filter ); @@ -749,13 +945,14 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) case Erase: case Replace: { + if ( m_enableEncryptionWidget ) + m_encryptWidget->show(); m_previewBeforeLabel->setText( tr( "Current:" ) ); m_afterPartitionBarsView = new PartitionBarsView( m_previewAfterFrame ); m_afterPartitionBarsView->setNestedPartitionsMode( mode ); m_afterPartitionLabelsView = new PartitionLabelsView( m_previewAfterFrame ); m_afterPartitionLabelsView->setExtendedPartitionHidden( mode == PartitionBarsView::NoNestedPartitions ); - m_afterPartitionLabelsView->setCustomNewRootLabel( Calamares::Branding::instance()-> - string( Calamares::Branding::BootloaderEntryName ) ); + m_afterPartitionLabelsView->setCustomNewRootLabel( *Calamares::Branding::BootloaderEntryName ); PartitionModel* model = m_core->partitionModelForDevice( selectedDevice() ); @@ -784,6 +981,7 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) connect( m_core, &PartitionCoreModule::deviceReverted, this, [ this ]( Device* dev ) { + Q_UNUSED( dev ) if ( !m_bootloaderComboBox.isNull() ) { if ( m_bootloaderComboBox->model() != m_core->bootLoaderModel() ) @@ -810,7 +1008,10 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) { SelectionFilter filter = [ this ]( const QModelIndex& index ) { - return PartUtils::canBeReplaced( (Partition*)( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); + return PartUtils::canBeReplaced( + static_cast< Partition* >( + index.data( PartitionModel::PartitionPtrRole ) + .value< void* >() ) ); }; m_beforePartitionBarsView->setSelectionFilter( filter ); m_beforePartitionLabelsView->setSelectionFilter( filter ); @@ -827,6 +1028,7 @@ ChoicePage::updateActionChoicePreview( ChoicePage::Choice choice ) m_previewAfterFrame->hide(); m_previewBeforeLabel->setText( tr( "Current:" ) ); m_previewAfterLabel->hide(); + m_encryptWidget->hide(); break; } @@ -874,9 +1076,8 @@ ChoicePage::setupEfiSystemPartitionSelector() tr( "An EFI system partition cannot be found anywhere " "on this system. Please go back and use manual " "partitioning to set up %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); - setNextEnabled( false ); + .arg( *Calamares::Branding::ShortProductName ) ); + updateNextEnabled(); } else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation { @@ -884,8 +1085,7 @@ ChoicePage::setupEfiSystemPartitionSelector() tr( "The EFI system partition at %1 will be used for " "starting %2." ) .arg( efiSystemPartitions.first()->partitionPath() ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); + .arg( *Calamares::Branding::ShortProductName ) ); } else { @@ -913,7 +1113,7 @@ ChoicePage::createBootloaderComboBox( QWidget* parent ) // When the chosen bootloader device changes, we update the choice in the PCM connect( bcb, static_cast< void (QComboBox::*)(int) >( &QComboBox::currentIndexChanged ), - [this]( int newIndex ) + this, [this]( int newIndex ) { QComboBox* bcb = qobject_cast< QComboBox* >( sender() ); if ( bcb ) @@ -929,6 +1129,15 @@ ChoicePage::createBootloaderComboBox( QWidget* parent ) } +static inline void +force_uncheck(QButtonGroup* grp, PrettyRadioButton* button) +{ + button->hide(); + grp->setExclusive( false ); + button->buttonWidget()->setChecked( false ); + grp->setExclusive( true ); +} + /** * @brief ChoicePage::setupActions happens every time a new Device* is selected in the * device picker. Sets up the text and visibility of the partitioning actions based @@ -948,15 +1157,18 @@ ChoicePage::setupActions() m_deviceInfoWidget->setPartitionTableType( PartitionTable::unknownTableType ); bool atLeastOneCanBeResized = false; + bool atLeastOneCanBeReplaced = false; + bool atLeastOneIsMounted = false; // Suppress 'erase' if so for ( auto it = PartitionIterator::begin( currentDevice ); it != PartitionIterator::end( currentDevice ); ++it ) { if ( PartUtils::canBeResized( *it ) ) - { atLeastOneCanBeResized = true; - break; - } + if ( PartUtils::canBeReplaced( *it ) ) + atLeastOneCanBeReplaced = true; + if ( (*it)->isMounted() ) + atLeastOneIsMounted = true; } if ( osproberEntriesForCurrentDevice.count() == 0 ) @@ -970,6 +1182,14 @@ ChoicePage::setupActions() m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " "currently present on the selected storage device." ) ); + + m_alongsideButton->setText( tr( "Install alongside
" + "The installer will shrink a partition to make room for %1." ) + .arg( *Calamares::Branding::ShortVersionedName ) ); + + m_replaceButton->setText( tr( "Replace a partition
" + "Replaces a partition with %1." ) + .arg( *Calamares::Branding::ShortVersionedName ) ); ) m_replaceButton->hide(); @@ -994,8 +1214,7 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1004,8 +1223,7 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); ) } else @@ -1018,8 +1236,7 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1027,22 +1244,9 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); ) } - - m_replaceButton->show(); - - if ( atLeastOneCanBeResized ) - m_alongsideButton->show(); - else - { - m_alongsideButton->hide(); - m_grp->setExclusive( false ); - m_alongsideButton->buttonWidget()->setChecked( false ); - m_grp->setExclusive( true ); - } } else { @@ -1056,8 +1260,7 @@ ChoicePage::setupActions() m_alongsideButton->setText( tr( "Install alongside
" "The installer will shrink a partition to make room for %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); m_eraseButton->setText( tr( "Erase disk
" "This will delete all data " @@ -1065,24 +1268,26 @@ ChoicePage::setupActions() m_replaceButton->setText( tr( "Replace a partition
" "Replaces a partition with %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); ) - - m_replaceButton->show(); - - if ( atLeastOneCanBeResized ) - m_alongsideButton->show(); - else - { - m_alongsideButton->hide(); - m_grp->setExclusive( false ); - m_alongsideButton->buttonWidget()->setChecked( false ); - m_grp->setExclusive( true ); - } } - bool isEfi = QDir( "/sys/firmware/efi/efivars" ).exists(); + if ( atLeastOneCanBeReplaced ) + m_replaceButton->show(); + else + force_uncheck( m_grp, m_replaceButton ); + + if ( atLeastOneCanBeResized ) + m_alongsideButton->show(); + else + force_uncheck( m_grp, m_alongsideButton ); + + if ( !atLeastOneIsMounted ) + m_eraseButton->show(); // None mounted + else + force_uncheck( m_grp, m_eraseButton ); + + bool isEfi = PartUtils::isEfiSystem(); bool efiSystemPartitionFound = !m_core->efiSystemPartitions().isEmpty(); if ( isEfi && !efiSystemPartitionFound ) @@ -1099,7 +1304,7 @@ OsproberEntryList ChoicePage::getOsproberEntriesForDevice( Device* device ) const { OsproberEntryList eList; - foreach ( const OsproberEntry& entry, m_core->osproberEntries() ) + for ( const OsproberEntry& entry : m_core->osproberEntries() ) { if ( entry.path.startsWith( device->deviceNode() ) ) eList.append( entry ); @@ -1123,8 +1328,41 @@ ChoicePage::currentChoice() const void -ChoicePage::setNextEnabled( bool enabled ) +ChoicePage::updateNextEnabled() { + bool enabled = false; + + switch ( m_choice ) + { + case NoChoice: + enabled = false; + break; + case Replace: + enabled = m_beforePartitionBarsView->selectionModel()-> + currentIndex().isValid(); + break; + case Alongside: + enabled = m_beforePartitionBarsView->selectionModel()-> + currentIndex().isValid(); + break; + case Erase: + case Manual: + enabled = true; + } + + if ( m_isEfi && + ( m_choice == Alongside || + m_choice == Replace ) ) + { + if ( m_core->efiSystemPartitions().count() == 0 ) + enabled = false; + } + + if ( m_choice != Manual && + m_encryptWidget->isVisible() && + m_encryptWidget->state() == EncryptWidget::EncryptionUnconfirmed ) + enabled = false; + if ( enabled == m_nextEnabled ) return; diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 75d1e6642..f102cf419 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -42,6 +42,12 @@ class DeviceInfoWidget; class Device; + +/** + * @brief The ChoicePage class is the first page of the partitioning interface. + * It offers a choice between partitioning operations and initiates all automated + * partitioning modes. For manual partitioning, see PartitionPage. + */ class ChoicePage : public QWidget, private Ui::ChoicePage { Q_OBJECT @@ -58,32 +64,58 @@ public: explicit ChoicePage( QWidget* parent = nullptr ); virtual ~ChoicePage(); + /** + * @brief init runs when the PartitionViewStep and the PartitionCoreModule are + * ready. Sets up the rest of the UI based on os-prober output. + * @param core the PartitionCoreModule pointer. + */ void init( PartitionCoreModule* core ); + /** + * @brief isNextEnabled answers whether the current state of the page is such + * that progressing to the next page should be allowed. + * @return true if next is allowed, otherwise false. + */ bool isNextEnabled() const; + /** + * @brief currentChoice returns the enum Choice value corresponding to the + * currently selected partitioning mode (with a PrettyRadioButton). + * @return the enum Choice value. + */ Choice currentChoice() const; + /** + * @brief onLeave runs when control passes from this page to another one. + */ void onLeave(); + /** + * @brief applyActionChoice reacts to a choice of partitioning mode. + * @param choice the partitioning action choice. + */ + void applyActionChoice( ChoicePage::Choice choice ); + signals: void nextStatusChanged( bool ); void actionChosen(); void deviceChosen(); private slots: - void doReplaceSelectedPartition( const QModelIndex& current, const QModelIndex& previous ); + void onPartitionToReplaceSelected( const QModelIndex& current, const QModelIndex& previous ); + void doReplaceSelectedPartition( const QModelIndex& current ); void doAlongsideSetupSplitter( const QModelIndex& current, const QModelIndex& previous ); + void onEncryptWidgetStateChanged(); + void onHomeCheckBoxStateChanged(); private: - void setNextEnabled( bool enabled ); + void updateNextEnabled(); void setupChoices(); QComboBox* createBootloaderComboBox( QWidget* parentButton ); Device* selectedDevice(); void applyDeviceChoice(); void continueApplyDeviceChoice(); void updateDeviceStatePreview(); - void applyActionChoice( ChoicePage::Choice choice ); void updateActionChoicePreview( ChoicePage::Choice choice ); void setupActions(); OsproberEntryList getOsproberEntriesForDevice( Device* device ) const; @@ -119,6 +151,9 @@ private: int m_lastSelectedDeviceIndex; + QString m_defaultFsType; + bool m_enableEncryptionWidget; + QMutex m_coreMutex; }; diff --git a/src/modules/partition/gui/ChoicePage.ui b/src/modules/partition/gui/ChoicePage.ui index 1dbe050d0..0eca520b3 100644 --- a/src/modules/partition/gui/ChoicePage.ui +++ b/src/modules/partition/gui/ChoicePage.ui @@ -32,7 +32,7 @@
- + @@ -63,7 +63,7 @@ 0 0 729 - 327 + 233 @@ -93,6 +93,16 @@ + + + + + + + <m_reuseHomeCheckBox> + + + @@ -197,6 +207,14 @@ + + + EncryptWidget + QWidget +
gui/EncryptWidget.h
+ 1 +
+
diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 7c56d3480..90cf92051 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -21,6 +21,7 @@ #include "core/ColorUtils.h" #include "core/PartitionInfo.h" +#include "core/PartUtils.h" #include "core/KPMHelpers.h" #include "gui/PartitionSizeController.h" @@ -35,12 +36,14 @@ #include #include #include +#include // Qt #include #include -#include #include +#include +#include static QSet< FileSystem::Type > s_unmountableFS( { @@ -51,22 +54,25 @@ static QSet< FileSystem::Type > s_unmountableFS( FileSystem::Lvm2_PV } ); -CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* parentPartition, QWidget* parentWidget ) +CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* parentPartition, const QStringList& usedMountPoints, QWidget* parentWidget ) : QDialog( parentWidget ) , m_ui( new Ui_CreatePartitionDialog ) , m_partitionSizeController( new PartitionSizeController( this ) ) , m_device( device ) , m_parent( parentPartition ) + , m_usedMountPoints( usedMountPoints ) { m_ui->setupUi( this ); + m_ui->encryptWidget->setText( tr( "En&crypt" ) ); + m_ui->encryptWidget->hide(); QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) + if ( PartUtils::isEfiSystem() ) mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); mountPoints.removeDuplicates(); mountPoints.sort(); m_ui->mountPointComboBox->addItems( mountPoints ); - + if ( device->partitionTable()->type() == PartitionTable::msdos || device->partitionTable()->type() == PartitionTable::msdos_sectorbased ) initMbrPartitionTypeUi(); @@ -74,11 +80,23 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par initGptPartitionTypeUi(); // File system + FileSystem::Type defaultFsType = FileSystem::typeForName( + Calamares::JobQueue::instance()-> + globalStorage()-> + value( "defaultFileSystemType" ).toString() ); + int defaultFsIndex = -1; + int fsCounter = 0; QStringList fsNames; for ( auto fs : FileSystemFactory::map() ) { - if ( fs->supportCreate() != FileSystem::cmdSupportNone && fs->type() != FileSystem::Extended ) + if ( fs->supportCreate() != FileSystem::cmdSupportNone && + fs->type() != FileSystem::Extended ) + { fsNames << fs->name(); + if ( fs->type() == defaultFsType ) + defaultFsIndex = fsCounter; + fsCounter++; + } } m_ui->fsComboBox->addItems( fsNames ); @@ -86,7 +104,15 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par connect( m_ui->fsComboBox, SIGNAL( activated( int ) ), SLOT( updateMountPointUi() ) ); connect( m_ui->extendedRadioButton, SIGNAL( toggled( bool ) ), SLOT( updateMountPointUi() ) ); + connect( m_ui->mountPointComboBox, &QComboBox::currentTextChanged, this, &CreatePartitionDialog::checkMountPointSelection ); + + // Select a default + m_ui->fsComboBox->setCurrentIndex( defaultFsIndex ); + updateMountPointUi(); + setupFlagsList(); + // Checks the initial selection. + checkMountPointSelection(); } CreatePartitionDialog::~CreatePartitionDialog() @@ -178,11 +204,28 @@ CreatePartitionDialog::createPartition() FileSystem::Type fsType = m_role.has( PartitionRole::Extended ) ? FileSystem::Extended : FileSystem::typeForName( m_ui->fsComboBox->currentText() ); - Partition* partition = KPMHelpers::createNewPartition( - m_parent, - *m_device, - m_role, - fsType, first, last, newFlags() ); + + Partition* partition = nullptr; + QString luksPassphrase = m_ui->encryptWidget->passphrase(); + if ( m_ui->encryptWidget->state() == EncryptWidget::EncryptionConfirmed && + !luksPassphrase.isEmpty() ) + { + partition = KPMHelpers::createNewEncryptedPartition( + m_parent, + *m_device, + m_role, + fsType, first, last, luksPassphrase, newFlags() + ); + } + else + { + partition = KPMHelpers::createNewPartition( + m_parent, + *m_device, + m_role, + fsType, first, last, newFlags() + ); + } PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() ); PartitionInfo::setFormat( partition, true ); @@ -198,6 +241,17 @@ CreatePartitionDialog::updateMountPointUi() { FileSystem::Type type = FileSystem::typeForName( m_ui->fsComboBox->currentText() ); enabled = !s_unmountableFS.contains( type ); + + if ( FS::luks::canEncryptType( type ) ) + { + m_ui->encryptWidget->show(); + m_ui->encryptWidget->reset(); + } + else + { + m_ui->encryptWidget->reset(); + m_ui->encryptWidget->hide(); + } } m_ui->mountPointLabel->setEnabled( enabled ); m_ui->mountPointComboBox->setEnabled( enabled ); @@ -205,6 +259,23 @@ CreatePartitionDialog::updateMountPointUi() m_ui->mountPointComboBox->setCurrentText( QString() ); } +void +CreatePartitionDialog::checkMountPointSelection() +{ + const QString& selection = m_ui->mountPointComboBox->currentText(); + + if ( m_usedMountPoints.contains( selection ) ) + { + m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) ); + m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); + } + else + { + m_ui->labelMountPoint->setText( QString() ); + m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( true ); + } +} + void CreatePartitionDialog::initPartResizerWidget( Partition* partition ) { diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index aca7ed6a0..641616e3f 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -42,7 +42,7 @@ class CreatePartitionDialog : public QDialog { Q_OBJECT public: - CreatePartitionDialog( Device* device, PartitionNode* parentPartition, QWidget* parentWidget = nullptr ); + CreatePartitionDialog( Device* device, PartitionNode* parentPartition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); ~CreatePartitionDialog(); /** @@ -61,6 +61,7 @@ public: private Q_SLOTS: void updateMountPointUi(); + void checkMountPointSelection(); private: void setupFlagsList(); @@ -69,6 +70,7 @@ private: Device* m_device; PartitionNode* m_parent; PartitionRole m_role = PartitionRole( PartitionRole::None ); + QStringList m_usedMountPoints; void initGptPartitionTypeUi(); void initMbrPartitionTypeUi(); diff --git a/src/modules/partition/gui/CreatePartitionDialog.ui b/src/modules/partition/gui/CreatePartitionDialog.ui index c5ff9e1ea..ba457b29c 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.ui +++ b/src/modules/partition/gui/CreatePartitionDialog.ui @@ -6,8 +6,8 @@ 0 0 - 642 - 489 + 763 + 689 @@ -32,6 +32,23 @@
+ + + + Si&ze: + + + sizeSpinBox + + + + + + + MiB + + + @@ -83,6 +100,19 @@ + + + + Qt::Vertical + + + + 20 + 13 + + + + @@ -96,6 +126,9 @@ + + + @@ -132,57 +165,21 @@ - - - - Qt::Vertical - - - - 17 - 13 - - - - - - - - Qt::Vertical - - - - 20 - 12 - - - - - - + + - Si&ze: - - - sizeSpinBox + - - - - MB - - - - + Flags: - + true @@ -195,6 +192,19 @@ + + + + Qt::Vertical + + + + 17 + 13 + + + + @@ -216,6 +226,12 @@
kpmcore/gui/partresizerwidget.h
1 + + EncryptWidget + QWidget +
gui/EncryptWidget.h
+ 1 +
primaryRadioButton diff --git a/src/modules/partition/gui/DeviceInfoWidget.cpp b/src/modules/partition/gui/DeviceInfoWidget.cpp index dc4473521..abe5c7a49 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.cpp +++ b/src/modules/partition/gui/DeviceInfoWidget.cpp @@ -19,9 +19,11 @@ #include "DeviceInfoWidget.h" -#include -#include -#include +#include "utils/CalamaresUtilsGui.h" +#include "utils/Logger.h" +#include "utils/Retranslator.h" +#include "JobQueue.h" +#include "GlobalStorage.h" #include #include @@ -31,6 +33,7 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) : QWidget( parent ) , m_ptIcon( new QLabel ) , m_ptLabel( new QLabel ) + , m_tableType( PartitionTable::unknownTableType ) { QHBoxLayout* mainLayout = new QHBoxLayout; setLayout( mainLayout ); @@ -44,9 +47,10 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) m_ptIcon->setMargin( 0 ); m_ptIcon->setFixedSize( iconSize ); - m_ptIcon->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionTable, - CalamaresUtils::Original, - iconSize ) ); + m_ptIcon->setPixmap( + CalamaresUtils::defaultPixmap( CalamaresUtils::PartitionTable, + CalamaresUtils::Original, + iconSize ) ); QFontMetrics fm = QFontMetrics( QFont() ); m_ptLabel->setMinimumWidth( fm.boundingRect( "Amiga" ).width() + CalamaresUtils::defaultFontHeight() / 2 ); @@ -60,28 +64,24 @@ DeviceInfoWidget::DeviceInfoWidget( QWidget* parent ) m_ptIcon->setPalette( palette ); m_ptLabel->setPalette( palette ); - m_ptIcon->setToolTip( tr( "The type of partition table on the " - "selected storage device.

" - "The only way to change the partition table type is to " - "erase and recreate the partition table from scratch, " - "which destroys all data on the storage device.
" - "This installer will keep the current partition table " - "unless you explicitly choose otherwise.
" - "If unsure, on modern systems GPT is preferred." ) ); - - bool isEfi = false; - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) - isEfi = true; + CALAMARES_RETRANSLATE( retranslateUi(); ) } void DeviceInfoWidget::setPartitionTableType( PartitionTable::TableType type ) { - QString typeString = PartitionTable::tableTypeToName( type ).toUpper(); + m_tableType = type; + retranslateUi(); +} + +void +DeviceInfoWidget::retranslateUi() +{ + QString typeString = PartitionTable::tableTypeToName( m_tableType ).toUpper(); // fix up if the name shouldn't be uppercase: - switch ( type ) + switch ( m_tableType ) { case PartitionTable::msdos: case PartitionTable::msdos_sectorbased: @@ -108,7 +108,7 @@ DeviceInfoWidget::setPartitionTableType( PartitionTable::TableType type ) "table." ) .arg( typeString ); - switch ( type ) + switch ( m_tableType ) { case PartitionTable::loop: toolTipString = tr( "This is a loop " @@ -146,5 +146,13 @@ DeviceInfoWidget::setPartitionTableType( PartitionTable::TableType type ) m_ptLabel->setText( typeString ); m_ptLabel->setToolTip( toolTipString ); -} + m_ptIcon->setToolTip( tr( "The type of partition table on the " + "selected storage device.

" + "The only way to change the partition table type is to " + "erase and recreate the partition table from scratch, " + "which destroys all data on the storage device.
" + "This installer will keep the current partition table " + "unless you explicitly choose otherwise.
" + "If unsure, on modern systems GPT is preferred." ) ); +} diff --git a/src/modules/partition/gui/DeviceInfoWidget.h b/src/modules/partition/gui/DeviceInfoWidget.h index ab67c102c..f8bd07ca3 100644 --- a/src/modules/partition/gui/DeviceInfoWidget.h +++ b/src/modules/partition/gui/DeviceInfoWidget.h @@ -34,9 +34,13 @@ public: void setPartitionTableType( PartitionTable::TableType type ); +public slots: + void retranslateUi(); + private: QLabel* m_ptIcon; QLabel* m_ptLabel; + PartitionTable::TableType m_tableType; }; #endif // DEVICEINFOWIDGET_H diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index f9998fa6a..e213b8731 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -26,6 +26,7 @@ #include #include #include +#include "core/PartUtils.h" #include #include @@ -43,18 +44,20 @@ // Qt #include #include +#include -EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partition* partition, QWidget* parentWidget ) +EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget ) : QDialog( parentWidget ) , m_ui( new Ui_EditExistingPartitionDialog ) , m_device( device ) , m_partition( partition ) , m_partitionSizeController( new PartitionSizeController( this ) ) + , m_usedMountPoints( usedMountPoints ) { m_ui->setupUi( this ); QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) + if ( PartUtils::isEfiSystem() ) mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); mountPoints.removeDuplicates(); mountPoints.sort(); @@ -65,6 +68,8 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit m_partitionSizeController->setSpinBox( m_ui->sizeSpinBox ); m_ui->mountPointComboBox->setCurrentText( PartitionInfo::mountPoint( partition ) ); + connect( m_ui->mountPointComboBox, &QComboBox::currentTextChanged, + this, &EditExistingPartitionDialog::checkMountPointSelection ); replacePartResizerWidget(); @@ -100,7 +105,9 @@ EditExistingPartitionDialog::EditExistingPartitionDialog( Device* device, Partit if ( fsNames.contains( m_partition->fileSystem().name() ) ) m_ui->fileSystemComboBox->setCurrentText( m_partition->fileSystem().name() ); else - m_ui->fileSystemComboBox->setCurrentText( FileSystem::nameForType( FileSystem::Ext4 ) ); + m_ui->fileSystemComboBox->setCurrentText( Calamares::JobQueue::instance()-> + globalStorage()-> + value( "defaultFileSystemType" ).toString() ); m_ui->fileSystemLabel->setEnabled( m_ui->formatRadioButton->isChecked() ); m_ui->fileSystemComboBox->setEnabled( m_ui->formatRadioButton->isChecked() ); @@ -160,6 +167,11 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core ) bool partResizedMoved = newFirstSector != m_partition->firstSector() || newLastSector != m_partition->lastSector(); + cDebug() << "old boundaries:" << m_partition->firstSector() + << m_partition->lastSector() << m_partition->length(); + cDebug() << "new boundaries:" << newFirstSector << newLastSector; + cDebug() << "dirty status:" << m_partitionSizeController->isDirty(); + FileSystem::Type fsType = FileSystem::Unknown; if ( m_ui->formatRadioButton->isChecked() ) { @@ -284,3 +296,20 @@ EditExistingPartitionDialog::updateMountPointPicker() if ( !canMount ) m_ui->mountPointComboBox->setCurrentText( QString() ); } + +void +EditExistingPartitionDialog::checkMountPointSelection() +{ + const QString& selection = m_ui->mountPointComboBox->currentText(); + + if ( m_usedMountPoints.contains( selection ) ) + { + m_ui->labelMountPoint->setText( tr( "Mountpoint already in use. Please select another one." ) ); + m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); + } + else + { + m_ui->labelMountPoint->setText( QString() ); + m_ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( true ); + } +} diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index 0aa89bb98..83552fe55 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -40,16 +40,20 @@ class EditExistingPartitionDialog : public QDialog { Q_OBJECT public: - EditExistingPartitionDialog( Device* device, Partition* partition, QWidget* parentWidget = nullptr ); + EditExistingPartitionDialog( Device* device, Partition* partition, const QStringList& usedMountPoints, QWidget* parentWidget = nullptr ); ~EditExistingPartitionDialog(); void applyChanges( PartitionCoreModule* module ); +private slots: + void checkMountPointSelection(); + private: QScopedPointer< Ui_EditExistingPartitionDialog > m_ui; Device* m_device; Partition* m_partition; PartitionSizeController* m_partitionSizeController; + QStringList m_usedMountPoints; PartitionTable::Flags newFlags() const; void setupFlagsList(); diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.ui b/src/modules/partition/gui/EditExistingPartitionDialog.ui index 9ed7e1bb4..c242e3bbc 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.ui +++ b/src/modules/partition/gui/EditExistingPartitionDialog.ui @@ -124,7 +124,11 @@
- + + + MiB + + @@ -139,14 +143,14 @@ - + Flags: - + true @@ -159,6 +163,13 @@ + + + + + + + diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp new file mode 100644 index 000000000..198f2ebe1 --- /dev/null +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -0,0 +1,169 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + + +#include "EncryptWidget.h" + +#include + +EncryptWidget::EncryptWidget( QWidget* parent ) + : QWidget( parent ) + , m_state( EncryptionDisabled ) +{ + setupUi( this ); + + m_iconLabel->setFixedWidth( m_iconLabel->height() ); + m_passphraseLineEdit->hide(); + m_confirmLineEdit->hide(); + m_iconLabel->hide(); + + connect( m_encryptCheckBox, &QCheckBox::stateChanged, + this, &EncryptWidget::onCheckBoxStateChanged ); + connect( m_passphraseLineEdit, &QLineEdit::textEdited, + this, &EncryptWidget::onPassphraseEdited ); + connect( m_confirmLineEdit, &QLineEdit::textEdited, + this, &EncryptWidget::onPassphraseEdited ); + + setFixedHeight( m_passphraseLineEdit->height() ); // Avoid jumping up and down + updateState(); +} + + +void +EncryptWidget::reset() +{ + m_passphraseLineEdit->clear(); + m_confirmLineEdit->clear(); + + m_encryptCheckBox->setChecked( false ); +} + + +EncryptWidget::State +EncryptWidget::state() const +{ + return m_state; +} + + +void +EncryptWidget::setText( const QString& text ) +{ + m_encryptCheckBox->setText( text ); +} + + +QString +EncryptWidget::passphrase() const +{ + if ( m_state == EncryptionConfirmed ) + return m_passphraseLineEdit->text(); + return QString(); +} + + +void +EncryptWidget::changeEvent( QEvent* e ) +{ + QWidget::changeEvent( e ); + switch ( e->type() ) + { + case QEvent::LanguageChange: + retranslateUi( this ); + break; + default: + break; + } +} + + +void +EncryptWidget::updateState() +{ + State newState; + if ( m_encryptCheckBox->isChecked() ) + { + if ( !m_passphraseLineEdit->text().isEmpty() && + m_passphraseLineEdit->text() == m_confirmLineEdit->text() ) + { + newState = EncryptionConfirmed; + } + else + { + newState = EncryptionUnconfirmed; + } + } + else + { + newState = EncryptionDisabled; + } + + if ( newState != m_state ) + { + m_state = newState; + emit stateChanged( m_state ); + } +} + + +void +EncryptWidget::onPassphraseEdited() +{ + if ( !m_iconLabel->isVisible() ) + m_iconLabel->show(); + + QString p1 = m_passphraseLineEdit->text(); + QString p2 = m_confirmLineEdit->text(); + + m_iconLabel->setToolTip( QString() ); + if ( p1.isEmpty() && p2.isEmpty() ) + { + m_iconLabel->clear(); + } + else if ( p1 == p2 ) + { + m_iconLabel->setFixedWidth( m_iconLabel->height() ); + m_iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, + CalamaresUtils::Original, + m_iconLabel->size() ) ); + } + else + { + m_iconLabel->setFixedWidth( m_iconLabel->height() ); + m_iconLabel->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, + CalamaresUtils::Original, + m_iconLabel->size() ) ); + m_iconLabel->setToolTip( tr( "Please enter the same passphrase in both boxes." ) ); + } + + updateState(); +} + + +void +EncryptWidget::onCheckBoxStateChanged( int state ) +{ + m_passphraseLineEdit->setVisible( state ); + m_confirmLineEdit->setVisible( state ); + m_iconLabel->setVisible( state ); + m_passphraseLineEdit->clear(); + m_confirmLineEdit->clear(); + m_iconLabel->clear(); + + updateState(); +} diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h new file mode 100644 index 000000000..7e3d654da --- /dev/null +++ b/src/modules/partition/gui/EncryptWidget.h @@ -0,0 +1,60 @@ +/* === This file is part of Calamares - === + * + * Copyright 2016, Teo Mrnjavac + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + + +#ifndef ENCRYPTWIDGET_H +#define ENCRYPTWIDGET_H + +#include "ui_EncryptWidget.h" + +class EncryptWidget : public QWidget, private Ui::EncryptWidget +{ + Q_OBJECT + +public: + enum State : unsigned short + { + EncryptionDisabled = 0, + EncryptionUnconfirmed, + EncryptionConfirmed + }; + + explicit EncryptWidget( QWidget* parent = nullptr ); + + void reset(); + + State state() const; + void setText( const QString& text ); + + QString passphrase() const; + +signals: + void stateChanged( State ); + +protected: + void changeEvent( QEvent* e ); + +private: + void updateState(); + void onPassphraseEdited(); + void onCheckBoxStateChanged( int state ); + + State m_state; +}; + +#endif // ENCRYPTWIDGET_H diff --git a/src/modules/partition/gui/EncryptWidget.ui b/src/modules/partition/gui/EncryptWidget.ui new file mode 100644 index 000000000..65af6999e --- /dev/null +++ b/src/modules/partition/gui/EncryptWidget.ui @@ -0,0 +1,70 @@ + + + EncryptWidget + + + + 0 + 0 + 822 + 59 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + En&crypt system + + + + + + + QLineEdit::Password + + + Passphrase + + + + + + + QLineEdit::Password + + + Confirm passphrase + + + + + + + + + + Qt::AlignCenter + + + + + + + + diff --git a/src/modules/partition/gui/PartitionBarsView.cpp b/src/modules/partition/gui/PartitionBarsView.cpp index f1333da7c..a66420e1b 100644 --- a/src/modules/partition/gui/PartitionBarsView.cpp +++ b/src/modules/partition/gui/PartitionBarsView.cpp @@ -35,8 +35,8 @@ static const int VIEW_HEIGHT = qMax( CalamaresUtils::defaultFontHeight() + 8, // wins out with big fonts - (int)( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts -static const int CORNER_RADIUS = 3; + int( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts +static constexpr int CORNER_RADIUS = 3; static const int EXTENDED_PARTITION_MARGIN = qMax( 4, VIEW_HEIGHT / 6 ); // The SELECTION_MARGIN is applied within a hardcoded 2px padding anyway, so @@ -54,8 +54,8 @@ static const int SELECTION_MARGIN = qMin( ( EXTENDED_PARTITION_MARGIN - 2 ) / 2, PartitionBarsView::PartitionBarsView( QWidget* parent ) : QAbstractItemView( parent ) , m_nestedPartitionsMode( NoNestedPartitions ) - , m_hoveredIndex( QModelIndex() ) , canBeSelected( []( const QModelIndex& ) { return true; } ) + , m_hoveredIndex( QModelIndex() ) { setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); setFrameStyle( QFrame::NoFrame ); @@ -422,14 +422,14 @@ PartitionBarsView::setSelectionFilter( std::function< bool ( const QModelIndex& QModelIndex -PartitionBarsView::moveCursor( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) +PartitionBarsView::moveCursor( CursorAction, Qt::KeyboardModifiers ) { return QModelIndex(); } bool -PartitionBarsView::isIndexHidden( const QModelIndex& index ) const +PartitionBarsView::isIndexHidden( const QModelIndex& ) const { return false; } @@ -491,7 +491,7 @@ PartitionBarsView::mouseMoveEvent( QMouseEvent* event ) void -PartitionBarsView::leaveEvent( QEvent* event ) +PartitionBarsView::leaveEvent( QEvent* ) { QGuiApplication::restoreOverrideCursor(); if ( m_hoveredIndex.isValid() ) diff --git a/src/modules/partition/gui/PartitionBarsView.h b/src/modules/partition/gui/PartitionBarsView.h index 002d2c943..e384ed5db 100644 --- a/src/modules/partition/gui/PartitionBarsView.h +++ b/src/modules/partition/gui/PartitionBarsView.h @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,7 +43,7 @@ public: }; explicit PartitionBarsView( QWidget* parent = nullptr ); - virtual ~PartitionBarsView(); + virtual ~PartitionBarsView() override; void setNestedPartitionsMode( NestedPartitionsMode mode ); diff --git a/src/modules/partition/gui/PartitionLabelsView.cpp b/src/modules/partition/gui/PartitionLabelsView.cpp index 856699202..c0b7fdd41 100644 --- a/src/modules/partition/gui/PartitionLabelsView.cpp +++ b/src/modules/partition/gui/PartitionLabelsView.cpp @@ -43,18 +43,18 @@ static const int LABELS_MARGIN = LABEL_PARTITION_SQUARE_MARGIN; static const int CORNER_RADIUS = 2; -QStringList +static QStringList buildUnknownDisklabelTexts( Device* dev ) { QStringList texts = { QObject::tr( "Unpartitioned space or unknown partition table" ), - KFormat().formatByteSize( dev->totalSectors() * dev->logicalSectorSize() ) }; + KFormat().formatByteSize( dev->totalLogical() * dev->logicalSize() ) }; return texts; } PartitionLabelsView::PartitionLabelsView( QWidget* parent ) : QAbstractItemView( parent ) - , canBeSelected( []( const QModelIndex& ) { return true; } ) + , m_canBeSelected( []( const QModelIndex& ) { return true; } ) , m_extendedPartitionHidden( false ) { setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); @@ -100,6 +100,8 @@ PartitionLabelsView::sizeHint() const void PartitionLabelsView::paintEvent( QPaintEvent* event ) { + Q_UNUSED( event ); + QPainter painter( viewport() ); painter.fillRect( rect(), palette().window() ); painter.setRenderHint( QPainter::Antialiasing ); @@ -161,7 +163,7 @@ PartitionLabelsView::getIndexesToDraw( const QModelIndex& parent ) const //HACK: horrible special casing follows. // To save vertical space, we choose to hide short instances of free space. // Arbitrary limit: 10MB. - const qint64 maxHiddenB = 10'000'000; + const qint64 maxHiddenB = 10000000; if ( index.data( PartitionModel::IsFreeSpaceRole ).toBool() && index.data( PartitionModel::SizeRole ).toLongLong() < maxHiddenB ) continue; @@ -199,13 +201,15 @@ PartitionLabelsView::buildTexts( const QModelIndex& index ) const firstLine = tr( "EFI system" ); else if ( index.data( PartitionModel::FileSystemTypeRole ).toInt() == FileSystem::LinuxSwap ) firstLine = tr( "Swap" ); - else + else if ( !mountPoint.isEmpty() ) firstLine = tr( "New partition for %1" ).arg( mountPoint ); + else + firstLine = tr( "New partition" ); } else if ( index.data( PartitionModel::OsproberNameRole ).toString().isEmpty() ) { firstLine = index.data().toString(); - if ( firstLine.startsWith( "/dev/sd" ) ) + if ( firstLine.startsWith( "/dev/" ) ) firstLine.remove( 0, 5 ); // "/dev/" } else @@ -238,11 +242,11 @@ PartitionLabelsView::drawLabels( QPainter* painter, if ( !modl ) return; - QModelIndexList indexesToDraw = getIndexesToDraw( parent ); + const QModelIndexList indexesToDraw = getIndexesToDraw( parent ); int label_x = rect.x(); int label_y = rect.y(); - foreach ( const QModelIndex& index, indexesToDraw ) + for ( const QModelIndex& index : indexesToDraw ) { QStringList texts = buildTexts( index ); @@ -290,7 +294,6 @@ PartitionLabelsView::drawLabels( QPainter* painter, !modl->device()->partitionTable() ) // No disklabel or unknown { QStringList texts = buildUnknownDisklabelTexts( modl->device() ); - QSize labelSize = sizeForLabel( texts ); QColor labelColor = ColorUtils::unknownDisklabelColor(); drawLabel( painter, texts, labelColor, QPoint( rect.x(), rect.y() ), false /*can't be selected*/ ); } @@ -304,12 +307,12 @@ PartitionLabelsView::sizeForAllLabels( int maxLineWidth ) const if ( !modl ) return QSize(); - QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); + const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); int lineLength = 0; int numLines = 1; int singleLabelHeight = 0; - foreach ( const QModelIndex& index, indexesToDraw ) + for ( const QModelIndex& index : indexesToDraw ) { QStringList texts = buildTexts( index ); @@ -347,7 +350,7 @@ PartitionLabelsView::sizeForLabel( const QStringList& text ) const { int vertOffset = 0; int width = 0; - foreach ( const QString& textLine, text ) + for ( const QString& textLine : text ) { QSize textSize = fontMetrics().size( Qt::TextSingleLine, textLine ); @@ -369,7 +372,7 @@ PartitionLabelsView::drawLabel( QPainter* painter, painter->setPen( Qt::black ); int vertOffset = 0; int width = 0; - foreach ( const QString& textLine, text ) + for ( const QString& textLine : text ) { QSize textSize = painter->fontMetrics().size( Qt::TextSingleLine, textLine ); painter->drawText( pos.x()+LABEL_PARTITION_SQUARE_MARGIN, @@ -400,12 +403,12 @@ PartitionLabelsView::indexAt( const QPoint& point ) const if ( !modl ) return QModelIndex(); - QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); + const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); QRect rect = this->rect(); int label_x = rect.x(); int label_y = rect.y(); - foreach ( const QModelIndex& index, indexesToDraw ) + for ( const QModelIndex& index : indexesToDraw ) { QStringList texts = buildTexts( index ); @@ -435,12 +438,12 @@ PartitionLabelsView::visualRect( const QModelIndex& idx ) const if ( !modl ) return QRect(); - QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); + const QModelIndexList indexesToDraw = getIndexesToDraw( QModelIndex() ); QRect rect = this->rect(); int label_x = rect.x(); int label_y = rect.y(); - foreach ( const QModelIndex& index, indexesToDraw ) + for ( const QModelIndex& index : indexesToDraw ) { QStringList texts = buildTexts( index ); @@ -465,6 +468,8 @@ PartitionLabelsView::visualRect( const QModelIndex& idx ) const QRegion PartitionLabelsView::visualRegionForSelection( const QItemSelection& selection ) const { + Q_UNUSED( selection ); + return QRegion(); } @@ -514,7 +519,7 @@ PartitionLabelsView::setSelectionModel( QItemSelectionModel* selectionModel ) void PartitionLabelsView::setSelectionFilter( SelectionFilter canBeSelected ) { - this->canBeSelected = canBeSelected; + m_canBeSelected = canBeSelected; } @@ -528,6 +533,9 @@ PartitionLabelsView::setExtendedPartitionHidden( bool hidden ) QModelIndex PartitionLabelsView::moveCursor( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) { + Q_UNUSED( cursorAction ); + Q_UNUSED( modifiers ); + return QModelIndex(); } @@ -535,6 +543,8 @@ PartitionLabelsView::moveCursor( CursorAction cursorAction, Qt::KeyboardModifier bool PartitionLabelsView::isIndexHidden( const QModelIndex& index ) const { + Q_UNUSED( index ); + return false; } @@ -543,7 +553,7 @@ void PartitionLabelsView::setSelection( const QRect& rect, QItemSelectionModel::SelectionFlags flags ) { QModelIndex eventIndex = indexAt( rect.topLeft() ); - if ( canBeSelected( eventIndex ) ) + if ( m_canBeSelected( eventIndex ) ) selectionModel()->select( eventIndex, flags ); } @@ -565,7 +575,7 @@ PartitionLabelsView::mouseMoveEvent( QMouseEvent* event ) if ( oldHoveredIndex != m_hoveredIndex ) { - if ( m_hoveredIndex.isValid() && !canBeSelected( m_hoveredIndex ) ) + if ( m_hoveredIndex.isValid() && !m_canBeSelected( m_hoveredIndex ) ) QGuiApplication::setOverrideCursor( Qt::ForbiddenCursor ); else QGuiApplication::restoreOverrideCursor(); @@ -578,6 +588,8 @@ PartitionLabelsView::mouseMoveEvent( QMouseEvent* event ) void PartitionLabelsView::leaveEvent( QEvent* event ) { + Q_UNUSED( event ); + QGuiApplication::restoreOverrideCursor(); if ( m_hoveredIndex.isValid() ) { @@ -591,7 +603,7 @@ void PartitionLabelsView::mousePressEvent( QMouseEvent* event ) { QModelIndex candidateIndex = indexAt( event->pos() ); - if ( canBeSelected( candidateIndex ) ) + if ( m_canBeSelected( candidateIndex ) ) QAbstractItemView::mousePressEvent( event ); else event->accept(); diff --git a/src/modules/partition/gui/PartitionLabelsView.h b/src/modules/partition/gui/PartitionLabelsView.h index fef453d44..d6c86a5dc 100644 --- a/src/modules/partition/gui/PartitionLabelsView.h +++ b/src/modules/partition/gui/PartitionLabelsView.h @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +37,7 @@ class PartitionLabelsView : public QAbstractItemView Q_OBJECT public: explicit PartitionLabelsView( QWidget* parent = nullptr ); - virtual ~PartitionLabelsView(); + virtual ~PartitionLabelsView() override; QSize minimumSizeHint() const override; @@ -83,7 +84,7 @@ private: QModelIndexList getIndexesToDraw( const QModelIndex& parent ) const; QStringList buildTexts( const QModelIndex& index ) const; - SelectionFilter canBeSelected; + SelectionFilter m_canBeSelected; bool m_extendedPartitionHidden; QString m_customNewRootLabel; diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 28304192c..62e7a97a1 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -23,7 +23,9 @@ #include "core/BootLoaderModel.h" #include "core/DeviceModel.h" #include "core/PartitionCoreModule.h" +#include "core/PartitionInfo.h" #include "core/PartitionModel.h" +#include "core/PartUtils.h" #include "core/KPMHelpers.h" #include "gui/CreatePartitionDialog.h" #include "gui/EditExistingPartitionDialog.h" @@ -55,8 +57,15 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) : QWidget( parent ) , m_ui( new Ui_PartitionPage ) , m_core( core ) + , m_lastSelectedBootLoaderIndex(-1) + , m_isEfi( false ) { + m_isEfi = PartUtils::isEfiSystem(); + m_ui->setupUi( this ); + m_ui->partitionLabelsView->setVisible( + Calamares::JobQueue::instance()->globalStorage()-> + value( "alwaysShowPartitionLabels" ).toBool() ); m_ui->deviceComboBox->setModel( m_core->deviceModel() ); m_ui->bootLoaderComboBox->setModel( m_core->bootLoaderModel() ); PartitionBarsView::NestedPartitionsMode mode = Calamares::JobQueue::instance()->globalStorage()-> @@ -74,6 +83,11 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) { updateFromCurrentDevice(); } ); + connect( m_ui->bootLoaderComboBox, static_cast(&QComboBox::activated), + [ this ]( const QString& /* text */ ) + { + m_lastSelectedBootLoaderIndex = m_ui->bootLoaderComboBox->currentIndex(); + } ); connect( m_ui->bootLoaderComboBox, &QComboBox::currentTextChanged, [ this ]( const QString& /* text */ ) @@ -83,18 +97,18 @@ PartitionPage::PartitionPage( PartitionCoreModule* core, QWidget* parent ) connect( m_core, &PartitionCoreModule::isDirtyChanged, m_ui->revertButton, &QWidget::setEnabled ); - connect( m_ui->partitionTreeView, &QAbstractItemView::activated, this, &PartitionPage::onPartitionViewActivated ); + connect( m_ui->partitionTreeView, &QAbstractItemView::doubleClicked, this, &PartitionPage::onPartitionViewActivated ); connect( m_ui->revertButton, &QAbstractButton::clicked, this, &PartitionPage::onRevertClicked ); connect( m_ui->newPartitionTableButton, &QAbstractButton::clicked, this, &PartitionPage::onNewPartitionTableClicked ); connect( m_ui->createButton, &QAbstractButton::clicked, this, &PartitionPage::onCreateClicked ); connect( m_ui->editButton, &QAbstractButton::clicked, this, &PartitionPage::onEditClicked ); connect( m_ui->deleteButton, &QAbstractButton::clicked, this, &PartitionPage::onDeleteClicked ); - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) { + if ( m_isEfi ) { m_ui->bootLoaderComboBox->hide(); m_ui->label_3->hide(); } - + CALAMARES_RETRANSLATE( m_ui->retranslateUi( this ); ) } @@ -152,6 +166,9 @@ PartitionPage::onNewPartitionTableClicked() m_core->createPartitionTable( device, type ); } delete dlg; + // PartionModelReset isn't emmited after createPartitionTable, so we have to manually update + // the bootLoader index after the reset. + updateBootLoaderIndex(); } void @@ -164,7 +181,10 @@ PartitionPage::onCreateClicked() Partition* partition = model->partitionForIndex( index ); Q_ASSERT( partition ); - QPointer dlg = new CreatePartitionDialog( model->device(), partition->parent(), this ); + QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( model->device(), + partition->parent(), + getCurrentUsedMountpoints(), + this ); dlg->initFromFreeSpace( partition ); if ( dlg->exec() == QDialog::Accepted ) { @@ -188,6 +208,7 @@ PartitionPage::onEditClicked() updatePartitionToCreate( model->device(), partition ); else editExistingPartition( model->device(), partition ); + } void @@ -217,7 +238,12 @@ PartitionPage::onRevertClicked() m_ui->deviceComboBox->setCurrentIndex( oldIndex ); updateFromCurrentDevice(); } ), - []{}, + [ this ]{ + m_lastSelectedBootLoaderIndex = -1; + if( m_ui->bootLoaderComboBox->currentIndex() < 0 ) { + m_ui->bootLoaderComboBox->setCurrentIndex( 0 ); + } + }, this ); } @@ -247,7 +273,13 @@ PartitionPage::onPartitionViewActivated() void PartitionPage::updatePartitionToCreate( Device* device, Partition* partition ) { - QPointer dlg = new CreatePartitionDialog( device, partition->parent(), this ); + QStringList mountPoints = getCurrentUsedMountpoints(); + mountPoints.removeOne( PartitionInfo::mountPoint( partition ) ); + + QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( device, + partition->parent(), + mountPoints, + this ); dlg->initFromPartitionToCreate( partition ); if ( dlg->exec() == QDialog::Accepted ) { @@ -261,7 +293,10 @@ PartitionPage::updatePartitionToCreate( Device* device, Partition* partition ) void PartitionPage::editExistingPartition( Device* device, Partition* partition ) { - QPointer dlg = new EditExistingPartitionDialog( device, partition, this ); + QStringList mountPoints = getCurrentUsedMountpoints(); + mountPoints.removeOne( PartitionInfo::mountPoint( partition ) ); + + QPointer dlg = new EditExistingPartitionDialog( device, partition, mountPoints, this ); if ( dlg->exec() == QDialog::Accepted ) dlg->applyChanges( m_core ); delete dlg; @@ -270,9 +305,13 @@ PartitionPage::editExistingPartition( Device* device, Partition* partition ) void PartitionPage::updateBootLoaderInstallPath() { + if ( m_isEfi || !m_ui->bootLoaderComboBox->isVisible() ) + return; + QVariant var = m_ui->bootLoaderComboBox->currentData( BootLoaderModel::BootLoaderPathRole ); if ( !var.isValid() ) return; + qDebug() << "PartitionPage::updateBootLoaderInstallPath" << var.toString(); m_core->setBootLoaderInstallPath( var.toString() ); } @@ -291,16 +330,25 @@ PartitionPage::updateFromCurrentDevice() PartitionModel* model = m_core->partitionModelForDevice( device ); m_ui->partitionBarsView->setModel( model ); + m_ui->partitionLabelsView->setModel( model ); m_ui->partitionTreeView->setModel( model ); m_ui->partitionTreeView->expandAll(); - // Make both views use the same selection model. + // Make all views use the same selection model. if ( m_ui->partitionBarsView->selectionModel() != - m_ui->partitionTreeView->selectionModel() ) + m_ui->partitionTreeView->selectionModel() || + m_ui->partitionBarsView->selectionModel() != + m_ui->partitionLabelsView->selectionModel() ) { + // Tree view QItemSelectionModel* selectionModel = m_ui->partitionTreeView->selectionModel(); m_ui->partitionTreeView->setSelectionModel( m_ui->partitionBarsView->selectionModel() ); selectionModel->deleteLater(); + + // Labels view + selectionModel = m_ui->partitionLabelsView->selectionModel(); + m_ui->partitionLabelsView->setSelectionModel( m_ui->partitionBarsView->selectionModel() ); + selectionModel->deleteLater(); } // This is necessary because even with the same selection model it might happen that @@ -312,6 +360,7 @@ PartitionPage::updateFromCurrentDevice() QModelIndex selectedIndex = m_ui->partitionBarsView->selectionModel()->currentIndex(); selectedIndex = selectedIndex.sibling( selectedIndex.row(), 0 ); m_ui->partitionBarsView->setCurrentIndex( selectedIndex ); + m_ui->partitionLabelsView->setCurrentIndex( selectedIndex ); }, Qt::UniqueConnection ); // Must be done here because we need to have a model set to define @@ -324,7 +373,7 @@ PartitionPage::updateFromCurrentDevice() // Establish connection here because selection model is destroyed when // model changes connect( m_ui->partitionTreeView->selectionModel(), &QItemSelectionModel::currentChanged, - [ this ]( const QModelIndex& index, const QModelIndex& oldIndex ) + [ this ]( const QModelIndex&, const QModelIndex& ) { updateButtons(); } ); @@ -336,4 +385,35 @@ PartitionPage::onPartitionModelReset() { m_ui->partitionTreeView->expandAll(); updateButtons(); + updateBootLoaderIndex(); +} + +void +PartitionPage::updateBootLoaderIndex() +{ + // set bootloader back to user selected index + if ( m_lastSelectedBootLoaderIndex >= 0 && m_ui->bootLoaderComboBox->count() ) { + m_ui->bootLoaderComboBox->setCurrentIndex( m_lastSelectedBootLoaderIndex ); + } +} + +QStringList +PartitionPage::getCurrentUsedMountpoints() +{ + QModelIndex index = m_core->deviceModel()->index( + m_ui->deviceComboBox->currentIndex(), 0 ); + if ( !index.isValid() ) + return QStringList(); + + Device* device = m_core->deviceModel()->deviceForIndex( index ); + QStringList mountPoints; + + for ( Partition* partition : device->partitionTable()->children() ) + { + const QString& mountPoint = PartitionInfo::mountPoint( partition ); + if ( !mountPoint.isEmpty() ) + mountPoints << mountPoint; + } + + return mountPoints; } diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index aaf971888..f998fe2ae 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -60,8 +60,13 @@ private: void editExistingPartition( Device*, Partition* ); void updateBootLoaderInstallPath(); void updateFromCurrentDevice(); + void updateBootLoaderIndex(); + + QStringList getCurrentUsedMountpoints(); QMutex m_revertMutex; + int m_lastSelectedBootLoaderIndex; + bool m_isEfi; }; #endif // PARTITIONPAGE_H diff --git a/src/modules/partition/gui/PartitionPage.ui b/src/modules/partition/gui/PartitionPage.ui index 575b5c507..7d24204c9 100644 --- a/src/modules/partition/gui/PartitionPage.ui +++ b/src/modules/partition/gui/PartitionPage.ui @@ -57,6 +57,9 @@ + + + @@ -180,6 +183,12 @@
gui/PartitionBarsView.h
1 + + PartitionLabelsView + QFrame +
gui/PartitionLabelsView.h
+ 1 +
deviceComboBox diff --git a/src/modules/partition/gui/PartitionSizeController.cpp b/src/modules/partition/gui/PartitionSizeController.cpp index 872364e1c..3bb9e758c 100644 --- a/src/modules/partition/gui/PartitionSizeController.cpp +++ b/src/modules/partition/gui/PartitionSizeController.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,6 +22,8 @@ #include "core/ColorUtils.h" #include "core/KPMHelpers.h" +#include "utils/Units.h" + // Qt #include @@ -55,7 +58,10 @@ PartitionSizeController::setPartResizerWidget( PartResizerWidget* widget, bool f Q_ASSERT( m_device ); if ( m_partResizerWidget ) - disconnect( m_partResizerWidget, 0, this, 0 ); + disconnect( m_partResizerWidget, nullptr, this, nullptr ); + + m_dirty = false; + m_currentSpinBoxValue = -1; // Update partition filesystem. This must be done *before* the call to // PartResizerWidget::init() otherwise it will be ignored by the widget. @@ -84,7 +90,17 @@ PartitionSizeController::setPartResizerWidget( PartResizerWidget* widget, bool f // If we are not formatting, update the widget to make sure the space // between the first and last sectors is big enough to fit the existing // content. - updatePartResizerWidget(); + m_updating = true; + + qint64 firstSector = m_partition->firstSector(); + qint64 lastSector = m_partition->lastSector(); + + // This first time we call doAAUPRW with real first/last sector, + // all further calls will come from updatePartResizerWidget, and + // will therefore use values calculated from the SpinBox. + doAlignAndUpdatePartResizerWidget( firstSector, lastSector ); + + m_updating = false; } } @@ -92,7 +108,7 @@ void PartitionSizeController::setSpinBox( QSpinBox* spinBox ) { if ( m_spinBox ) - disconnect( m_spinBox, 0, this, 0 ); + disconnect( m_spinBox, nullptr, this, nullptr ); m_spinBox = spinBox; m_spinBox->setMaximum( std::numeric_limits< int >::max() ); connectWidgets(); @@ -117,23 +133,43 @@ PartitionSizeController::updatePartResizerWidget() { if ( m_updating ) return; + if ( m_spinBox->value() == m_currentSpinBoxValue ) + return; + m_updating = true; - qint64 sectorSize = qint64( m_spinBox->value() ) * 1024 * 1024 / m_device->logicalSectorSize(); + qint64 sectorSize = qint64( m_spinBox->value() ) * 1024 * 1024 / m_device->logicalSize(); qint64 firstSector = m_partition->firstSector(); qint64 lastSector = firstSector + sectorSize - 1; + + doAlignAndUpdatePartResizerWidget( firstSector, lastSector ); + + m_updating = false; +} + +void +PartitionSizeController::doAlignAndUpdatePartResizerWidget( qint64 firstSector, + qint64 lastSector ) +{ if ( lastSector > m_partResizerWidget->maximumLastSector() ) { qint64 delta = lastSector - m_partResizerWidget->maximumLastSector(); firstSector -= delta; lastSector -= delta; } - m_partResizerWidget->updateLastSector( lastSector ); - m_partResizerWidget->updateFirstSector( firstSector ); + if ( lastSector != m_partition->lastSector() ) + { + m_partResizerWidget->updateLastSector( lastSector ); + m_dirty = true; + } + if ( firstSector != m_partition->firstSector() ) + { + m_partResizerWidget->updateFirstSector( firstSector ); + m_dirty = true; + } // Update spinbox value in case it was an impossible value doUpdateSpinBox(); - m_updating = false; } void @@ -151,8 +187,12 @@ PartitionSizeController::doUpdateSpinBox() { if ( !m_spinBox ) return; - qint64 mbSize = ( m_partition->lastSector() - m_partition->firstSector() + 1 ) * m_device->logicalSectorSize() / 1024 / 1024; + int mbSize = CalamaresUtils::BytesToMiB( m_partition->length() * m_device->logicalSize() ); m_spinBox->setValue( mbSize ); + if ( m_currentSpinBoxValue != -1 && //if it's not the first time we're setting it + m_currentSpinBoxValue != mbSize ) //and the operation changes the SB value + m_dirty = true; + m_currentSpinBoxValue = mbSize; } qint64 @@ -166,3 +206,9 @@ PartitionSizeController::lastSector() const { return m_partition->lastSector(); } + +bool +PartitionSizeController::isDirty() const +{ + return m_dirty; +} diff --git a/src/modules/partition/gui/PartitionSizeController.h b/src/modules/partition/gui/PartitionSizeController.h index 559fdbe47..64430b112 100644 --- a/src/modules/partition/gui/PartitionSizeController.h +++ b/src/modules/partition/gui/PartitionSizeController.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -53,6 +54,8 @@ public: qint64 firstSector() const; qint64 lastSector() const; + bool isDirty() const; + private: QPointer< PartResizerWidget > m_partResizerWidget; QPointer< QSpinBox > m_spinBox; @@ -65,6 +68,10 @@ private: void connectWidgets(); void doUpdateSpinBox(); + void doAlignAndUpdatePartResizerWidget( qint64 fistSector, qint64 lastSector ); + + bool m_dirty = false; + qint64 m_currentSpinBoxValue = -1; private Q_SLOTS: void updatePartResizerWidget(); diff --git a/src/modules/partition/gui/PartitionSplitterWidget.cpp b/src/modules/partition/gui/PartitionSplitterWidget.cpp index b82a81e93..4b0776344 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.cpp +++ b/src/modules/partition/gui/PartitionSplitterWidget.cpp @@ -34,18 +34,18 @@ #include static const int VIEW_HEIGHT = qMax( CalamaresUtils::defaultFontHeight() + 8, // wins out with big fonts - (int)( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts + int( CalamaresUtils::defaultFontHeight() * 0.6 ) + 22 ); // wins out with small fonts static const int CORNER_RADIUS = 3; static const int EXTENDED_PARTITION_MARGIN = qMax( 4, VIEW_HEIGHT / 6 ); PartitionSplitterWidget::PartitionSplitterWidget( QWidget* parent ) : QWidget( parent ) - , m_resizing( false ) , m_itemToResize( PartitionSplitterItem::null() ) , m_itemToResizeNext( PartitionSplitterItem::null() ) , m_itemMinSize( 0 ) , m_itemMaxSize( 0 ) , m_itemPrefSize( 0 ) + , m_resizing( false ) , m_resizeHandleX( 0 ) , HANDLE_SNAP( QApplication::startDragDistance() ) , m_drawNestedPartitions( false ) @@ -105,7 +105,7 @@ PartitionSplitterWidget::setupItems( const QVector& items m_items.clear(); m_items = items; repaint(); - foreach ( const PartitionSplitterItem& item, items ) + for ( const PartitionSplitterItem& item : items ) cDebug() << "PSI added item" << item.itemPath << "size" << item.size; } @@ -114,8 +114,7 @@ void PartitionSplitterWidget::setSplitPartition( const QString& path, qint64 minSize, qint64 maxSize, - qint64 preferredSize, - const QString& newLabel ) + qint64 preferredSize ) { cDebug() << Q_FUNC_INFO << "path:" << path << "\nminSize:" << minSize @@ -287,6 +286,8 @@ PartitionSplitterWidget::minimumSizeHint() const void PartitionSplitterWidget::paintEvent( QPaintEvent* event ) { + Q_UNUSED( event ); + QPainter painter( this ); painter.fillRect( rect(), palette().window() ); painter.setRenderHint( QPainter::Antialiasing ); @@ -400,6 +401,8 @@ PartitionSplitterWidget::mouseMoveEvent( QMouseEvent* event ) void PartitionSplitterWidget::mouseReleaseEvent( QMouseEvent* event ) { + Q_UNUSED( event ); + m_resizing = false; } @@ -491,7 +494,7 @@ PartitionSplitterWidget::drawResizeHandle( QPainter* painter, painter->setRenderHint( QPainter::Antialiasing, false ); painter->setPen( Qt::black ); - painter->drawLine( x, 0, x, h - 1 ); + painter->drawLine( x, 0, x, int(h) - 1 ); } @@ -511,20 +514,20 @@ PartitionSplitterWidget::drawPartitions( QPainter* painter, for ( int row = 0; row < count; ++row ) { const PartitionSplitterItem& item = items[ row ]; - int width; + qreal width; if ( row < count - 1 ) width = totalWidth * ( item.size / total ); else // Make sure we fill the last pixel column width = rect.right() - x + 1; - drawSection( painter, rect, x, width, item ); + drawSection( painter, rect, x, int(width), item ); if ( !item.children.isEmpty() ) { QRect subRect( x + EXTENDED_PARTITION_MARGIN, rect.y() + EXTENDED_PARTITION_MARGIN, - width - 2 * EXTENDED_PARTITION_MARGIN, + int(width) - 2 * EXTENDED_PARTITION_MARGIN, rect.height() - 2 * EXTENDED_PARTITION_MARGIN ); drawPartitions( painter, subRect, item.children ); @@ -600,7 +603,7 @@ PartitionSplitterWidget::computeItemsVector( const QVector< PartitionSplitterIte PartitionSplitterItem thisItem = originalItems[ row ]; QPair< QVector< PartitionSplitterItem >, qreal > pair = computeItemsVector( thisItem.children ); thisItem.children = pair.first; - thisItem.size = pair.second; + thisItem.size = qint64(pair.second); items += thisItem; total += thisItem.size; } @@ -614,7 +617,7 @@ PartitionSplitterWidget::computeItemsVector( const QVector< PartitionSplitterIte if ( items[ row ].size < 0.01 * total ) // If this item is smaller than 1% of everything, { // force its width to 1%. adjustedTotal -= items[ row ].size; - items[ row ].size = 0.01 * total; + items[ row ].size = qint64(0.01 * total); adjustedTotal += items[ row ].size; } } diff --git a/src/modules/partition/gui/PartitionSplitterWidget.h b/src/modules/partition/gui/PartitionSplitterWidget.h index 5065a94ca..0d2d0e233 100644 --- a/src/modules/partition/gui/PartitionSplitterWidget.h +++ b/src/modules/partition/gui/PartitionSplitterWidget.h @@ -40,9 +40,10 @@ struct PartitionSplitterItem qint64 size; Status status; - QVector< PartitionSplitterItem > children; + using ChildVector = QVector< PartitionSplitterItem >; + ChildVector children; - static PartitionSplitterItem null() { return { QString(), QColor(), false, 0, Normal }; } + static PartitionSplitterItem null() { return { QString(), QColor(), false, 0, Normal, ChildVector() }; } bool isNull() const { return itemPath.isEmpty() && size == 0 && status == Normal; } operator bool() const { return !isNull(); } @@ -59,8 +60,7 @@ public: void setSplitPartition( const QString& path, qint64 minSize, qint64 maxSize, - qint64 preferredSize, - const QString& newLabel ); + qint64 preferredSize ); qint64 splitPartitionSize() const; qint64 newPartitionSize() const; diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index a02680a13..7f113ce88 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,6 +42,7 @@ #include #include +#include // Qt #include @@ -52,13 +53,15 @@ #include #include #include +#include +#include PartitionViewStep::PartitionViewStep( QObject* parent ) : Calamares::ViewStep( parent ) + , m_core( nullptr ) , m_widget( new QStackedWidget() ) - , m_core( new PartitionCoreModule( this ) ) , m_choicePage( nullptr ) - , m_manualPartitionPage( new PartitionPage( m_core ) ) + , m_manualPartitionPage( nullptr ) { m_widget->setContentsMargins( 0, 0, 0, 0 ); @@ -66,14 +69,26 @@ PartitionViewStep::PartitionViewStep( QObject* parent ) m_widget->addWidget( m_waitingWidget ); CALAMARES_RETRANSLATE( qobject_cast< WaitingWidget* >( m_waitingWidget )->setText( tr( "Gathering system information..." ) ); ) + m_core = new PartitionCoreModule( this ); // Unusable before init is complete! // We're not done loading, but we need the configuration map first. } +void +PartitionViewStep::initPartitionCoreModule() +{ + Q_ASSERT( m_core ); + m_core->init(); +} + + void PartitionViewStep::continueLoading() { Q_ASSERT( !m_choicePage ); + Q_ASSERT( !m_manualPartitionPage ); + + m_manualPartitionPage = new PartitionPage( m_core ); m_choicePage = new ChoicePage(); m_choicePage->init( m_core ); @@ -141,20 +156,18 @@ PartitionViewStep::createSummaryWidget() const { case ChoicePage::Alongside: modeText = tr( "Install %1 alongside another operating system." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ); + .arg( *Calamares::Branding::ShortVersionedName ); break; case ChoicePage::Erase: modeText = tr( "Erase disk and install %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ); + .arg( *Calamares::Branding::ShortVersionedName ); break; case ChoicePage::Replace: modeText = tr( "Replace a partition with %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ); + .arg( *Calamares::Branding::ShortVersionedName ); break; - default: + case ChoicePage::NoChoice: + case ChoicePage::Manual: modeText = tr( "Manual partitioning." ); } modeLabel->setText( modeText ); @@ -169,26 +182,24 @@ PartitionViewStep::createSummaryWidget() const { case ChoicePage::Alongside: modeText = tr( "Install %1 alongside another operating system on disk %2 (%3)." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) + .arg( *Calamares::Branding::ShortVersionedName ) .arg( info.deviceNode ) .arg( info.deviceName ); break; case ChoicePage::Erase: modeText = tr( "Erase disk %2 (%3) and install %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) + .arg( *Calamares::Branding::ShortVersionedName ) .arg( info.deviceNode ) .arg( info.deviceName ); break; case ChoicePage::Replace: modeText = tr( "Replace a partition on disk %2 (%3) with %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) + .arg( *Calamares::Branding::ShortVersionedName ) .arg( info.deviceNode ) .arg( info.deviceName ); break; - default: + case ChoicePage::NoChoice: + case ChoicePage::Manual: modeText = tr( "Manual partitioning on disk %1 (%2)." ) .arg( info.deviceNode ) .arg( info.deviceName ); @@ -235,6 +246,7 @@ PartitionViewStep::createSummaryWidget() const previewLabels->setModel( info.partitionModelAfter ); preview->setSelectionMode( QAbstractItemView::NoSelection ); previewLabels->setSelectionMode( QAbstractItemView::NoSelection ); + previewLabels->setCustomNewRootLabel( *Calamares::Branding::BootloaderEntryName ); info.partitionModelAfter->setParent( widget ); field = new QVBoxLayout; CalamaresUtils::unmarginLayout( field ); @@ -254,7 +266,6 @@ PartitionViewStep::createSummaryWidget() const QLabel* jobsLabel = new QLabel( widget ); mainLayout->addWidget( jobsLabel ); jobsLabel->setText( jobsLines.join( "
" ) ); - int m = CalamaresUtils::defaultFontHeight() / 2; jobsLabel->setMargin( CalamaresUtils::defaultFontHeight() / 2 ); QPalette pal; pal.setColor( QPalette::Background, pal.background().color().lighter( 108 ) ); @@ -354,8 +365,10 @@ void PartitionViewStep::onActivate() { // if we're coming back to PVS from the next VS - if ( m_widget->currentWidget() == m_choicePage ) + if ( m_widget->currentWidget() == m_choicePage && + m_choicePage->currentChoice() == ChoicePage::Alongside ) { + m_choicePage->applyActionChoice( ChoicePage::Alongside ); // m_choicePage->reset(); //FIXME: ReplaceWidget should be reset maybe? } @@ -373,7 +386,7 @@ PartitionViewStep::onLeave() if ( m_widget->currentWidget() == m_manualPartitionPage ) { - if ( QDir( "/sys/firmware/efi/efivars" ).exists() ) + if ( PartUtils::isEfiSystem() ) { QString espMountPoint = Calamares::JobQueue::instance()->globalStorage()-> value( "efiSystemPartition").toString(); @@ -392,8 +405,7 @@ PartitionViewStep::onLeave() "%2.

" "You can continue without setting up an EFI system " "partition but your system may fail to start." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) + .arg( *Calamares::Branding::ShortProductName ) .arg( espMountPoint ); } else if ( esp && !esp->activeFlags().testFlag( PartitionTable::FlagEsp ) ) @@ -408,8 +420,7 @@ PartitionViewStep::onLeave() "

" "You can continue without setting the flag but your " "system may fail to start." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) + .arg( *Calamares::Branding::ShortProductName ) .arg( espMountPoint ); } @@ -418,7 +429,39 @@ PartitionViewStep::onLeave() QMessageBox::warning( m_manualPartitionPage, message, description ); - return; + } + } + + Partition* root_p = m_core->findPartitionByMountPoint( "/" ); + Partition* boot_p = m_core->findPartitionByMountPoint( "/boot" ); + + if ( root_p and boot_p ) + { + QString message; + QString description; + + // If the root partition is encrypted, and there's a separate boot + // partition which is not encrypted + if ( root_p->fileSystem().type() == FileSystem::Luks && + boot_p->fileSystem().type() != FileSystem::Luks ) + { + message = tr( "Boot partition not encrypted" ); + description = tr( "A separate boot partition was set up together with " + "an encrypted root partition, but the boot partition " + "is not encrypted." + "

" + "There are security concerns with this kind of " + "setup, because important system files are kept " + "on an unencrypted partition.
" + "You may continue if you wish, but filesystem " + "unlocking will happen later during system startup." + "
To encrypt the boot partition, go back and " + "recreate it, selecting Encrypt " + "in the partition creation window." ); + + QMessageBox::warning( m_manualPartitionPage, + message, + description ); } } } @@ -452,6 +495,16 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) gs->insert( "ensureSuspendToDisk", true ); } + if ( configurationMap.contains( "neverCreateSwap" ) && + configurationMap.value( "neverCreateSwap" ).type() == QVariant::Bool ) + { + gs->insert( "neverCreateSwap", configurationMap.value( "neverCreateSwap" ).toBool() ); + } + else + { + gs->insert( "neverCreateSwap", false ); + } + if ( configurationMap.contains( "drawNestedPartitions" ) && configurationMap.value( "drawNestedPartitions" ).type() == QVariant::Bool ) { @@ -463,7 +516,60 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) gs->insert( "drawNestedPartitions", false ); } - QTimer::singleShot( 0, this, &PartitionViewStep::continueLoading ); + if ( configurationMap.contains( "alwaysShowPartitionLabels" ) && + configurationMap.value( "alwaysShowPartitionLabels" ).type() == QVariant::Bool ) + { + gs->insert( "alwaysShowPartitionLabels", + configurationMap.value( "alwaysShowPartitionLabels", true ).toBool() ); + } + else + { + gs->insert( "alwaysShowPartitionLabels", true ); + } + + if ( configurationMap.contains( "defaultFileSystemType" ) && + configurationMap.value( "defaultFileSystemType" ).type() == QVariant::String && + !configurationMap.value( "defaultFileSystemType" ).toString().isEmpty() ) + { + QString typeString = configurationMap.value( "defaultFileSystemType" ).toString(); + gs->insert( "defaultFileSystemType", typeString ); + if ( FileSystem::typeForName( typeString ) == FileSystem::Unknown ) + { + cDebug() << "WARNING: bad default filesystem configuration for partition module. Reverting to ext4 as default."; + gs->insert( "defaultFileSystemType", "ext4" ); + } + } + else + { + gs->insert( "defaultFileSystemType", QStringLiteral( "ext4" ) ); + } + + if ( configurationMap.contains( "enableLuksAutomatedPartitioning" ) && + configurationMap.value( "enableLuksAutomatedPartitioning" ).type() == QVariant::Bool ) + { + gs->insert( "enableLuksAutomatedPartitioning", + configurationMap.value( "enableLuksAutomatedPartitioning" ).toBool() ); + } + else + { + gs->insert( "enableLuksAutomatedPartitioning", true ); + } + + + // Now that we have the config, we load the PartitionCoreModule in the background + // because it could take a while. Then when it's done, we can set up the widgets + // and remove the spinner. + QFutureWatcher< void >* watcher = new QFutureWatcher< void >(); + connect( watcher, &QFutureWatcher< void >::finished, + this, [ this, watcher ] + { + continueLoading(); + watcher->deleteLater(); + } ); + + QFuture< void > future = + QtConcurrent::run( this, &PartitionViewStep::initPartitionCoreModule ); + watcher->setFuture( future ); } diff --git a/src/modules/partition/gui/PartitionViewStep.h b/src/modules/partition/gui/PartitionViewStep.h index a648df965..1aa8190f9 100644 --- a/src/modules/partition/gui/PartitionViewStep.h +++ b/src/modules/partition/gui/PartitionViewStep.h @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,18 +34,16 @@ class PartitionCoreModule; class QStackedWidget; /** - * The starting point of the module. Instantiates PartitionCoreModule and - * PartitionPage, then connect them. + * The starting point of the module. Instantiates PartitionCoreModule, + * ChoicePage and PartitionPage, then connects them. */ class PLUGINDLLEXPORT PartitionViewStep : public Calamares::ViewStep { Q_OBJECT public: - explicit PartitionViewStep( QObject* parent = 0 ); - virtual ~PartitionViewStep(); - - void continueLoading(); + explicit PartitionViewStep( QObject* parent = nullptr ); + virtual ~PartitionViewStep() override; QString prettyName() const override; QWidget* createSummaryWidget() const override; @@ -68,6 +67,9 @@ public: QList< Calamares::job_ptr > jobs() const override; private: + void initPartitionCoreModule(); + void continueLoading(); + PartitionCoreModule* m_core; QStackedWidget* m_widget; ChoicePage* m_choicePage; diff --git a/src/modules/partition/gui/ReplaceWidget.cpp b/src/modules/partition/gui/ReplaceWidget.cpp index a4a63e2ad..f5a492809 100644 --- a/src/modules/partition/gui/ReplaceWidget.cpp +++ b/src/modules/partition/gui/ReplaceWidget.cpp @@ -134,8 +134,7 @@ ReplaceWidget::onPartitionSelected() tr( "Select where to install %1.
" "Warning: this will delete all files " "on the selected partition." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) ); + .arg( *Calamares::Branding::VersionedName ) ); setNextEnabled( false ); return; } @@ -149,7 +148,7 @@ ReplaceWidget::onPartitionSelected() PartitionModel* model = qobject_cast< PartitionModel* >( m_ui->partitionTreeView->model() ); if ( model && ok ) { - QStringList osproberLines = Calamares::JobQueue::instance() + const QStringList osproberLines = Calamares::JobQueue::instance() ->globalStorage() ->value( "osproberLines" ).toStringList(); @@ -168,8 +167,7 @@ ReplaceWidget::onPartitionSelected() updateStatus( CalamaresUtils::Fail, tr( "%1 cannot be installed on empty space. Please select an " "existing partition." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) ); + .arg( *Calamares::Branding::VersionedName ) ); setNextEnabled( false ); return; } @@ -179,8 +177,7 @@ ReplaceWidget::onPartitionSelected() updateStatus( CalamaresUtils::Fail, tr( "%1 cannot be installed on an extended partition. Please select an " "existing primary or logical partition." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) ); + .arg( *Calamares::Branding::VersionedName ) ); setNextEnabled( false ); return; } @@ -189,15 +186,14 @@ ReplaceWidget::onPartitionSelected() { updateStatus( CalamaresUtils::Fail, tr( "%1 cannot be installed on this partition." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) ); + .arg( *Calamares::Branding::VersionedName ) ); setNextEnabled( false ); return; } QString prettyName = tr( "Data partition (%1)" ) .arg( partition->fileSystem().name() ); - foreach ( const QString& line, osproberLines ) + for ( const QString& line : osproberLines ) { QStringList lineColumns = line.split( ':' ); @@ -232,8 +228,7 @@ ReplaceWidget::onPartitionSelected() "The partition %1 is too small for %2. Please select a partition " "with capacity at least %3 GiB." ) .arg( partition->partitionPath() ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) + .arg( *Calamares::Branding::VersionedName ) .arg( requiredSpaceB / ( 1024. * 1024. * 1024. ), 0, 'f', 1 ) .arg( prettyName ) ); @@ -256,8 +251,7 @@ ReplaceWidget::onPartitionSelected() "An EFI system partition cannot be found anywhere " "on this system. Please go back and use manual " "partitioning to set up %1." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) + .arg( *Calamares::Branding::ShortProductName ) .arg( prettyName ) ); setNextEnabled( false ); } @@ -268,16 +262,14 @@ ReplaceWidget::onPartitionSelected() "%1 will be installed on %2.
" "Warning: all data on partition " "%2 will be lost.") - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) + .arg( *Calamares::Branding::VersionedName ) .arg( partition->partitionPath() ) .arg( prettyName ) ); m_ui->bootStatusLabel->show(); m_ui->bootStatusLabel->setText( tr( "The EFI system partition at %1 will be used for starting %2." ) .arg( efiSystemPartitions.first()->partitionPath() ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortProductName ) ) ); + .arg( *Calamares::Branding::ShortProductName ) ); setNextEnabled( true ); } else @@ -287,8 +279,7 @@ ReplaceWidget::onPartitionSelected() "%1 will be installed on %2.
" "Warning: all data on partition " "%2 will be lost.") - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) + .arg( *Calamares::Branding::VersionedName ) .arg( partition->partitionPath() ) .arg( prettyName ) ); m_ui->bootStatusLabel->show(); @@ -312,8 +303,7 @@ ReplaceWidget::onPartitionSelected() "%1 will be installed on %2.
" "Warning: all data on partition " "%2 will be lost.") - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) + .arg( *Calamares::Branding::VersionedName ) .arg( partition->partitionPath() ) .arg( prettyName ) ); setNextEnabled( true ); @@ -357,7 +347,7 @@ ReplaceWidget::updateFromCurrentDevice( QComboBox* devicesComboBox ) QAbstractItemModel* oldModel = m_ui->partitionTreeView->model(); if ( oldModel ) - disconnect( oldModel, 0, this, 0 ); + disconnect( oldModel, nullptr, this, nullptr ); PartitionModel* model = m_core->partitionModelForDevice( device ); m_ui->partitionTreeView->setModel( model ); diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index 76a1bc55f..85c0cb734 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +19,7 @@ #include "ScanningDialog.h" -#include "widgets/QtWaitingSpinner.h" +#include "widgets/waitingspinnerwidget.h" #include #include @@ -37,7 +38,7 @@ ScanningDialog::ScanningDialog( const QString& text, QHBoxLayout* dialogLayout = new QHBoxLayout; setLayout( dialogLayout ); - QtWaitingSpinner* spinner = new QtWaitingSpinner; + WaitingSpinnerWidget* spinner = new WaitingSpinnerWidget(); dialogLayout->addWidget( spinner ); spinner->start(); diff --git a/src/modules/partition/jobs/CheckFileSystemJob.cpp b/src/modules/partition/jobs/CheckFileSystemJob.cpp index 7ceb0805a..3d694f69a 100644 --- a/src/modules/partition/jobs/CheckFileSystemJob.cpp +++ b/src/modules/partition/jobs/CheckFileSystemJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,11 +19,15 @@ #include "jobs/CheckFileSystemJob.h" +#include + // KPMcore #include #include #include +#include + CheckFileSystemJob::CheckFileSystemJob( Partition* partition ) : PartitionJob( partition ) {} @@ -53,6 +58,20 @@ CheckFileSystemJob::exec() Report report( nullptr ); bool ok = fs.check( report, partition()->partitionPath() ); + int retries = 0; + const int MAX_RETRIES = 10; + while ( !ok ) + { + cDebug() << "Partition" << partition()->partitionPath() + << "might not be ready yet, retrying (" << ++retries + << "/" << MAX_RETRIES << ") ..."; + QThread::sleep( 2 /*seconds*/ ); + ok = fs.check( report, partition()->partitionPath() ); + + if ( retries == MAX_RETRIES ) + break; + } + if ( !ok ) return Calamares::JobResult::error( tr( "The file system check on partition %1 failed." ) diff --git a/src/modules/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index 4e156945b..bf07b909c 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -71,8 +72,8 @@ ClearMountsJob::exec() process.start(); process.waitForFinished(); - QString partitions = process.readAllStandardOutput(); - QStringList partitionsList = partitions.simplified().split( ' ' ); + const QString partitions = process.readAllStandardOutput(); + const QStringList partitionsList = partitions.simplified().split( ' ' ); // Build a list of partitions of type 82 (Linux swap / Solaris). // We then need to clear them just in case they contain something resumable from a @@ -99,13 +100,22 @@ ClearMountsJob::exec() *it = (*it).simplified().split( ' ' ).first(); } + const QStringList cryptoDevices = getCryptoDevices(); + for ( const QString &mapperPath : cryptoDevices ) + { + tryUmount( mapperPath ); + QString news = tryCryptoClose( mapperPath ); + if ( !news.isEmpty() ) + goodNews.append( news ); + } + // First we umount all LVM logical volumes we can find process.start( "lvscan", { "-a" } ); process.waitForFinished(); if ( process.exitCode() == 0 ) //means LVM2 tools are installed { - QStringList lvscanLines = QString::fromLocal8Bit( process.readAllStandardOutput() ).split( '\n' ); - foreach ( const QString& lvscanLine, lvscanLines ) + const QStringList lvscanLines = QString::fromLocal8Bit( process.readAllStandardOutput() ).split( '\n' ); + for ( const QString& lvscanLine : lvscanLines ) { QString lvPath = lvscanLine.simplified().split( ' ' ).value( 1 ); //second column lvPath = lvPath.replace( '\'', "" ); @@ -128,8 +138,8 @@ ClearMountsJob::exec() { QSet< QString > vgSet; - QStringList pvdisplayLines = pvdisplayOutput.split( '\n' ); - foreach ( const QString& pvdisplayLine, pvdisplayLines ) + const QStringList pvdisplayLines = pvdisplayOutput.split( '\n' ); + for ( const QString& pvdisplayLine : pvdisplayLines ) { QString pvPath = pvdisplayLine.simplified().split( ' ' ).value( 0 ); QString vgName = pvdisplayLine.simplified().split( ' ' ).value( 1 ); @@ -151,7 +161,16 @@ ClearMountsJob::exec() else cDebug() << "WARNING: this system does not seem to have LVM2 tools."; - foreach ( QString p, partitionsList ) + const QStringList cryptoDevices2 = getCryptoDevices(); + for ( const QString &mapperPath : cryptoDevices2 ) + { + tryUmount( mapperPath ); + QString news = tryCryptoClose( mapperPath ); + if ( !news.isEmpty() ) + goodNews.append( news ); + } + + for ( const QString &p : partitionsList ) { QString partPath = QString( "/dev/%1" ).arg( p ); @@ -214,3 +233,33 @@ ClearMountsJob::tryClearSwap( const QString& partPath ) return QString( "Successfully cleared swap %1." ).arg( partPath ); } + + +QString +ClearMountsJob::tryCryptoClose( const QString& mapperPath ) +{ + QProcess process; + process.start( "cryptsetup", { "close", mapperPath } ); + process.waitForFinished(); + if ( process.exitCode() == 0 ) + return QString( "Successfully closed mapper device %1." ).arg( mapperPath ); + + return QString(); +} + + +QStringList +ClearMountsJob::getCryptoDevices() const +{ + QDir mapperDir( "/dev/mapper" ); + const QFileInfoList fiList = mapperDir.entryInfoList( QDir::Files ); + QStringList list; + QProcess process; + for ( const QFileInfo &fi : fiList ) + { + if ( fi.baseName() == "control" ) + continue; + list.append( fi.absoluteFilePath() ); + } + return list; +} diff --git a/src/modules/partition/jobs/ClearMountsJob.h b/src/modules/partition/jobs/ClearMountsJob.h index 464793f27..bc4df8fe7 100644 --- a/src/modules/partition/jobs/ClearMountsJob.h +++ b/src/modules/partition/jobs/ClearMountsJob.h @@ -38,6 +38,8 @@ public: private: QString tryUmount( const QString& partPath ); QString tryClearSwap( const QString& partPath ); + QString tryCryptoClose( const QString& mapperPath ); + QStringList getCryptoDevices() const; Device* m_device; }; diff --git a/src/modules/partition/jobs/ClearTempMountsJob.cpp b/src/modules/partition/jobs/ClearTempMountsJob.cpp index 95060644a..3f82231d9 100644 --- a/src/modules/partition/jobs/ClearTempMountsJob.cpp +++ b/src/modules/partition/jobs/ClearTempMountsJob.cpp @@ -20,6 +20,8 @@ #include "utils/Logger.h" +#include + // KPMcore #include @@ -74,7 +76,7 @@ ClearTempMountsJob::exec() lineIn = in.readLine(); } - qSort( lst.begin(), lst.end(), []( const QPair< QString, QString >& a, + std::sort ( lst.begin(), lst.end(), []( const QPair< QString, QString >& a, const QPair< QString, QString >& b ) -> bool { return a.first > b.first; diff --git a/src/modules/partition/jobs/CreatePartitionJob.cpp b/src/modules/partition/jobs/CreatePartitionJob.cpp index 9fc1b86a2..aab032a87 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,7 @@ #include "jobs/CreatePartitionJob.h" #include "utils/Logger.h" +#include "utils/Units.h" // KPMcore #include @@ -47,7 +49,7 @@ CreatePartitionJob::prettyName() const { return tr( "Create new %2MB partition on %4 (%3) with file system %1." ) .arg( m_partition->fileSystem().name() ) - .arg( m_partition->capacity() / 1024 / 1024 ) + .arg( CalamaresUtils::BytesToMiB( m_partition->capacity() ) ) .arg( m_device->name() ) .arg( m_device->deviceNode() ); } @@ -59,7 +61,7 @@ CreatePartitionJob::prettyDescription() const return tr( "Create new %2MB partition on %4 " "(%3) with file system %1." ) .arg( m_partition->fileSystem().name() ) - .arg( m_partition->capacity() / 1024 / 1024 ) + .arg( CalamaresUtils::BytesToMiB( m_partition->capacity() ) ) .arg( m_device->name() ) .arg( m_device->deviceNode() ); } @@ -79,7 +81,7 @@ CreatePartitionJob::exec() int step = 0; const qreal stepCount = 4; - Report report( 0 ); + Report report( nullptr ); QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() ); progress( step++ / stepCount ); diff --git a/src/modules/partition/jobs/CreatePartitionTableJob.cpp b/src/modules/partition/jobs/CreatePartitionTableJob.cpp index 5a0c4cd66..e4430134f 100644 --- a/src/modules/partition/jobs/CreatePartitionTableJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionTableJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -72,7 +73,7 @@ CreatePartitionTableJob::prettyStatusMessage() const Calamares::JobResult CreatePartitionTableJob::exec() { - Report report( 0 ); + Report report( nullptr ); QString message = tr( "The installer failed to create a partition table on %1." ).arg( m_device->name() ); CoreBackend* backend = CoreBackendManager::self()->backend(); diff --git a/src/modules/partition/jobs/DeletePartitionJob.cpp b/src/modules/partition/jobs/DeletePartitionJob.cpp index 0aafc542e..bceffd133 100644 --- a/src/modules/partition/jobs/DeletePartitionJob.cpp +++ b/src/modules/partition/jobs/DeletePartitionJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,7 +64,7 @@ DeletePartitionJob::prettyStatusMessage() const Calamares::JobResult DeletePartitionJob::exec() { - Report report( 0 ); + Report report( nullptr ); QString message = tr( "The installer failed to delete partition %1." ).arg( m_partition->devicePath() ); if ( m_device->deviceNode() != m_partition->devicePath() ) diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.cpp b/src/modules/partition/jobs/FillGlobalStorageJob.cpp index 41a8580df..443eb8b9e 100644 --- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp +++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp @@ -1,7 +1,8 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,16 +32,16 @@ #include #include #include +#include // Qt #include #include #include +#include typedef QHash UuidForPartitionHash; -static const char* UUID_DIR = "/dev/disk/by-uuid"; - static UuidForPartitionHash findPartitionUuids( QList < Device* > devices ) { @@ -61,18 +62,96 @@ findPartitionUuids( QList < Device* > devices ) return hash; } + +static QString +getLuksUuid( const QString& path ) +{ + QProcess process; + process.setProgram( "cryptsetup" ); + process.setArguments( { "luksUUID", path } ); + process.start(); + process.waitForFinished(); + if ( process.exitStatus() != QProcess::NormalExit || process.exitCode() ) + return QString(); + QString uuid = QString::fromLocal8Bit( process.readAllStandardOutput() ).trimmed(); + return uuid; +} + +// TODO: this will be available from KPMCore soon +static const char* filesystem_labels[] = { + "unknown", + "extended", + + "ext2", + "ext3", + "ext4", + "linuxswap", + "fat16", + "fat32", + "ntfs", + "reiser", + "reiser4", + "xfs", + "jfs", + "hfs", + "hfsplus", + "ufs", + "unformatted", + "btrfs", + "hpfs", + "luks", + "ocfs2", + "zfs", + "exfat", + "nilfs2", + "lvm2 pv", + "f2fs", + "udf", + "iso9660", +}; + +Q_STATIC_ASSERT_X((sizeof(filesystem_labels) / sizeof(char *)) >= FileSystem::__lastType, "Mismatch in filesystem labels"); + +static QString +untranslatedTypeName(FileSystem::Type t) +{ + + Q_ASSERT( t >= 0 ); + Q_ASSERT( t <= FileSystem::__lastType ); + + return QLatin1String(filesystem_labels[t]); +} + static QVariant mapForPartition( Partition* partition, const QString& uuid ) { QVariantMap map; map[ "device" ] = partition->partitionPath(); map[ "mountPoint" ] = PartitionInfo::mountPoint( partition ); - map[ "fs" ] = partition->fileSystem().name(); + map[ "fsName" ] = partition->fileSystem().name(); + map[ "fs" ] = untranslatedTypeName( partition->fileSystem().type() ); + if ( partition->fileSystem().type() == FileSystem::Luks && + dynamic_cast< FS::luks& >( partition->fileSystem() ).innerFS() ) + map[ "fs" ] = dynamic_cast< FS::luks& >( partition->fileSystem() ).innerFS()->name(); map[ "uuid" ] = uuid; cDebug() << partition->partitionPath() << "mtpoint:" << PartitionInfo::mountPoint( partition ) - << "fs:" << partition->fileSystem().name() + << "fs:" << map[ "fs" ] << '(' << map[ "fsName" ] << ')' << uuid; + + if ( partition->roles().has( PartitionRole::Luks ) ) + { + const FileSystem& fsRef = partition->fileSystem(); + const FS::luks* luksFs = dynamic_cast< const FS::luks* >( &fsRef ); + if ( luksFs ) + { + map[ "luksMapperName" ] = luksFs->mapperName().split( "/" ).last(); + map[ "luksUuid" ] = getLuksUuid( partition->partitionPath() ); + map[ "luksPassphrase" ] = luksFs->passphrase(); + cDebug() << "luksMapperName:" << map[ "luksMapperName" ]; + } + } + return map; } @@ -94,7 +173,8 @@ FillGlobalStorageJob::prettyDescription() const { QStringList lines; - foreach ( QVariant partitionItem, createPartitionList().toList() ) + const auto partitionList = createPartitionList().toList(); + for ( const QVariant &partitionItem : partitionList ) { if ( partitionItem.type() == QVariant::Map ) { @@ -109,8 +189,7 @@ FillGlobalStorageJob::prettyDescription() const { if ( mountPoint == "/" ) lines.append( tr( "Install %1 on new %2 system partition." ) - .arg( Calamares::Branding::instance()->string( - Calamares::Branding::ShortProductName ) ) + .arg( *Calamares::Branding::ShortProductName ) .arg( fsType ) ); else lines.append( tr( "Set up new %2 partition with mount point " @@ -123,8 +202,7 @@ FillGlobalStorageJob::prettyDescription() const if ( mountPoint == "/" ) lines.append( tr( "Install %2 on %3 system partition %1." ) .arg( path ) - .arg( Calamares::Branding::instance()->string( - Calamares::Branding::ShortProductName ) ) + .arg( *Calamares::Branding::ShortProductName ) .arg( fsType ) ); else lines.append( tr( "Set up %3 partition %1 with mount point " @@ -162,10 +240,12 @@ FillGlobalStorageJob::exec() QVariant var = createBootLoaderMap(); if ( !var.isValid() ) cDebug() << "Failed to find path for boot loader"; + cDebug() << "FillGlobalStorageJob writing bootLoader path:" << var; storage->insert( "bootLoader", var ); } else { + cDebug() << "FillGlobalStorageJob writing empty bootLoader value"; storage->insert( "bootLoader", QVariant() ); } return Calamares::JobResult::ok(); diff --git a/src/modules/partition/jobs/FormatPartitionJob.cpp b/src/modules/partition/jobs/FormatPartitionJob.cpp index a1a939f59..162839ce7 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.cpp +++ b/src/modules/partition/jobs/FormatPartitionJob.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * Copyright 2015-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,6 +35,7 @@ // Qt #include +#include FormatPartitionJob::FormatPartitionJob( Device* device, Partition* partition ) : PartitionJob( partition ) @@ -77,7 +78,7 @@ FormatPartitionJob::prettyStatusMessage() const Calamares::JobResult FormatPartitionJob::exec() { - Report report( 0 ); + Report report( nullptr ); // Root of the report tree, no parent QString partitionPath = m_partition->partitionPath(); QString message = tr( "The installer failed to format partition %1 on disk '%2'." ).arg( partitionPath, m_device->name() ); @@ -101,10 +102,27 @@ FormatPartitionJob::exec() } FileSystem& fs = m_partition->fileSystem(); - if ( !fs.create( report, partitionPath ) ) + + bool ok = fs.create( report, partitionPath ); + int retries = 0; + const int MAX_RETRIES = 10; + while ( !ok ) + { + cDebug() << "Partition" << m_partition->partitionPath() + << "might not be ready yet, retrying (" << ++retries + << "/" << MAX_RETRIES << ") ..."; + QThread::sleep( 2 /*seconds*/ ); + ok = fs.create( report, partitionPath ); + + if ( retries == MAX_RETRIES ) + break; + } + + if ( !ok ) { return Calamares::JobResult::error( - tr( "The installer failed to create file system on partition %1." ).arg( partitionPath ), + tr( "The installer failed to create file system on partition %1." ) + .arg( partitionPath ), report.toText() ); } diff --git a/src/modules/partition/jobs/MoveFileSystemJob.cpp b/src/modules/partition/jobs/MoveFileSystemJob.cpp index 9a87db91e..fbcc4641c 100644 --- a/src/modules/partition/jobs/MoveFileSystemJob.cpp +++ b/src/modules/partition/jobs/MoveFileSystemJob.cpp @@ -145,8 +145,12 @@ MoveFileSystemJob::copyBlocks( Report& report, CopyTargetDevice& target, CopySou qint64 blocksCopied = 0; - void* buffer = malloc( blockSize * source.sectorSize() ); - int percent = 0; + Q_ASSERT( blockSize > 0 ); + Q_ASSERT( source.sectorSize() > 0 ); + Q_ASSERT( blockSize * source.sectorSize() > 0 ); + + void* buffer = malloc( size_t( blockSize * source.sectorSize() ) ); + qint64 percent = 0; while ( blocksCopied < blocksToCopy ) { @@ -161,7 +165,7 @@ MoveFileSystemJob::copyBlocks( Report& report, CopyTargetDevice& target, CopySou if ( ++blocksCopied * 100 / blocksToCopy != percent ) { percent = blocksCopied * 100 / blocksToCopy; - progress( qreal( percent ) / 100. ); + progress( percent / 100. ); } } diff --git a/src/modules/partition/jobs/ResizePartitionJob.cpp b/src/modules/partition/jobs/ResizePartitionJob.cpp index 65ee13f72..d3fcb75b4 100644 --- a/src/modules/partition/jobs/ResizePartitionJob.cpp +++ b/src/modules/partition/jobs/ResizePartitionJob.cpp @@ -93,7 +93,7 @@ public: break; case FileSystem::cmdSupportFileSystem: { - qint64 byteLength = m_device->logicalSectorSize() * m_length; + qint64 byteLength = m_device->logicalSize() * m_length; bool ok = fs.resize( report, m_partition->partitionPath(), byteLength ); if ( !ok ) return Calamares::JobResult::error( diff --git a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp index c2304d16f..8c562450f 100644 --- a/src/modules/partition/jobs/SetPartitionFlagsJob.cpp +++ b/src/modules/partition/jobs/SetPartitionFlagsJob.cpp @@ -44,7 +44,15 @@ SetPartFlagsJob::SetPartFlagsJob( Device* device, QString SetPartFlagsJob::prettyName() const { - return tr( "Set flags on partition %1." ).arg( partition()->partitionPath() ); + if ( !partition()->partitionPath().isEmpty() ) + return tr( "Set flags on partition %1." ).arg( partition()->partitionPath() ); + + if ( !partition()->fileSystem().name().isEmpty() ) + return tr( "Set flags on %1MB %2 partition." ) + .arg( partition()->capacity() /1024 /1024) + .arg( partition()->fileSystem().name() ); + + return tr( "Set flags on new partition." ); } @@ -53,13 +61,34 @@ SetPartFlagsJob::prettyDescription() const { QStringList flagsList = PartitionTable::flagNames( m_flags ); if ( flagsList.count() == 0 ) - return tr( "Clear flags on partition %1." ) - .arg( partition()->partitionPath() ); + { + if ( !partition()->partitionPath().isEmpty() ) + return tr( "Clear flags on partition %1." ) + .arg( partition()->partitionPath() ); - return tr( "Flag partition %1 as " - "%2." ) - .arg( partition()->partitionPath() ) - .arg( flagsList.join( ", " ) ); + if ( !partition()->fileSystem().name().isEmpty() ) + return tr( "Clear flags on %1MB %2 partition." ) + .arg( partition()->capacity() /1024 /1024) + .arg( partition()->fileSystem().name() ); + + return tr( "Clear flags on new partition." ); + } + + if ( !partition()->partitionPath().isEmpty() ) + return tr( "Flag partition %1 as " + "%2." ) + .arg( partition()->partitionPath() ) + .arg( flagsList.join( ", " ) ); + + if ( !partition()->fileSystem().name().isEmpty() ) + return tr( "Flag %1MB %2 partition as " + "%3." ) + .arg( partition()->capacity() /1024 /1024) + .arg( partition()->fileSystem().name() ) + .arg( flagsList.join( ", " ) ); + + return tr( "Flag new partition as %1." ) + .arg( flagsList.join( ", " ) ); } @@ -68,13 +97,34 @@ SetPartFlagsJob::prettyStatusMessage() const { QStringList flagsList = PartitionTable::flagNames( m_flags ); if ( flagsList.count() == 0 ) - return tr( "Clearing flags on partition %1." ) - .arg( partition()->partitionPath() ); + { + if ( !partition()->partitionPath().isEmpty() ) + return tr( "Clearing flags on partition %1." ) + .arg( partition()->partitionPath() ); - return tr( "Setting flags %2 on partition " - "%1." ) - .arg( partition()->partitionPath() ) - .arg( flagsList.join( ", " ) ); + if ( !partition()->fileSystem().name().isEmpty() ) + return tr( "Clearing flags on %1MB %2 partition." ) + .arg( partition()->capacity() /1024 /1024) + .arg( partition()->fileSystem().name() ); + + return tr( "Clearing flags on new partition." ); + } + + if ( !partition()->partitionPath().isEmpty() ) + return tr( "Setting flags %2 on partition " + "%1." ) + .arg( partition()->partitionPath() ) + .arg( flagsList.join( ", " ) ); + + if ( !partition()->fileSystem().name().isEmpty() ) + return tr( "Setting flags %3 on " + "%1MB %2 partition." ) + .arg( partition()->capacity() /1024 /1024) + .arg( partition()->fileSystem().name() ) + .arg( flagsList.join( ", " ) ); + + return tr( "Setting flags %1 on new partition." ) + .arg( flagsList.join( ", " ) ); } diff --git a/src/modules/partition/module.desc b/src/modules/partition/module.desc deleted file mode 100644 index ba459e948..000000000 --- a/src/modules/partition/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for partition viewmodule -# Syntax is YAML 1.2 ---- -type: "view" #core or view -name: "partition" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -load: "libcalamares_viewmodule_partition.so" diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 6fc0a93ec..610fb7b42 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -3,8 +3,53 @@ # etc.) use just /boot. efiSystemPartition: "/boot/efi" -# Make sure an autogenerated swap partition is big enough for hibernation +# Make sure an autogenerated swap partition is big enough for hibernation in +# automated partitioning modes. Swap can be disabled through *neverCreateSwap*. +# +# When *ensureSuspendToDisk* is true, swap is never smaller than physical +# memory, follows the guideline 2 * memory until swap reaches 8GiB. +# When *ensureSuspendToDisk* is false, swap size scales up with memory +# size until 8GiB, then at roughly half of memory size. +# +# +# Default is true. ensureSuspendToDisk: true +# Never create swap partitions in automated partitioning modes. +# If this is true, ensureSuspendToDisk is ignored. +# Default is false. +neverCreateSwap: false + # Correctly draw nested (e.g. logical) partitions as such. drawNestedPartitions: false + +# Show/hide partition labels on manual partitioning page. +alwaysShowPartitionLabels: true + +# Default filesystem type, pre-selected in the "Create Partition" dialog. +# The filesystem type selected here is also used for automated install +# modes (Erase, Replace and Alongside). +# Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs +# If nothing is specified, Calamares defaults to "ext4". +defaultFileSystemType: "ext4" + +# Show/hide LUKS related functionality in automated partitioning modes. +# Disable this if you choose not to deploy early unlocking support in GRUB2 +# and/or your distribution's initramfs solution. +# +# BIG FAT WARNING: +# +# This option is unsupported, as it cuts out a crucial security feature. +# Disabling LUKS and shipping Calamares without a correctly configured GRUB2 +# and initramfs is considered suboptimal use of the Calamares software. The +# Calamares team will not provide user support for any potential issue that +# may arise as a consequence of setting this option to false. +# It is strongly recommended that system integrators put in the work to support +# LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc. +# Support is offered to system integrators that wish to do so, through the +# Calamares bug tracker, as well as in #calamares on Freenode. +# For more information on setting up GRUB2 for Calamares with LUKS, see +# https://github.com/calamares/calamares/wiki/LUKS-Deployment +# +# If nothing is specified, LUKS is enabled in automated modes. +#enableLuksAutomatedPartitioning: true diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index c91222222..1917a226b 100644 --- a/src/modules/partition/tests/CMakeLists.txt +++ b/src/modules/partition/tests/CMakeLists.txt @@ -1,4 +1,6 @@ -find_package( Qt5 COMPONENTS Test REQUIRED ) +find_package( Qt5 COMPONENTS Gui Test REQUIRED ) +find_package( KF5 COMPONENTS Service REQUIRED ) + include( ECMAddTests ) set( PartitionModule_SOURCE_DIR .. ) @@ -18,17 +20,20 @@ set( partitionjobtests_SRCS ) include_directories( + ${Qt5Gui_INCLUDE_DIRS} ${PartitionModule_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} ) ecm_add_test( ${partitionjobtests_SRCS} TEST_NAME partitionjobtests LINK_LIBRARIES - calapm ${CALAMARES_LIBRARIES} + kpmcore Qt5::Core Qt5::Test + KF5::Service ) set_target_properties( partitionjobtests PROPERTIES AUTOMOC TRUE ) diff --git a/src/modules/partition/tests/PartitionJobTests.cpp b/src/modules/partition/tests/PartitionJobTests.cpp index bada4aa9a..8702e0119 100644 --- a/src/modules/partition/tests/PartitionJobTests.cpp +++ b/src/modules/partition/tests/PartitionJobTests.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,13 +19,14 @@ #include +#include "utils/Units.h" + #include #include #include #include // CalaPM -#include #include #include #include @@ -36,9 +38,8 @@ QTEST_GUILESS_MAIN( PartitionJobTests ) -static const qint64 MB = 1024 * 1024; - using namespace Calamares; +using CalamaresUtils::operator""_MiB; class PartitionMounter { @@ -79,7 +80,7 @@ generateTestData( qint64 size ) // Fill the array explicitly to keep Valgrind happy for ( auto it = ba.data() ; it < ba.data() + size ; ++it ) { - *it = rand() % 256; + *it = char( rand() & 0xff ); } return ba; } @@ -121,6 +122,8 @@ firstFreePartition( PartitionNode* parent ) //- QueueRunner --------------------------------------------------------------- QueueRunner::QueueRunner( JobQueue* queue ) : m_queue( queue ) + , m_finished( false ) // Same initalizations as in ::run() + , m_success( true ) { connect( m_queue, &JobQueue::finished, this, &QueueRunner::onFinished ); connect( m_queue, &JobQueue::failed, this, &QueueRunner::onFailed ); @@ -166,7 +169,7 @@ PartitionJobTests::initTestCase() QSKIP( "Skipping test, CALAMARES_TEST_DISK is not set. It should point to a disk which can be safely formatted" ); } - QVERIFY( CalaPM::init() ); + QVERIFY( KPMHelpers::initKPMcore() ); FileSystemFactory::init(); refreshDevice(); @@ -212,10 +215,14 @@ PartitionJobTests::newCreatePartitionJob( Partition* freeSpacePartition, Partiti qint64 lastSector; if ( size > 0 ) - lastSector = firstSector + size / m_device->logicalSectorSize(); + lastSector = firstSector + size / m_device->logicalSize(); else lastSector = freeSpacePartition->lastSector(); - FileSystem* fs = FileSystemFactory::create( type, firstSector, lastSector ); + FileSystem* fs = FileSystemFactory::create( type, firstSector, lastSector +#ifdef WITH_KPMCORE22 + ,m_device->logicalSize() +#endif + ); Partition* partition = new Partition( freeSpacePartition->parent(), @@ -241,7 +248,7 @@ PartitionJobTests::testCreatePartition() freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); - job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, 1 * MB); + job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, 1_MiB); Partition* partition1 = job->partition(); QVERIFY( partition1 ); job->updatePreview(); @@ -249,7 +256,7 @@ PartitionJobTests::testCreatePartition() freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); - job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::LinuxSwap, 1 * MB); + job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::LinuxSwap, 1_MiB); Partition* partition2 = job->partition(); QVERIFY( partition2 ); job->updatePreview(); @@ -257,7 +264,7 @@ PartitionJobTests::testCreatePartition() freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); - job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Fat32, 1 * MB); + job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Fat32, 1_MiB); Partition* partition3 = job->partition(); QVERIFY( partition3 ); job->updatePreview(); @@ -282,7 +289,7 @@ PartitionJobTests::testCreatePartitionExtended() freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); - job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, 10 * MB); + job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, 10_MiB); Partition* partition1 = job->partition(); QVERIFY( partition1 ); job->updatePreview(); @@ -290,7 +297,7 @@ PartitionJobTests::testCreatePartitionExtended() freePartition = firstFreePartition( m_device->partitionTable() ); QVERIFY( freePartition ); - job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Extended ), FileSystem::Extended, 10 * MB); + job = newCreatePartitionJob( freePartition, PartitionRole( PartitionRole::Extended ), FileSystem::Extended, 10_MiB); job->updatePreview(); m_queue.enqueue( job_ptr( job ) ); Partition* extendedPartition = job->partition(); @@ -335,7 +342,7 @@ PartitionJobTests::testResizePartition() QFETCH( int, newStartMB ); QFETCH( int, newSizeMB ); - const qint64 sectorForMB = MB / m_device->logicalSectorSize(); + const qint64 sectorForMB = 1_MiB / m_device->logicalSize(); qint64 oldFirst = sectorForMB * oldStartMB; qint64 oldLast = oldFirst + sectorForMB * oldSizeMB - 1; @@ -344,7 +351,7 @@ PartitionJobTests::testResizePartition() // Make the test data file smaller than the full size of the partition to // accomodate for the file system overhead - const QByteArray testData = generateTestData( ( qMin( oldSizeMB, newSizeMB ) ) * MB * 3 / 4 ); + const QByteArray testData = generateTestData( CalamaresUtils::MiBtoBytes( qMin( oldSizeMB, newSizeMB ) ) * 3 / 4 ); const QString testName = "test.data"; // Setup: create the test partition diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py new file mode 100644 index 000000000..dd59f84d3 --- /dev/null +++ b/src/modules/plymouthcfg/main.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2016, Artoo +# Copyright 2017, Alf Gaida +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares + +from libcalamares.utils import debug, target_env_call + + +class PlymouthController: + + def __init__(self): + self.__root = libcalamares.globalstorage.value('rootMountPoint') + + @property + def root(self): + return self.__root + + def setTheme(self): + plymouth_theme = libcalamares.job.configuration["plymouth_theme"] + target_env_call(["sed", "-e", 's|^.*Theme=.*|Theme=' + + plymouth_theme + '|', "-i", + "/etc/plymouth/plymouthd.conf"]) + + def detect(self): + isPlymouth = target_env_call(["which", "plymouth"]) + debug("which plymouth exit code: {!s}".format(isPlymouth)) + + if isPlymouth == 0: + libcalamares.globalstorage.insert("hasPlymouth", True) + else: + libcalamares.globalstorage.insert("hasPlymouth", False) + + return isPlymouth + + def run(self): + if self.detect() == 0: + if (("plymouth_theme" in libcalamares.job.configuration) and + (libcalamares.job.configuration["plymouth_theme"] is not None)): + self.setTheme() + return None + + +def run(): + pc = PlymouthController() + return pc.run() diff --git a/src/modules/plymouthcfg/module.desc b/src/modules/plymouthcfg/module.desc new file mode 100644 index 000000000..f2d2d4743 --- /dev/null +++ b/src/modules/plymouthcfg/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "plymouthcfg" +interface: "python" +script: "main.py" diff --git a/src/modules/plymouthcfg/plymouthcfg.conf b/src/modules/plymouthcfg/plymouthcfg.conf new file mode 100644 index 000000000..6d7ae5c27 --- /dev/null +++ b/src/modules/plymouthcfg/plymouthcfg.conf @@ -0,0 +1,4 @@ +--- +# The plymouth theme to be set if plymouth binary is present +# leave commented if packaged default theme should be used +# plymouth_theme: spinfinity diff --git a/src/modules/removeuser/main.py b/src/modules/removeuser/main.py index f31e1dc9d..795f403fe 100644 --- a/src/modules/removeuser/main.py +++ b/src/modules/removeuser/main.py @@ -4,6 +4,7 @@ # === This file is part of Calamares - === # # Copyright 2015, Teo Mrnjavac +# Copyright 2017. Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,12 +24,16 @@ import libcalamares def run(): - """ Remove live user from target system """ + """ + Remove live user from target system + """ username = libcalamares.job.configuration["username"] try: - libcalamares.utils.check_target_env_call(["userdel", "-f", "-r", username]) + libcalamares.utils.check_target_env_call(["userdel", "-f", + "-r", username]) except subprocess.CalledProcessError as e: - libcalamares.utils.debug("Cannot remove user.", "'userdel' terminated with exit code {}.".format(e.returncode)) - + libcalamares.utils.debug("Cannot remove user. " + "'userdel' terminated with exit code " + "{}.".format(e.returncode)) return None diff --git a/src/modules/services/main.py b/src/modules/services/main.py index e195faff4..03d82554a 100644 --- a/src/modules/services/main.py +++ b/src/modules/services/main.py @@ -5,6 +5,7 @@ # # Copyright 2014, Philip Müller # Copyright 2014, Teo Mrnjavac +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,7 +24,9 @@ import libcalamares def run(): - """ Setup systemd services """ + """ + Setup systemd services + """ services = libcalamares.job.configuration['services'] targets = libcalamares.job.configuration['targets'] disable = libcalamares.job.configuration['disable'] @@ -35,37 +38,64 @@ def run(): # enable services for svc in services: - ec = libcalamares.utils.target_env_call(['systemctl', 'enable', '{}.service'.format(svc['name'])]) + ec = libcalamares.utils.target_env_call( + ['systemctl', 'enable', '{}.service'.format(svc['name'])] + ) if ec != 0: if svc['mandatory']: - return "Cannot enable systemd service {}".format(svc['name']), \ - "systemctl enable call in chroot returned error code {}".format(ec) + return ("Cannot enable systemd service {}".format(svc['name']), + "systemctl enable call in chroot returned error code " + "{}".format(ec) + ) else: - libcalamares.utils.debug("Cannot enable systemd service {}".format(svc['name'])) - libcalamares.utils.debug("systemctl enable call in chroot returned error code {}".format(ec)) + libcalamares.utils.debug( + "Cannot enable systemd service {}".format(svc['name']) + ) + libcalamares.utils.debug( + "systemctl enable call in chroot returned error code " + "{}".format(ec) + ) # enable targets for tgt in targets: - ec = libcalamares.utils.target_env_call(['systemctl', 'enable', '{}.target'.format(tgt['name'])]) + ec = libcalamares.utils.target_env_call( + ['systemctl', 'enable', '{}.target'.format(tgt['name'])] + ) if ec != 0: if tgt['mandatory']: - return "Cannot enable systemd target {}".format(tgt['name']), \ - "systemctl enable call in chroot returned error code {}".format(ec) + return ("Cannot enable systemd target {}".format(tgt['name']), + "systemctl enable call in chroot returned error code" + "{}".format(ec) + ) else: - libcalamares.utils.debug("Cannot enable systemd target {}".format(tgt['name'])) - libcalamares.utils.debug("systemctl enable call in chroot returned error code {}".format(ec)) + libcalamares.utils.debug( + "Cannot enable systemd target {}".format(tgt['name']) + ) + libcalamares.utils.debug( + "systemctl enable call in chroot returned error code " + "{}".format(ec) + ) for dbl in disable: - ec = libcalamares.utils.target_env_call(['systemctl', 'disable', '{}.service'.format(dbl['name'])]) + ec = libcalamares.utils.target_env_call( + ['systemctl', 'disable', '{}.service'.format(dbl['name'])] + ) if ec != 0: if dbl['mandatory']: - return "Cannot disable systemd service {}".format(dbl['name']), \ - "systemctl disable call in chroot returned error code {}".format(ec) + return ("Cannot disable systemd service" + "{}".format(dbl['name']), + "systemctl disable call in chroot returned error code" + "{}".format(ec)) else: - libcalamares.utils.debug("Cannot disable systemd service {}".format(dbl['name'])) - libcalamares.utils.debug("systemctl disable call in chroot returned error code {}".format(ec)) + libcalamares.utils.debug( + "Cannot disable systemd service {}".format(dbl['name']) + ) + libcalamares.utils.debug( + "systemctl disable call in chroot returned error code " + "{}".format(ec) + ) return None diff --git a/src/modules/services/services.conf b/src/modules/services/services.conf index 50069e696..d9c8895ea 100644 --- a/src/modules/services/services.conf +++ b/src/modules/services/services.conf @@ -15,3 +15,6 @@ targets: disable: - name: "pacman-init" mandatory: false + +# Example to express an empty list: +# disable: [] diff --git a/src/modules/summary/CMakeLists.txt b/src/modules/summary/CMakeLists.txt index c1b208aec..64b8d3c36 100644 --- a/src/modules/summary/CMakeLists.txt +++ b/src/modules/summary/CMakeLists.txt @@ -6,7 +6,7 @@ calamares_add_plugin( summary SummaryViewStep.cpp SummaryPage.cpp UI - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui SHARED_LIB ) diff --git a/src/modules/summary/SummaryPage.cpp b/src/modules/summary/SummaryPage.cpp index 387aa274a..bc0864775 100644 --- a/src/modules/summary/SummaryPage.cpp +++ b/src/modules/summary/SummaryPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +24,7 @@ #include "ExecutionViewStep.h" #include "utils/Retranslator.h" #include "utils/CalamaresUtilsGui.h" +#include "utils/Logger.h" #include "ViewManager.h" #include @@ -34,9 +36,10 @@ static const int SECTION_SPACING = 12; SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent ) : QWidget() , m_thisViewStep( thisViewStep ) - , m_scrollArea( new QScrollArea( this ) ) , m_contentWidget( nullptr ) + , m_scrollArea( new QScrollArea( this ) ) { + Q_UNUSED( parent ); Q_ASSERT( m_thisViewStep ); QVBoxLayout* layout = new QVBoxLayout( this ); layout->setContentsMargins( 0, 0, 0, 0 ); @@ -56,17 +59,18 @@ SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent ) } +// Adds a widget for those ViewSteps that want a summary; +// see SummaryPage documentation and also ViewStep docs. void SummaryPage::onActivate() { createContentWidget(); - QString text; bool first = true; - Calamares::ViewStepList steps = + const Calamares::ViewStepList steps = stepsForSummary( Calamares::ViewManager::instance()->viewSteps() ); - foreach ( Calamares::ViewStep* step, steps ) + for ( Calamares::ViewStep* step : steps ) { QString text = step->prettyStatus(); QWidget* widget = step->createSummaryWidget(); @@ -94,14 +98,27 @@ SummaryPage::onActivate() itemBodyLayout->addSpacing( CalamaresUtils::defaultFontHeight() * 2 ); } m_layout->addStretch(); -} + m_scrollArea->setWidget( m_contentWidget ); + + auto summarySize = m_contentWidget->sizeHint(); + if ( summarySize.height() > m_scrollArea->size().height() ) + { + auto enlarge = 2 + summarySize.height() - m_scrollArea->size().height(); + auto widgetSize = this->size(); + widgetSize.setHeight( widgetSize.height() + enlarge ); + + cDebug() << "Summary widget is larger than viewport, enlarge by" << enlarge << "to" << widgetSize; + + emit m_thisViewStep->enlarge( QSize( 0, enlarge ) ); // Only expand height + } +} Calamares::ViewStepList SummaryPage::stepsForSummary( const Calamares::ViewStepList& allSteps ) const { Calamares::ViewStepList steps; - foreach ( Calamares::ViewStep* step, allSteps ) + for ( Calamares::ViewStep* step : allSteps ) { // We start from the beginning of the complete steps list. If we encounter any // ExecutionViewStep, it means there was an execution phase in the past, and any @@ -132,7 +149,6 @@ SummaryPage::createContentWidget() m_contentWidget = new QWidget; m_layout = new QVBoxLayout( m_contentWidget ); CalamaresUtils::unmarginLayout( m_layout ); - m_scrollArea->setWidget( m_contentWidget ); } QLabel* diff --git a/src/modules/summary/SummaryPage.h b/src/modules/summary/SummaryPage.h index 21d2e2ede..05331d260 100644 --- a/src/modules/summary/SummaryPage.h +++ b/src/modules/summary/SummaryPage.h @@ -28,6 +28,25 @@ class QScrollArea; class QVBoxLayout; class SummaryViewStep; +/** @brief Provide a summary view with to-be-done action descriptions. +* +* Those steps that occur since the previous execution step (e.g. that +* are queued for execution now; in the normal case where there is +* only one execution step, this means everything that the installer +* is going to do) are added to the summary view. Each view step +* can provide one of the following things to display in the summary +* view: +* +* - A string from ViewStep::prettyStatus(), which is formatted +* and added as a QLabel to the view. Return an empty string +* from prettyStatus() to avoid this. +* - A QWidget from ViewStep::createSummaryWidget(). This is for +* complicated displays not suitable for simple text representation. +* Return a nullptr to avoid this. +* +* If neither a (non-empty) string nor a widget is returned, the +* step is not named in the summary. +*/ class SummaryPage : public QWidget { Q_OBJECT @@ -35,6 +54,7 @@ public: explicit SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent = nullptr ); void onActivate(); + void createContentWidget(); private: Calamares::ViewStepList stepsForSummary( const Calamares::ViewStepList& allSteps ) const; @@ -44,7 +64,6 @@ private: QVBoxLayout* m_layout = nullptr; QWidget* m_contentWidget = nullptr; - void createContentWidget(); QLabel* createTitleLabel( const QString& text ) const; QLabel* createBodyLabel( const QString& text ) const; diff --git a/src/modules/summary/SummaryViewStep.cpp b/src/modules/summary/SummaryViewStep.cpp index da4aa1cb6..36f94b77f 100644 --- a/src/modules/summary/SummaryViewStep.cpp +++ b/src/modules/summary/SummaryViewStep.cpp @@ -104,3 +104,10 @@ SummaryViewStep::onActivate() m_widget->onActivate(); } + +void +SummaryViewStep::onLeave() +{ + m_widget->createContentWidget(); +} + diff --git a/src/modules/summary/SummaryViewStep.h b/src/modules/summary/SummaryViewStep.h index 144541c69..e1a8df89b 100644 --- a/src/modules/summary/SummaryViewStep.h +++ b/src/modules/summary/SummaryViewStep.h @@ -34,7 +34,7 @@ class PLUGINDLLEXPORT SummaryViewStep : public Calamares::ViewStep public: explicit SummaryViewStep( QObject* parent = nullptr ); - virtual ~SummaryViewStep(); + virtual ~SummaryViewStep() override; QString prettyName() const override; @@ -52,6 +52,7 @@ public: QList< Calamares::job_ptr > jobs() const override; void onActivate() override; + void onLeave() override; private: SummaryPage* m_widget; diff --git a/src/modules/summary/module.desc b/src/modules/summary/module.desc deleted file mode 100644 index fcd8c6f86..000000000 --- a/src/modules/summary/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for keyboard viewmodule -# Syntax is YAML 1.2 ---- -type: "view" -name: "summary" -interface: "qtplugin" -load: "libcalamares_viewmodule_summary.so" diff --git a/src/modules/testmodule.py b/src/modules/testmodule.py index a2d7130dd..d115694eb 100755 --- a/src/modules/testmodule.py +++ b/src/modules/testmodule.py @@ -4,6 +4,7 @@ # === This file is part of Calamares - === # # Copyright 2014, Teo Mrnjavac +# Copyright 2017, Adriaan de Groot # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -68,7 +69,9 @@ def main(): parser.add_argument("globalstorage_yaml", nargs="?", help="A yaml file to initialize GlobalStorage.") parser.add_argument("configuration_yaml", nargs="?", - help="A yaml file to initialize the configuration dict.") + help="A yaml file to initialize the Job.") + parser.add_argument("--lang", "-l", nargs="?", default=None, + help="Set translation language.") args = parser.parse_args() print("Testing module in: " + args.moduledir) @@ -81,7 +84,12 @@ def main(): print("Only Python jobs can be tested.") return 1 - libcalamares.globalstorage = libcalamares.GlobalStorage() + # Parameter None creates a new, empty GlobalStorage + libcalamares.globalstorage = libcalamares.GlobalStorage(None) + libcalamares.globalstorage.insert("testing", True) + if args.lang: + libcalamares.globalstorage.insert("locale", args.lang) + libcalamares.globalstorage.insert("localeConf", {"LANG": args.lang}) # if a file for simulating globalStorage contents is provided, load it if args.globalstorage_yaml: diff --git a/src/modules/umount/umount.conf b/src/modules/umount/umount.conf index 98c04fff2..907b8d890 100644 --- a/src/modules/umount/umount.conf +++ b/src/modules/umount/umount.conf @@ -1,5 +1,5 @@ --- -#scrLog: "/path/to/installation.log" +#srcLog: "/path/to/installation.log" #destLog: "/var/log/installation.log" # example when using the Calamares created log: #srcLog: "/root/.cache/Calamares/Calamares/Calamares.log" diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 2fbcfbee8..9eaa5c622 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -6,6 +6,7 @@ # Copyright 2014, Teo Mrnjavac # Copyright 2014, Daniel Hillenbrand # Copyright 2014, Philip Müller +# Copyright 2017, Alf Gaida # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,7 +32,8 @@ from libcalamares import * class UnpackEntry: - """ Extraction routine using rsync. + """ + Extraction routine using rsync. :param source: :param sourcefs: @@ -51,7 +53,8 @@ ON_POSIX = 'posix' in sys.builtin_module_names def list_excludes(destination): - """ List excludes for rsync. + """ + List excludes for rsync. :param destination: :return: @@ -69,7 +72,8 @@ def list_excludes(destination): def file_copy(source, dest, progress_cb): - """ Extract given image using rsync. + """ + Extract given image using rsync. :param source: :param dest: @@ -89,7 +93,9 @@ def file_copy(source, dest, progress_cb): args = ['rsync', '-aHAXr'] args.extend(list_excludes(dest)) args.extend(['--progress', source, dest]) - process = subprocess.Popen(args, env=at_env, bufsize=1, stdout=subprocess.PIPE, close_fds=ON_POSIX) + process = subprocess.Popen( + args, env=at_env, bufsize=1, stdout=subprocess.PIPE, close_fds=ON_POSIX + ) for line in iter(process.stdout.readline, b''): # small comment on this regexp. @@ -119,14 +125,27 @@ def file_copy(source, dest, progress_cb): process.wait() - if process.returncode != 0: + # 23 is the return code rsync returns if it cannot write extended + # attributes (with -X) because the target file system does not support it, + # e.g., the FAT EFI system partition. We need -X because distributions + # using file system capabilities and/or SELinux require the extended + # attributes. But distributions using SELinux may also have SELinux labels + # set on files under /boot/efi, and rsync complains about those. The only + # clean way would be to split the rsync into one with -X and + # --exclude /boot/efi and a separate one without -X for /boot/efi, but only + # if /boot/efi is actually an EFI system partition. For now, this hack will + # have to do. See also: + # https://bugzilla.redhat.com/show_bug.cgi?id=868755#c50 + # for the same issue in Anaconda, which uses a similar workaround. + if process.returncode != 0 and process.returncode != 23: return "rsync failed with error code {}.".format(process.returncode) return None class UnpackOperation: - """ Extraction routine using unsquashfs. + """ + Extraction routine using unsquashfs. :param entries: """ @@ -136,7 +155,9 @@ class UnpackOperation: self.entry_for_source = dict((x.source, x) for x in self.entries) def report_progress(self): - """ Pass progress to user interface """ + """ + Pass progress to user interface + """ progress = float(0) for entry in self.entries: @@ -151,7 +172,8 @@ class UnpackOperation: job.setprogress(progress) def run(self): - """ Extract given image using unsquashfs. + """ + Extract given image using unsquashfs. :return: """ @@ -159,7 +181,8 @@ class UnpackOperation: try: for entry in self.entries: - imgbasename = os.path.splitext(os.path.basename(entry.source))[0] + imgbasename = os.path.splitext( + os.path.basename(entry.source))[0] imgmountdir = os.path.join(source_mount_path, imgbasename) os.mkdir(imgmountdir) @@ -169,14 +192,20 @@ class UnpackOperation: if entry.sourcefs == "squashfs": if shutil.which("unsquashfs") is None: + msg = ("Failed to find unsquashfs, make sure you have " + "the squashfs-tools package installed") + print(msg) return ("Failed to unpack image", - "Failed to find unsquashfs, make sure you have " - "the squashfs-tools package installed") + msg) - fslist = subprocess.check_output(["unsquashfs", "-l", entry.source]) + fslist = subprocess.check_output( + ["unsquashfs", "-l", entry.source] + ) if entry.sourcefs == "ext4": - fslist = subprocess.check_output(["find", imgmountdir, "-type", "f"]) + fslist = subprocess.check_output( + ["find", imgmountdir, "-type", "f"] + ) entry.total = len(fslist.splitlines()) @@ -184,22 +213,35 @@ class UnpackOperation: error_msg = self.unpack_image(entry, imgmountdir) if error_msg: - return "Failed to unpack image {}".format(entry.source), error_msg + return ("Failed to unpack image {}".format(entry.source), + error_msg) return None finally: shutil.rmtree(source_mount_path) def mount_image(self, entry, imgmountdir): - """ Mount given image as loop device. + """ + Mount given image as loop device. :param entry: :param imgmountdir: """ - subprocess.check_call(["mount", entry.source, imgmountdir, "-t", entry.sourcefs, "-o", "loop"]) + if os.path.isdir(entry.source): + subprocess.check_call(["mount", + "--bind", entry.source, + imgmountdir]) + else: + subprocess.check_call(["mount", + entry.source, + imgmountdir, + "-t", entry.sourcefs, + "-o", "loop" + ]) def unpack_image(self, entry, imgmountdir): - """ Unpacks image. + """ + Unpacks image. :param entry: :param imgmountdir: @@ -220,22 +262,8 @@ class UnpackOperation: def run(): - """ Unsquashes filesystem from given image file. - - from globalstorage: rootMountPoint - from job.configuration: the path to where to mount the source image(s) for copying - an ordered list of unpack mappings for image file <-> target dir relative - to rootMountPoint, e.g.: - configuration: - unpack: - - source: "/path/to/filesystem.img" - sourcefs: "ext4" - destination: "" - - source: "/path/to/another/filesystem.sqfs" - sourcefs: "squashfs" - destination: "" - - :return: + """ + Unsquash filesystem. """ PATH_PROCFS = '/proc/filesystems' @@ -264,7 +292,8 @@ def run(): if os.path.isfile(PATH_PROCFS) and os.access(PATH_PROCFS, os.R_OK): with open(PATH_PROCFS, 'r') as procfile: filesystems = procfile.read() - filesystems = filesystems.replace("nodev", "").replace("\t", "").splitlines() + filesystems = filesystems.replace( + "nodev", "").replace("\t", "").splitlines() # Check if the source filesystem is supported for fs in filesystems: @@ -276,7 +305,7 @@ def run(): destination = os.path.abspath(root_mount_point + entry["destination"]) - if not os.path.exists(source) or os.path.isdir(source): + if not os.path.exists(source): return "Bad source", "source=\"{}\"".format(source) if not os.path.isdir(destination): diff --git a/src/modules/unpackfs/module.desc b/src/modules/unpackfs/module.desc index ea7e2bcad..67a56b06c 100644 --- a/src/modules/unpackfs/module.desc +++ b/src/modules/unpackfs/module.desc @@ -3,4 +3,4 @@ type: "job" name: "unpackfs" interface: "python" -script: "main.py" #assumed relative to the current directory +script: "main.py" diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf index 68de113b5..9720f19a1 100644 --- a/src/modules/unpackfs/unpackfs.conf +++ b/src/modules/unpackfs/unpackfs.conf @@ -1,8 +1,38 @@ +# Unsquash / unpack a filesystem. Multiple sources are supported, and +# they may be squashed or plain filesystems. +# +# Configuration: +# +# from globalstorage: rootMountPoint +# from job.configuration: the path to where to mount the source image(s) +# for copying an ordered list of unpack mappings for image file <-> +# target dir relative to rootMountPoint. + --- unpack: - - source: "/path/to/filesystem.img" - sourcefs: "ext4" - destination: "" - - source: "/path/to/another/filesystem.sqfs" - sourcefs: "squashfs" +# Each list item is unpacked, in order, to the target system. +# Each list item has the following attributes: +# source: path relative to the live / intstalling system to the image +# sourcefs: ext4 or squashfs (may be others if mount supports it) +# destination: path relative to rootMountPoint (so in the target +# system) where this filesystem is unpacked. + +# Usually you list a filesystem image to unpack; you can use +# squashfs or an ext4 image. +# +# - source: "/path/to/filesystem.sqfs" +# sourcefs: "squashfs" +# destination: "" + +# You can list more than one filesystem. +# +# - source: "/path/to/another/filesystem.img" +# sourcefs: "ext4" +# destination: "" +# + +# You can list filesystem source paths relative to the Calamares run +# directory, if you use -d (this is only useful for testing, though). + - source: ./example.sqfs + sourcefs: squashfs destination: "" diff --git a/src/modules/users/CMakeLists.txt b/src/modules/users/CMakeLists.txt index fc1f26d0f..074118d54 100644 --- a/src/modules/users/CMakeLists.txt +++ b/src/modules/users/CMakeLists.txt @@ -1,7 +1,13 @@ -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) +find_package(ECM 5.10.0 NO_MODULE) +if( ECM_FOUND ) + set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) + include( ECMAddTests ) +endif() -list( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" ) -find_package( Crypt ) +find_package( Qt5 COMPONENTS Core Test REQUIRED ) +find_package( Crypt REQUIRED ) + +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) calamares_add_plugin( users TYPE viewmodule @@ -16,8 +22,23 @@ calamares_add_plugin( users page_usersetup.ui RESOURCES users.qrc - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui ${CRYPT_LIBRARIES} SHARED_LIB ) + +if( ECM_FOUND ) + ecm_add_test( + PasswordTests.cpp + SetPasswordJob.cpp + TEST_NAME + passwordtest + LINK_LIBRARIES + ${CALAMARES_LIBRARIES} + Qt5::Core + Qt5::Test + ${CRYPT_LIBRARIES} + ) + set_target_properties( passwordtest PROPERTIES AUTOMOC TRUE ) +endif() diff --git a/src/modules/users/CMakeModules/FindCrypt.cmake b/src/modules/users/CMakeModules/FindCrypt.cmake deleted file mode 100644 index 293228e6f..000000000 --- a/src/modules/users/CMakeModules/FindCrypt.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# - Find libcrypt -# Find the libcrypt includes and the libcrypt libraries -# This module defines -# LIBCRYPT_INCLUDE_DIR, root crypt include dir. Include crypt with crypt.h -# LIBCRYPT_LIBRARY, the path to libcrypt -# LIBCRYPT_FOUND, whether libcrypt was found - - -find_path( CRYPT_INCLUDE_DIR NAMES crypt.h - HINTS - ${CMAKE_INSTALL_INCLUDEDIR} -) - -find_library( CRYPT_LIBRARIES NAMES crypt - HINTS - ${CMAKE_INSTALL_LIBDIR} -) - -include( FindPackageHandleStandardArgs ) -find_package_handle_standard_args( Crypt - REQUIRED_VARS CRYPT_LIBRARIES CRYPT_INCLUDE_DIR ) - -mark_as_advanced( CRYPT_INCLUDE_DIR CRYPT_LIBRARIES ) diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp index 4fbe19c9d..5f6843db5 100644 --- a/src/modules/users/CreateUserJob.cpp +++ b/src/modules/users/CreateUserJob.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,6 +23,7 @@ #include "utils/Logger.h" #include "utils/CalamaresUtilsSystem.h" +#include #include #include #include @@ -114,13 +115,35 @@ CreateUserJob::exec() { QString autologinGroup; if ( gs->contains( "autologinGroup" ) && - !gs->value( "autologinGroup" ).toString().isEmpty() ) + !gs->value( "autologinGroup" ).toString().isEmpty() ) + { autologinGroup = gs->value( "autologinGroup" ).toString(); - else - autologinGroup = QStringLiteral( "autologin" ); + CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", autologinGroup } ); + defaultGroups.append( QString( ",%1" ).arg( autologinGroup ) ); + } + } - CalamaresUtils::System::instance()->targetEnvCall( { "groupadd", autologinGroup } ); - defaultGroups.append( QString( ",%1" ).arg( autologinGroup ) ); + // If we're looking to reuse the contents of an existing /home + if ( gs->value( "reuseHome" ).toBool() ) + { + QString shellFriendlyHome = "/home/" + m_userName; + QDir existingHome( destDir.absolutePath() + shellFriendlyHome ); + if ( existingHome.exists() ) + { + QString backupDirName = "dotfiles_backup_" + + QDateTime::currentDateTime() + .toString( "yyyy-MM-dd_HH-mm-ss" ); + existingHome.mkdir( backupDirName ); + + CalamaresUtils::System::instance()-> + targetEnvCall( { "sh", + "-c", + "mv -f " + + shellFriendlyHome + "/.* " + + shellFriendlyHome + "/" + + backupDirName + } ); + } } int ec = CalamaresUtils::System::instance()-> @@ -129,8 +152,8 @@ CreateUserJob::exec() "-s", "/bin/bash", "-U", - "-G", - defaultGroups, + "-c", + m_fullName, m_userName } ); if ( ec ) return Calamares::JobResult::error( tr( "Cannot create user %1." ) @@ -138,11 +161,16 @@ CreateUserJob::exec() tr( "useradd terminated with error code %1." ) .arg( ec ) ); - ec = CalamaresUtils::System::instance()->targetEnvCall( { "chfn", "-f", m_fullName, m_userName } ); + ec = CalamaresUtils::System::instance()-> + targetEnvCall( { "usermod", + "-aG", + defaultGroups, + m_userName } ); if ( ec ) - return Calamares::JobResult::error( tr( "Cannot set full name for user %1." ) - .arg( m_userName ), - tr( "chfn terminated with error code %1." ) + return Calamares::JobResult::error( tr( "Cannot add user %1 to groups: %2." ) + .arg( m_userName ) + .arg( defaultGroups ), + tr( "usermod terminated with error code %1." ) .arg( ec ) ); ec = CalamaresUtils::System::instance()-> diff --git a/src/modules/users/PasswordTests.cpp b/src/modules/users/PasswordTests.cpp new file mode 100644 index 000000000..cb52e7ef7 --- /dev/null +++ b/src/modules/users/PasswordTests.cpp @@ -0,0 +1,54 @@ +/* === This file is part of Calamares - === + * + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "SetPasswordJob.h" + +#include "PasswordTests.h" + +#include + +QTEST_GUILESS_MAIN( PasswordTests ) + +PasswordTests::PasswordTests() +{ +} + +PasswordTests::~PasswordTests() +{ +} + +void +PasswordTests::initTestCase() +{ +} + +void +PasswordTests::testSalt() +{ + QString s = SetPasswordJob::make_salt( 8 ); + QCOMPARE( s.length(), 4 + 8 ); // 8 salt chars, plus $6$, plus trailing $ + QVERIFY( s.startsWith( "$6$" ) ); + QVERIFY( s.endsWith( '$' ) ); + qDebug() << "Obtained salt" << s; + + s = SetPasswordJob::make_salt( 11 ); + QCOMPARE( s.length(), 4 + 11 ); + QVERIFY( s.startsWith( "$6$" ) ); + QVERIFY( s.endsWith( '$' ) ); + qDebug() << "Obtained salt" << s; +} diff --git a/src/modules/users/PasswordTests.h b/src/modules/users/PasswordTests.h new file mode 100644 index 000000000..5b51fd11f --- /dev/null +++ b/src/modules/users/PasswordTests.h @@ -0,0 +1,36 @@ +/* === This file is part of Calamares - === + * + * Copyright 2017, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef PASSWORDTESTS_H +#define PASSWORDTESTS_H + +#include + +class PasswordTests : public QObject +{ + Q_OBJECT +public: + PasswordTests(); + ~PasswordTests() override; + +private Q_SLOTS: + void initTestCase(); + void testSalt(); +}; + +#endif diff --git a/src/modules/users/SetPasswordJob.cpp b/src/modules/users/SetPasswordJob.cpp index 4828aec93..d917e6d5f 100644 --- a/src/modules/users/SetPasswordJob.cpp +++ b/src/modules/users/SetPasswordJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,7 +26,12 @@ #include +#include + +#ifndef NO_CRYPT_H #include +#endif +#include SetPasswordJob::SetPasswordJob( const QString& userName, const QString& newPassword ) @@ -50,6 +56,53 @@ SetPasswordJob::prettyStatusMessage() const } +/// Returns a modular hashing salt for method 6 (SHA512) with a 16 character random salt. +QString +SetPasswordJob::make_salt(int length) +{ + Q_ASSERT(length >= 8); + Q_ASSERT(length <= 128); + + static const char salt_chars[] = { + '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', + 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', + 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', + 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + static_assert( sizeof(salt_chars) == 64, "Missing salt_chars"); + + std::random_device r; + std::seed_seq seed{r(), r(), r(), r(), r(), r(), r(), r()}; + std::mt19937_64 twister(seed); + + std::uint64_t next; + int current_length = 0; + + QString salt_string; + salt_string.reserve(length + 10); + + while ( current_length < length ) + { + next = twister(); + // In 64 bits, we have 10 blocks of 6 bits; map each block of 6 bits + // to a single salt character. + for ( unsigned int char_count = 0; char_count < 10; ++char_count ) + { + char c = salt_chars[next & 0b0111111]; + next >>= 6; + salt_string.append( c ); + if (++current_length >= length) + break; + } + } + + salt_string.truncate( length ); + salt_string.insert( 0, "$6$" ); + salt_string.append( '$' ); + return salt_string; +} + Calamares::JobResult SetPasswordJob::exec() { @@ -59,11 +112,23 @@ SetPasswordJob::exec() return Calamares::JobResult::error( tr( "Bad destination system path." ), tr( "rootMountPoint is %1" ).arg( destDir.absolutePath() ) ); + if ( m_userName == "root" && + m_newPassword.isEmpty() ) //special case for disabling root account + { + int ec = CalamaresUtils::System::instance()-> + targetEnvCall( { "passwd", + "-dl", + m_userName } ); + if ( ec ) + return Calamares::JobResult::error( tr( "Cannot disable root account." ), + tr( "passwd terminated with error code %1." ) + .arg( ec ) ); + return Calamares::JobResult::ok(); + } + QString encrypted = QString::fromLatin1( - crypt( m_newPassword.toLatin1(), - QString( "$6$%1$" ) - .arg( m_userName ) - .toLatin1() ) ); + crypt( m_newPassword.toUtf8(), + make_salt( 16 ).toUtf8() ) ); int ec = CalamaresUtils::System::instance()-> targetEnvCall( { "usermod", diff --git a/src/modules/users/SetPasswordJob.h b/src/modules/users/SetPasswordJob.h index f8e0c2447..8a53d4941 100644 --- a/src/modules/users/SetPasswordJob.h +++ b/src/modules/users/SetPasswordJob.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +33,8 @@ public: QString prettyStatusMessage() const override; Calamares::JobResult exec() override; + static QString make_salt(int length); + private: QString m_userName; QString m_newPassword; diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index f5687b7ab..453d1eae7 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -37,7 +38,21 @@ #include #include +/** Add an error message and pixmap to a label. */ +static inline void +labelError( QLabel* pix, QLabel* label, const QString& message ) +{ + label->setText( message ); + pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, CalamaresUtils::Original, label->size() ) ); +} +/** Clear error, indicate OK on a label. */ +static inline void +labelOk( QLabel* pix, QLabel* label ) +{ + label->clear(); + pix->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, CalamaresUtils::Original, label->size() ) ); +} UsersPage::UsersPage( QWidget* parent ) : QWidget( parent ) @@ -138,6 +153,12 @@ UsersPage::createJobs( const QStringList& defaultGroupsList ) ui->textBoxRootPassword->text() ); list.append( Calamares::job_ptr( j ) ); } + else + { + j = new SetPasswordJob( "root", + "" ); //explicitly disable root password + list.append( Calamares::job_ptr( j ) ); + } j = new SetHostNameJob( ui->textBoxHostname->text() ); list.append( Calamares::job_ptr( j ) ); @@ -180,6 +201,7 @@ UsersPage::onFullNameTextEdited( const QString& textRef ) ui->textBoxUsername->clear(); if ( !m_customHostname ) ui->textBoxHostname->clear(); + m_readyFullName = false; } else { @@ -261,29 +283,19 @@ UsersPage::validateUsernameText( const QString& textRef ) } else if ( text.length() > USERNAME_MAX_LENGTH ) { - ui->labelUsername->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelUsername->size() ) ); - ui->labelUsernameError->setText( - tr( "Your username is too long." ) ); - + labelError( ui->labelUsername, ui->labelUsernameError, + tr( "Your username is too long." ) ); m_readyUsername = false; } else if ( val.validate( text, pos ) == QValidator::Invalid ) { - ui->labelUsername->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelUsername->size() ) ); - ui->labelUsernameError->setText( - tr( "Your username contains invalid characters. Only lowercase letters and numbers are allowed." ) ); - + labelError( ui->labelUsername, ui->labelUsernameError, + tr( "Your username contains invalid characters. Only lowercase letters and numbers are allowed." ) ); m_readyUsername = false; } - else { - ui->labelUsername->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, - CalamaresUtils::Original, - ui->labelUsername->size() ) ); - ui->labelUsernameError->clear(); + else + { + labelOk( ui->labelUsername, ui->labelUsernameError ); m_readyUsername = true; } @@ -315,55 +327,38 @@ UsersPage::validateHostnameText( const QString& textRef ) } else if ( text.length() < HOSTNAME_MIN_LENGTH ) { - ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelHostname->size() ) ); - ui->labelHostnameError->setText( - tr( "Your hostname is too short." ) ); - + labelError( ui->labelHostname, ui->labelHostnameError, + tr( "Your hostname is too short." ) ); m_readyHostname = false; - } else if ( text.length() > HOSTNAME_MAX_LENGTH ) { - ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelHostname->size() ) ); - ui->labelHostnameError->setText( - tr( "Your hostname is too long." ) ); - + labelError( ui->labelHostname, ui->labelHostnameError, + tr( "Your hostname is too long." ) ); m_readyHostname = false; - } else if ( val.validate( text, pos ) == QValidator::Invalid ) { - ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelHostname->size() ) ); - ui->labelHostnameError->setText( - tr( "Your hostname contains invalid characters. Only letters, numbers and dashes are allowed." ) ); - + labelError( ui->labelHostname, ui->labelHostnameError, + tr( "Your hostname contains invalid characters. Only letters, numbers and dashes are allowed." ) ); m_readyHostname = false; } else { - ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, - CalamaresUtils::Original, - ui->labelHostname->size() ) ); - ui->labelHostnameError->clear(); + labelOk( ui->labelHostname, ui->labelHostnameError ); m_readyHostname = true; } emit checkReady( isReady() ); } - void UsersPage::onPasswordTextChanged( const QString& ) { QString pw1 = ui->textBoxUserPassword->text(); QString pw2 = ui->textBoxUserVerifiedPassword->text(); + // TODO: 3.3: remove empty-check and leave it to passwordRequirements if ( pw1.isEmpty() && pw2.isEmpty() ) { ui->labelUserPasswordError->clear(); @@ -372,31 +367,42 @@ UsersPage::onPasswordTextChanged( const QString& ) } else if ( pw1 != pw2 ) { - ui->labelUserPasswordError->setText( tr( "Your passwords do not match!" ) ); - ui->labelUserPassword->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelUserPassword->size() ) ); + labelError( ui->labelUserPassword, ui->labelUserPasswordError, + tr( "Your passwords do not match!" ) ); m_readyPassword = false; } else { - ui->labelUserPasswordError->clear(); - ui->labelUserPassword->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, - CalamaresUtils::Original, - ui->labelUserPassword->size() ) ); - m_readyPassword = true; + bool ok = true; + for ( auto pc : m_passwordChecks ) + { + QString s = pc.filter( pw1 ); + if ( !s.isEmpty() ) + { + labelError( ui->labelUserPassword, ui->labelUserPasswordError, s ); + ok = false; + m_readyPassword = false; + break; + } + } + + if ( ok ) + { + labelOk( ui->labelUserPassword, ui->labelUserPasswordError ); + m_readyPassword = true; + } } emit checkReady( isReady() ); } - void UsersPage::onRootPasswordTextChanged( const QString& ) { QString pw1 = ui->textBoxRootPassword->text(); QString pw2 = ui->textBoxVerifiedRootPassword->text(); + // TODO: 3.3: remove empty-check and leave it to passwordRequirements if ( pw1.isEmpty() && pw2.isEmpty() ) { ui->labelRootPasswordError->clear(); @@ -405,19 +411,30 @@ UsersPage::onRootPasswordTextChanged( const QString& ) } else if ( pw1 != pw2 ) { - ui->labelRootPasswordError->setText( tr( "Your passwords do not match!" ) ); - ui->labelRootPassword->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No, - CalamaresUtils::Original, - ui->labelRootPassword->size() ) ); + labelError( ui->labelRootPassword, ui->labelRootPasswordError, + tr( "Your passwords do not match!" ) ); m_readyRootPassword = false; } else { - ui->labelRootPasswordError->clear(); - ui->labelRootPassword->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Yes, - CalamaresUtils::Original, - ui->labelRootPassword->size() ) ); - m_readyRootPassword = true; + bool ok = true; + for ( auto pc : m_passwordChecks ) + { + QString s = pc.filter( pw1 ); + if ( !s.isEmpty() ) + { + labelError( ui->labelRootPassword, ui->labelRootPasswordError, s ); + ok = false; + m_readyRootPassword = false; + break; + } + } + + if ( ok ) + { + labelOk( ui->labelRootPassword, ui->labelRootPasswordError ); + m_readyRootPassword = true; + } } emit checkReady( isReady() ); @@ -437,3 +454,69 @@ UsersPage::setReusePasswordDefault( bool checked ) ui->checkBoxReusePassword->setChecked( checked ); emit checkReady( isReady() ); } + +UsersPage::PasswordCheck::PasswordCheck() + : m_message() + , m_accept( []( const QString& s ) +{ + return true; +} ) +{ +} + +UsersPage::PasswordCheck::PasswordCheck( const QString& m, AcceptFunc a ) + : m_message( [m](){ return m; } ) + , m_accept( a ) +{ +} + +UsersPage::PasswordCheck::PasswordCheck( MessageFunc m, AcceptFunc a ) + : m_message( m ) + , m_accept( a ) +{ +} + +void +UsersPage::addPasswordCheck( const QString& key, const QVariant& value ) +{ + if ( key == "minLength" ) + { + int minLength = -1; + if ( value.canConvert( QVariant::Int ) ) + minLength = value.toInt(); + if ( minLength > 0 ) + { + cDebug() << key << " .. set to" << minLength; + m_passwordChecks.push_back( + PasswordCheck( + []() + { + return tr( "Password is too short" ); + }, + [minLength]( const QString& s ) + { + return s.length() >= minLength; + } ) ); + } + } + else if ( key == "maxLength" ) + { + int maxLength = -1; + if ( value.canConvert( QVariant::Int ) ) + maxLength = value.toInt(); + if ( maxLength > 0 ) + { + cDebug() << key << " .. set to" << maxLength; + m_passwordChecks.push_back( + PasswordCheck( []() + { + return tr( "Password is too long" ); + }, [maxLength]( const QString& s ) + { + return s.length() <= maxLength; + } ) ); + } + } + else + cDebug() << "WARNING: Unknown password-check key" << '"' << key << '"'; +} diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 632d49471..5a72e11de 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -27,7 +28,10 @@ #include -namespace Ui { +#include + +namespace Ui +{ class Page_UserSetup; } @@ -48,6 +52,8 @@ public: void setAutologinDefault( bool checked ); void setReusePasswordDefault( bool checked ); + void addPasswordCheck( const QString& key, const QVariant& value ); + protected slots: void onFullNameTextEdited( const QString& ); void fillSuggestions(); @@ -64,11 +70,47 @@ signals: private: Ui::Page_UserSetup* ui; + /** + * Support for (dynamic) checks on the password's validity. + * This can be used to implement password requirements like + * "at least 6 characters". Function addPasswordCheck() + * instantiates these and adds them to the list of checks. + */ + class PasswordCheck + { + public: + /** Return true if the string is acceptable. */ + using AcceptFunc = std::function; + using MessageFunc = std::function; + + /** Generate a @p message if @p filter returns true */ + PasswordCheck( MessageFunc message, AcceptFunc filter ); + /** Yields @p message if @p filter returns true */ + PasswordCheck( const QString& message, AcceptFunc filter ); + /** Null check, always returns empty */ + PasswordCheck(); + + /** Applies this check to the given password string @p s + * and returns an empty string if the password is ok + * according to this filter. Returns a message describing + * what is wrong if not. + */ + QString filter( const QString& s ) const + { + return m_accept( s ) ? QString() : m_message(); + } + + private: + MessageFunc m_message; + AcceptFunc m_accept; + } ; + QVector m_passwordChecks; + const QRegExp USERNAME_RX = QRegExp( "^[a-z_][a-z0-9_-]*[$]?$" ); const QRegExp HOSTNAME_RX = QRegExp( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); const int USERNAME_MAX_LENGTH = 31; const int HOSTNAME_MIN_LENGTH = 2; - const int HOSTNAME_MAX_LENGTH = 24; + const int HOSTNAME_MAX_LENGTH = 63; bool m_readyFullName; bool m_readyUsername; diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index d601014ae..73dc98ddc 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,7 @@ #include "UsersPage.h" +#include "utils/Logger.h" #include "JobQueue.h" #include "GlobalStorage.h" @@ -159,11 +161,23 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_widget->setAutologinDefault( configurationMap.value( "doAutologin" ).toBool() ); } - + if ( configurationMap.contains( "doReusePassword" ) && configurationMap.value( "doReusePassword" ).type() == QVariant::Bool ) { m_widget->setReusePasswordDefault( configurationMap.value( "doReusePassword" ).toBool() ); } + + if ( configurationMap.contains( "passwordRequirements" ) && + configurationMap.value( "passwordRequirements" ).type() == QVariant::Map ) + { + auto pr_checks( configurationMap.value( "passwordRequirements" ).toMap() ); + + for (decltype(pr_checks)::const_iterator i = pr_checks.constBegin(); + i != pr_checks.constEnd(); ++i) + { + m_widget->addPasswordCheck( i.key(), i.value() ); + } + } } diff --git a/src/modules/users/UsersViewStep.h b/src/modules/users/UsersViewStep.h index ea5d9101b..a529ad4ea 100644 --- a/src/modules/users/UsersViewStep.h +++ b/src/modules/users/UsersViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +37,7 @@ class PLUGINDLLEXPORT UsersViewStep : public Calamares::ViewStep public: explicit UsersViewStep( QObject* parent = nullptr ); - virtual ~UsersViewStep(); + virtual ~UsersViewStep() override; QString prettyName() const override; diff --git a/src/modules/users/module.desc b/src/modules/users/module.desc deleted file mode 100644 index fd7b21b58..000000000 --- a/src/modules/users/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for users viewmodule -# Syntax is YAML 1.2 ---- -type: "view" #core or view -name: "users" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -load: "libcalamares_viewmodule_users.so" diff --git a/src/modules/users/page_usersetup.ui b/src/modules/users/page_usersetup.ui index 67c7f618c..083d8f965 100644 --- a/src/modules/users/page_usersetup.ui +++ b/src/modules/users/page_usersetup.ui @@ -194,7 +194,7 @@ - font-weight: normal + font-weight: normal <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 34a5fcfc9..d5466c62f 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -1,3 +1,15 @@ +# Configuration for the one-user-system user module. +# +# Besides these settings, the user module also places the following +# keys into the globalconfig area, based on user input in the view step. +# +# - hostname +# - username +# - password (obscured) +# - autologinUser (if enabled, set to username) +# +# These globalconfig keys are set when the jobs for this module +# are created. --- defaultGroups: - users @@ -9,6 +21,23 @@ defaultGroups: - audio autologinGroup: autologin doAutologin: true + +# remove the following line to avoid creating /etc/sudoers.d/10-installer sudoersGroup: wheel + setRootPassword: true doReusePassword: true + +# These are optional password-requirements that a distro can enforce +# on the user. The values given in this sample file disable each check, +# as if the check was not listed at all. +# +# Checks may be listed multiple times; each is checked separately, +# and no effort is done to ensure that the checks are consistent +# (e.g. specifying a maximum length less than the minimum length +# will annoy users). +# +# (additional checks may be implemented in UsersPage.cpp) +passwordRequirements: + minLength: -1 # Password at least this many characters + maxLength: -1 # Password at most this many characters diff --git a/src/modules/webview/CMakeLists.txt b/src/modules/webview/CMakeLists.txt index eb5c81a68..01212d906 100644 --- a/src/modules/webview/CMakeLists.txt +++ b/src/modules/webview/CMakeLists.txt @@ -1,20 +1,53 @@ -find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED WebKit WebKitWidgets ) +list( APPEND CALA_WEBVIEW_INCLUDE_DIRECTORIES + ${PROJECT_BINARY_DIR}/src/libcalamaresui +) +list( APPEND CALA_WEBVIEW_LINK_LIBRARIES + calamaresui +) -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui - ${QT_QTWEBKIT_INCLUDE_DIR} ) +option( WEBVIEW_FORCE_WEBKIT "Always build webview with WebKit instead of WebEngine regardless of Qt version." OFF) + +message( STATUS "Found Qt version ${Qt5Core_VERSION}") +if ( Qt5Core_VERSION VERSION_LESS 5.6 OR WEBVIEW_FORCE_WEBKIT ) + message( STATUS " .. using webkit") + find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED WebKit WebKitWidgets ) + + list( APPEND CALA_WEBVIEW_INCLUDE_DIRECTORIES + ${QT_QTWEBKIT_INCLUDE_DIR} + ) + list( APPEND CALA_WEBVIEW_LINK_LIBRARIES + Qt5::WebKit + Qt5::WebKitWidgets + ) + set( WEBVIEW_WITH_WEBKIT 1 ) +else() + message( STATUS " .. using webengine") + find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED WebEngine WebEngineWidgets ) + + list( APPEND CALA_WEBVIEW_INCLUDE_DIRECTORIES + ${QT_QTWEBENGINE_INCLUDE_DIR} + ) + list( APPEND CALA_WEBVIEW_LINK_LIBRARIES + Qt5::WebEngine + Qt5::WebEngineWidgets + ) + set( WEBVIEW_WITH_WEBENGINE 1 ) +endif() + +include_directories( ${CALA_WEBVIEW_INCLUDE_DIRECTORIES} ) set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ) +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/WebViewConfig.h.in + ${CMAKE_CURRENT_BINARY_DIR}/WebViewConfig.h ) calamares_add_plugin( webview TYPE viewmodule EXPORT_MACRO PLUGINDLLEXPORT_PRO SOURCES WebViewStep.cpp - LINK_LIBRARIES - calamaresui - Qt5::WebKit - Qt5::WebKitWidgets + LINK_PRIVATE_LIBRARIES + ${CALA_WEBVIEW_LINK_LIBRARIES} SHARED_LIB ) diff --git a/src/modules/webview/WebViewConfig.h.in b/src/modules/webview/WebViewConfig.h.in new file mode 100644 index 000000000..6611e44c0 --- /dev/null +++ b/src/modules/webview/WebViewConfig.h.in @@ -0,0 +1,7 @@ +#ifndef CALAMARESWEBVIEWCONFIG_H +#define CALAMARESWEBVIEWCONFIG_H + +#cmakedefine WEBVIEW_WITH_WEBENGINE +#cmakedefine WEBVIEW_WITH_WEBKIT + +#endif // CALAMARESWEBVIEWCONFIG_H diff --git a/src/modules/webview/WebViewStep.cpp b/src/modules/webview/WebViewStep.cpp index 7fa5b5989..069b52d5a 100644 --- a/src/modules/webview/WebViewStep.cpp +++ b/src/modules/webview/WebViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Rohan Garg + * Copyright 2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +20,13 @@ #include "WebViewStep.h" #include + +#ifdef WEBVIEW_WITH_WEBKIT #include +#else +#include +#include +#endif CALAMARES_PLUGIN_FACTORY_DEFINITION( WebViewStepFactory, registerPlugin(); ) @@ -27,7 +34,20 @@ WebViewStep::WebViewStep( QObject* parent ) : Calamares::ViewStep( parent ) { emit nextStatusChanged( true ); - m_view = new QWebView; +#ifdef WEBVIEW_WITH_WEBENGINE + QtWebEngine::initialize(); +#endif + m_view = new C_QWEBVIEW(); +#ifdef WEBVIEW_WITH_WEBKIT + m_view->settings()->setFontFamily( QWebSettings::StandardFont, + m_view->settings()-> + fontFamily( QWebSettings::SansSerifFont ) ); + m_view->setRenderHints( QPainter::Antialiasing | + QPainter::TextAntialiasing | + QPainter::HighQualityAntialiasing | + QPainter::SmoothPixmapTransform | + QPainter::NonCosmeticDefaultPen ); +#endif } diff --git a/src/modules/webview/WebViewStep.h b/src/modules/webview/WebViewStep.h index af95ea269..105eea4b3 100644 --- a/src/modules/webview/WebViewStep.h +++ b/src/modules/webview/WebViewStep.h @@ -1,6 +1,8 @@ /* === This file is part of Calamares - === * * Copyright 2015, Rohan Garg + * Copyright 2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +21,7 @@ #ifndef WEBVIEWPLUGIN_H #define WEBVIEWPLUGIN_H -#include +#include "WebViewConfig.h" #include #include @@ -28,7 +30,13 @@ #include -class QWebView; +#ifdef WEBVIEW_WITH_WEBKIT +#define C_QWEBVIEW QWebView +#else +#define C_QWEBVIEW QWebEngineView +#endif + +class C_QWEBVIEW; class PLUGINDLLEXPORT WebViewStep : public Calamares::ViewStep { @@ -36,7 +44,7 @@ class PLUGINDLLEXPORT WebViewStep : public Calamares::ViewStep public: explicit WebViewStep( QObject* parent = nullptr ); - virtual ~WebViewStep(); + virtual ~WebViewStep() override; QString prettyName() const override; @@ -57,7 +65,7 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; private: - QWebView *m_view; + C_QWEBVIEW *m_view; QString m_url; QString m_prettyName; }; diff --git a/src/modules/webview/module.desc b/src/modules/webview/module.desc deleted file mode 100644 index 006198124..000000000 --- a/src/modules/webview/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for welcome viewmodule -# Syntax is YAML 1.2 ---- -type: "view" #core or view -name: "webview" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -load: "libcalamares_viewmodule_webview.so" diff --git a/src/modules/welcome/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index b8d2af27d..f73d8850d 100644 --- a/src/modules/welcome/CMakeLists.txt +++ b/src/modules/welcome/CMakeLists.txt @@ -1,9 +1,9 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) -set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ) -find_package( LIBPARTED REQUIRED ) -find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus ) -set_source_files_properties( checker/partman_devices.c PROPERTIES LANGUAGE CXX ) +find_package( LIBPARTED REQUIRED ) +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network ) + +include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( CHECKER_SOURCES checker/CheckItemWidget.cpp @@ -14,6 +14,7 @@ set( CHECKER_SOURCES set( CHECKER_LINK_LIBRARIES ${LIBPARTED_LIBS} Qt5::DBus + Qt5::Network ) calamares_add_plugin( welcome @@ -25,7 +26,7 @@ calamares_add_plugin( welcome WelcomePage.cpp UI WelcomePage.ui - LINK_LIBRARIES + LINK_PRIVATE_LIBRARIES calamaresui ${CHECKER_LINK_LIBRARIES} SHARED_LIB diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 7b1db01d1..8b5c604b4 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -2,6 +2,7 @@ * * Copyright 2014-2015, Teo Mrnjavac * Copyright 2015, Anke Boersma + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,17 +46,19 @@ WelcomePage::WelcomePage( RequirementsChecker* requirementsChecker, QWidget* par { ui->setupUi( this ); - ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() * 4 ); + ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() * 2 ); initLanguages(); ui->mainText->setAlignment( Qt::AlignCenter ); ui->mainText->setWordWrap( true ); ui->mainText->setOpenExternalLinks( true ); + cDebug() << "Welcome string" << Calamares::Branding::instance()->welcomeStyleCalamares() + << *Calamares::Branding::VersionedName; + CALAMARES_RETRANSLATE( - ui->mainText->setText( tr( "

Welcome to the %1 installer.

" ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::VersionedName ) ) ); + ui->mainText->setText( (Calamares::Branding::instance()->welcomeStyleCalamares() ? tr( "

Welcome to the Calamares installer for %1.

" ) : tr( "

Welcome to the %1 installer.

" )) + .arg( *Calamares::Branding::VersionedName ) ); ui->retranslateUi( this ); ) @@ -73,11 +76,12 @@ WelcomePage::WelcomePage( RequirementsChecker* requirementsChecker, QWidget* par "

%1


" "%2
" "for %3


" - "Copyright 2014-2015 Teo Mrnjavac <teo@kde.org>
" - "Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, " - "Philip Müller, Pier Luigi Fiorini, Rohan Garg and " - "" - "the Calamares translators team.

" + "Copyright 2014-2017 Teo Mrnjavac <teo@kde.org>
" + "Copyright 2017 Adriaan de Groot <groot@kde.org>
" + "Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo," + " Philip Müller, Pier Luigi Fiorini, Rohan Garg and the Calamares " + "translators team.

" "Calamares " "development is sponsored by
" "Blue Systems - " @@ -85,14 +89,16 @@ WelcomePage::WelcomePage( RequirementsChecker* requirementsChecker, QWidget* par ) .arg( CALAMARES_APPLICATION_NAME ) .arg( CALAMARES_VERSION ) - .arg( Calamares::Branding::instance()->string( - Calamares::Branding::VersionedName ) ), + .arg( *Calamares::Branding::VersionedName ), QMessageBox::Ok, this ); mb.setIconPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::Squid, CalamaresUtils::Original, QSize( CalamaresUtils::defaultFontHeight() * 6, CalamaresUtils::defaultFontHeight() * 6 ) ) ); + QGridLayout* layout = reinterpret_cast( mb.layout() ); + if ( layout ) + layout->setColumnMinimumWidth( 2, CalamaresUtils::defaultFontHeight() * 24 ); mb.exec(); } ); @@ -109,7 +115,8 @@ WelcomePage::initLanguages() { bool isTranslationAvailable = false; - foreach ( const QString& locale, QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';') ) + const auto locales = QString( CALAMARES_TRANSLATION_LANGUAGES ).split( ';'); + for ( const QString& locale : locales ) { QLocale thisLocale = QLocale( locale ); QString lang = QLocale::languageToString( thisLocale.language() ); @@ -188,12 +195,11 @@ WelcomePage::setUpLinks( bool showSupportUrl, bool showReleaseNotesUrl ) { using namespace Calamares; - Branding* b = Branding::instance(); - if ( showSupportUrl && !b->string( Branding::SupportUrl ).isEmpty() ) + if ( showSupportUrl && !( *Branding::SupportUrl ).isEmpty() ) { CALAMARES_RETRANSLATE( ui->supportButton->setText( tr( "%1 support" ) - .arg( b->string( Branding::ShortProductName ) ) ); + .arg( *Branding::ShortProductName ) ); ) ui->supportButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Help, CalamaresUtils::Original, @@ -201,7 +207,7 @@ WelcomePage::setUpLinks( bool showSupportUrl, CalamaresUtils::defaultFontHeight() ) ) ); connect( ui->supportButton, &QPushButton::clicked, [] { - QDesktopServices::openUrl( Branding::instance()->string( Branding::SupportUrl ) ); + QDesktopServices::openUrl( *Branding::SupportUrl ); } ); } else @@ -209,7 +215,7 @@ WelcomePage::setUpLinks( bool showSupportUrl, ui->supportButton->hide(); } - if ( showKnownIssuesUrl && !b->string( Branding::KnownIssuesUrl ).isEmpty() ) + if ( showKnownIssuesUrl && !( *Branding::KnownIssuesUrl ).isEmpty() ) { ui->knownIssuesButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Bugs, CalamaresUtils::Original, @@ -217,7 +223,7 @@ WelcomePage::setUpLinks( bool showSupportUrl, CalamaresUtils::defaultFontHeight() ) ) ); connect( ui->knownIssuesButton, &QPushButton::clicked, [] { - QDesktopServices::openUrl( Branding::instance()->string( Branding::KnownIssuesUrl ) ); + QDesktopServices::openUrl( *Branding::KnownIssuesUrl ); } ); } else @@ -225,7 +231,7 @@ WelcomePage::setUpLinks( bool showSupportUrl, ui->knownIssuesButton->hide(); } - if ( showReleaseNotesUrl && !b->string( Branding::ReleaseNotesUrl ).isEmpty() ) + if ( showReleaseNotesUrl && !( *Branding::ReleaseNotesUrl ).isEmpty() ) { ui->releaseNotesButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Release, CalamaresUtils::Original, @@ -233,7 +239,7 @@ WelcomePage::setUpLinks( bool showSupportUrl, CalamaresUtils::defaultFontHeight() ) ) ); connect( ui->releaseNotesButton, &QPushButton::clicked, [] { - QDesktopServices::openUrl( Branding::instance()->string( Branding::ReleaseNotesUrl ) ); + QDesktopServices::openUrl( *Branding::ReleaseNotesUrl ); } ); } else diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index ca24254e8..3c9d29993 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -20,6 +20,7 @@ #include "WelcomePage.h" #include "checker/RequirementsChecker.h" +#include "utils/Logger.h" #include @@ -128,5 +129,8 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap ) if ( configurationMap.contains( "requirements" ) && configurationMap.value( "requirements" ).type() == QVariant::Map ) m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() ); + else + cDebug() << "WARNING: no valid requirements map found in welcome " + "module configuration."; } diff --git a/src/modules/welcome/WelcomeViewStep.h b/src/modules/welcome/WelcomeViewStep.h index db33a89bd..fbcbd8ded 100644 --- a/src/modules/welcome/WelcomeViewStep.h +++ b/src/modules/welcome/WelcomeViewStep.h @@ -37,7 +37,7 @@ class PLUGINDLLEXPORT WelcomeViewStep : public Calamares::ViewStep public: explicit WelcomeViewStep( QObject* parent = nullptr ); - virtual ~WelcomeViewStep(); + virtual ~WelcomeViewStep() override; QString prettyName() const override; diff --git a/src/modules/welcome/checker/CheckerWidget.cpp b/src/modules/welcome/checker/CheckerWidget.cpp index be341acc0..500ab6f85 100644 --- a/src/modules/welcome/checker/CheckerWidget.cpp +++ b/src/modules/welcome/checker/CheckerWidget.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -96,8 +97,7 @@ CheckerWidget::init( const QList< PrepareEntry >& checkEntries ) "requirements for installing %1.
" "Installation cannot continue. " "Details..." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); ) textLabel->setOpenExternalLinks( false ); connect( textLabel, &QLabel::linkActivated, @@ -114,8 +114,7 @@ CheckerWidget::init( const QList< PrepareEntry >& checkEntries ) "recommended requirements for installing %1.
" "Installation can continue, but some features " "might be disabled." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ShortVersionedName ) ) ); + .arg( *Calamares::Branding::ShortVersionedName ) ); ) } } @@ -129,20 +128,29 @@ CheckerWidget::init( const QList< PrepareEntry >& checkEntries ) imagePath( Calamares::Branding::ProductWelcome ) ); if ( !theImage.isNull() ) { - FixedAspectRatioLabel* imageLabel = new FixedAspectRatioLabel; - imageLabel->setContentsMargins( 4, CalamaresUtils::defaultFontHeight()*0.75, 4, 4 ); + QLabel* imageLabel; + if ( Calamares::Branding::instance()->welcomeExpandingLogo() ) + { + FixedAspectRatioLabel *p = new FixedAspectRatioLabel; + p->setPixmap( theImage ); + imageLabel = p; + } + else + { + imageLabel = new QLabel; + imageLabel->setPixmap( theImage ); + } + + imageLabel->setContentsMargins( 4, CalamaresUtils::defaultFontHeight() * 3 / 4, 4, 4 ); m_mainLayout->addWidget( imageLabel ); imageLabel->setAlignment( Qt::AlignCenter ); imageLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); - - imageLabel->setPixmap( theImage ); } } CALAMARES_RETRANSLATE( textLabel->setText( tr( "This program will ask you some questions and " "set up %2 on your computer." ) - .arg( Calamares::Branding::instance()-> - string( Calamares::Branding::ProductName ) ) ); + .arg( *Calamares::Branding::ProductName ) ); textLabel->setAlignment( Qt::AlignCenter ); ) } diff --git a/src/modules/welcome/checker/RequirementsChecker.cpp b/src/modules/welcome/checker/RequirementsChecker.cpp index 84e684dbd..3d4e394c4 100644 --- a/src/modules/welcome/checker/RequirementsChecker.cpp +++ b/src/modules/welcome/checker/RequirementsChecker.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,16 +27,24 @@ #include "utils/Logger.h" #include "utils/Retranslator.h" #include "utils/CalamaresUtilsSystem.h" +#include "utils/Units.h" + #include "JobQueue.h" #include "GlobalStorage.h" +#include #include #include #include +#include #include +#include #include #include #include +#include +#include +#include #include #include @@ -44,9 +53,10 @@ RequirementsChecker::RequirementsChecker( QObject* parent ) : QObject( parent ) , m_widget( new QWidget() ) + , m_requiredStorageGB( -1 ) + , m_requiredRamGB( -1 ) , m_actualWidget( new CheckerWidget() ) , m_verdict( false ) - , m_requiredStorageGB( -1 ) { QBoxLayout* mainLayout = new QHBoxLayout; m_widget->setLayout( mainLayout ); @@ -56,6 +66,8 @@ RequirementsChecker::RequirementsChecker( QObject* parent ) mainLayout->addWidget( waitingWidget ); CALAMARES_RETRANSLATE( waitingWidget->setText( tr( "Gathering system information..." ) ); ) + QSize availableSize = qApp->desktop()->availableGeometry( m_widget ).size(); + QTimer* timer = new QTimer; timer->setSingleShot( true ); connect( timer, &QTimer::timeout, @@ -66,13 +78,14 @@ RequirementsChecker::RequirementsChecker( QObject* parent ) bool hasPower = false; bool hasInternet = false; bool isRoot = false; + bool enoughScreen = (availableSize.width() >= CalamaresUtils::windowPreferredWidth) && (availableSize.height() >= CalamaresUtils::windowPreferredHeight); - qint64 requiredStorageB = m_requiredStorageGB * 1073741824L; /*powers of 2*/ + qint64 requiredStorageB = CalamaresUtils::GiBtoBytes(m_requiredStorageGB); cDebug() << "Need at least storage bytes:" << requiredStorageB; if ( m_entriesToCheck.contains( "storage" ) ) enoughStorage = checkEnoughStorage( requiredStorageB ); - qint64 requiredRamB = m_requiredRamGB * 1073741824L; /*powers of 2*/ + qint64 requiredRamB = CalamaresUtils::GiBtoBytes(m_requiredRamGB); cDebug() << "Need at least ram bytes:" << requiredRamB; if ( m_entriesToCheck.contains( "ram" ) ) enoughRam = checkEnoughRam( requiredRamB ); @@ -136,7 +149,14 @@ RequirementsChecker::RequirementsChecker( QObject* parent ) isRoot, m_entriesToRequire.contains( entry ) } ); - + else if ( entry == "screen" ) + checkEntries.append( { + entry, + [this]{ return QString(); }, // we hide it + [this]{ return tr( "The screen is too small to display the installer." ); }, + enoughScreen, + false + } ); } m_actualWidget->init( checkEntries ); @@ -185,8 +205,10 @@ RequirementsChecker::widget() const void RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) { + bool incompleteConfiguration = false; if ( configurationMap.contains( "requiredStorage" ) && - configurationMap.value( "requiredStorage" ).type() == QVariant::Double ) + ( configurationMap.value( "requiredStorage" ).type() == QVariant::Double || + configurationMap.value( "requiredStorage" ).type() == QVariant::Int ) ) { bool ok = false; m_requiredStorageGB = configurationMap.value( "requiredStorage" ).toDouble( &ok ); @@ -198,19 +220,46 @@ RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) else { m_requiredStorageGB = 3.; + incompleteConfiguration = true; } if ( configurationMap.contains( "requiredRam" ) && - configurationMap.value( "requiredRam" ).type() == QVariant::Double ) + ( configurationMap.value( "requiredRam" ).type() == QVariant::Double || + configurationMap.value( "requiredRam" ).type() == QVariant::Int ) ) { bool ok = false; m_requiredRamGB = configurationMap.value( "requiredRam" ).toDouble( &ok ); if ( !ok ) + { m_requiredRamGB = 1.; + incompleteConfiguration = true; + } } else { m_requiredRamGB = 1.; + incompleteConfiguration = true; + } + + if ( configurationMap.contains( "internetCheckUrl" ) && + configurationMap.value( "internetCheckUrl" ).type() == QVariant::String ) + { + m_checkHasInternetUrl = configurationMap.value( "internetCheckUrl" ).toString().trimmed(); + if ( m_checkHasInternetUrl.isEmpty() || + !QUrl( m_checkHasInternetUrl ).isValid() ) + { + cDebug() << "Invalid internetCheckUrl in welcome.conf" << m_checkHasInternetUrl + << "reverting to default (http://example.com)."; + m_checkHasInternetUrl = "http://example.com"; + incompleteConfiguration = true; + } + } + else + { + cDebug() << "internetCheckUrl is undefined in welcome.conf, " + "reverting to default (http://example.com)."; + m_checkHasInternetUrl = "http://example.com"; + incompleteConfiguration = true; } if ( configurationMap.contains( "check" ) && @@ -219,6 +268,8 @@ RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) m_entriesToCheck.clear(); m_entriesToCheck.append( configurationMap.value( "check" ).toStringList() ); } + else + incompleteConfiguration = true; if ( configurationMap.contains( "required" ) && configurationMap.value( "required" ).type() == QVariant::List ) @@ -226,6 +277,19 @@ RequirementsChecker::setConfigurationMap( const QVariantMap& configurationMap ) m_entriesToRequire.clear(); m_entriesToRequire.append( configurationMap.value( "required" ).toStringList() ); } + else + incompleteConfiguration = true; + + if ( incompleteConfiguration ) + { + cDebug() << "WARNING: The RequirementsChecker configuration map provided by " + "the welcome module configuration file is incomplete or " + "incorrect.\n" + "Startup will continue for debugging purposes, but one or " + "more checks might not function correctly.\n" + "RequirementsChecker configuration map:\n" + << configurationMap; + } } @@ -246,9 +310,9 @@ RequirementsChecker::checkEnoughStorage( qint64 requiredSpace ) bool RequirementsChecker::checkEnoughRam( qint64 requiredRam ) { - qint64 availableRam = CalamaresUtils::System::instance()->getPhysicalMemoryB(); - if ( !availableRam ) - availableRam = CalamaresUtils::System::instance()->getTotalMemoryB(); + // Ignore the guesstimate-factor; we get an under-estimate + // which is probably the usable RAM for programs. + quint64 availableRam = CalamaresUtils::System::instance()->getTotalMemoryB().first; return availableRam >= requiredRam * 0.95; // because MemTotal is variable } @@ -262,9 +326,8 @@ RequirementsChecker::checkBatteryExists() return false; QDir baseDir( basePath.absoluteFilePath() ); - foreach ( auto item, baseDir.entryList( QDir::AllDirs | - QDir::Readable | - QDir::NoDotAndDotDot ) ) + const auto entries = baseDir.entryList( QDir::AllDirs | QDir::Readable | QDir::NoDotAndDotDot ); + for ( const auto &item : entries ) { QFileInfo typePath( baseDir.absoluteFilePath( QString( "%1/type" ) .arg( item ) ) ); @@ -294,7 +357,7 @@ RequirementsChecker::checkHasPower() QDBusInterface upowerIntf( UPOWER_SVC_NAME, UPOWER_PATH, UPOWER_INTF_NAME, - QDBusConnection::systemBus(), 0 ); + QDBusConnection::systemBus() ); bool onBattery = upowerIntf.property( "OnBattery" ).toBool(); @@ -314,28 +377,24 @@ RequirementsChecker::checkHasPower() bool RequirementsChecker::checkHasInternet() { - const QString NM_SVC_NAME( "org.freedesktop.NetworkManager" ); - const QString NM_INTF_NAME( "org.freedesktop.NetworkManager" ); - const QString NM_PATH( "/org/freedesktop/NetworkManager" ); - const int NM_STATE_CONNECTED_GLOBAL = 70; + // default to true in the QNetworkAccessManager::UnknownAccessibility case + QNetworkAccessManager qnam( this ); + bool hasInternet = qnam.networkAccessible() == QNetworkAccessManager::Accessible; - QDBusInterface nmIntf( NM_SVC_NAME, - NM_PATH, - NM_INTF_NAME, - QDBusConnection::systemBus(), 0 ); - - bool ok = false; - int nmState = nmIntf.property( "state" ).toInt( &ok ); - - if ( !ok || !nmIntf.isValid() ) + if ( !hasInternet && qnam.networkAccessible() == QNetworkAccessManager::UnknownAccessibility ) { - // We can't talk to NM, so no idea. Wild guess: we're connected - // using ssh with X forwarding, and are therefore connected. This - // allows us to proceed with a minimum of complaint. - return true; + QNetworkRequest req = QNetworkRequest( QUrl( m_checkHasInternetUrl ) ); + QNetworkReply* reply = qnam.get( req ); + QEventLoop loop; + connect( reply, &QNetworkReply::finished, + &loop, &QEventLoop::quit ); + loop.exec(); + if( reply->bytesAvailable() ) + hasInternet = true; } - return nmState == NM_STATE_CONNECTED_GLOBAL; + Calamares::JobQueue::instance()->globalStorage()->insert( "hasInternet", hasInternet ); + return hasInternet; } diff --git a/src/modules/welcome/checker/RequirementsChecker.h b/src/modules/welcome/checker/RequirementsChecker.h index 75df70744..1e52d9fc5 100644 --- a/src/modules/welcome/checker/RequirementsChecker.h +++ b/src/modules/welcome/checker/RequirementsChecker.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2014-2017, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -69,6 +69,7 @@ private: QWidget* m_widget; qreal m_requiredStorageGB; qreal m_requiredRamGB; + QString m_checkHasInternetUrl; CheckerWidget* m_actualWidget; bool m_verdict; diff --git a/src/modules/welcome/checker/partman_devices.c b/src/modules/welcome/checker/partman_devices.c index d417f3c0f..2cc97557a 100644 --- a/src/modules/welcome/checker/partman_devices.c +++ b/src/modules/welcome/checker/partman_devices.c @@ -112,7 +112,7 @@ process_device(PedDevice *dev) int check_big_enough(long long required_space) { - PedDevice *dev; + PedDevice *dev = NULL; ped_exception_fetch_all(); ped_device_probe_all(); @@ -126,7 +126,15 @@ check_big_enough(long long required_space) break; } } - ped_device_free_all(); + + // We would free the devices to release allocated memory, + // but other modules might be using partman use well, + // and they can hold pointers to libparted structures in + // other threads. + // + // So prefer to leak memory, instead. + // + // ped_device_free_all(); return big_enough; } diff --git a/src/modules/welcome/checker/partman_devices.h b/src/modules/welcome/checker/partman_devices.h index 8bc19e58b..8bf620a48 100644 --- a/src/modules/welcome/checker/partman_devices.h +++ b/src/modules/welcome/checker/partman_devices.h @@ -19,6 +19,14 @@ #ifndef PARTMAN_DEVICES_H #define PARTMAN_DEVICES_H +#ifdef __cplusplus +extern "C" { +#endif + int check_big_enough(long long required_space); +#ifdef __cplusplus +} // extern "C" +#endif + #endif // PARTMAN_DEVICES_H diff --git a/src/modules/welcome/module.desc b/src/modules/welcome/module.desc deleted file mode 100644 index 70383a55f..000000000 --- a/src/modules/welcome/module.desc +++ /dev/null @@ -1,7 +0,0 @@ -# Module metadata file for welcome viewmodule -# Syntax is YAML 1.2 ---- -type: "view" #core or view -name: "welcome" #the module name. must be unique and same as the parent directory -interface: "qtplugin" #can be: qtplugin, python, process, ... -load: "libcalamares_viewmodule_welcome.so" diff --git a/src/modules/welcome/welcome.conf b/src/modules/welcome/welcome.conf index aa8abb55a..18e71b1ef 100644 --- a/src/modules/welcome/welcome.conf +++ b/src/modules/welcome/welcome.conf @@ -6,12 +6,24 @@ showReleaseNotesUrl: true requirements: requiredStorage: 5.5 requiredRam: 1.0 + internetCheckUrl: http://google.com + + # List conditions to check. Each listed condition will be + # probed in some way, and yields true or false according to + # the host system satisfying the condition. + # + # This sample file lists all the conditions that are know. check: - storage - ram - power - internet - root + - screen + # List conditions that must be satisfied (from the list + # of conditions, above) for installation to proceed. + # If any of these conditions are not met, the user cannot + # continue past the welcome page. required: - storage - ram diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index 59878c644..b53b9fc55 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -1,29 +1,16 @@ -/* === This file is part of Calamares - === +/* === This file is part of Calamares - === * - * Copyright 2015, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot + * - added looping, keys-instead-of-shortcut * - * Based on the QML Presentation System. - * Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). - * Header reproduced verbatim below. - * - * Calamares is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Calamares is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Calamares. If not, see . + * SPDX-License-Identifier: LGPL-2.1 + * License-Filename: LICENSES/LGPLv2.1-Presentation */ /**************************************************************************** ** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QML Presentation System. ** @@ -62,18 +49,20 @@ ****************************************************************************/ -import QtQuick 2.0 +import QtQuick 2.5 import QtQuick.Window 2.0 Item { id: root property variant slides: [] - property int currentSlide; + property int currentSlide: 0 property bool showNotes: false; property bool allowDelay: true; - property bool loop: true; + property alias mouseNavigation: mouseArea.enabled + property bool arrowNavigation: true + property bool keyShortcutsEnabled: true property color titleColor: textColor; property color textColor: "black" @@ -83,6 +72,7 @@ Item { // Private API property bool _faded: false property int _userNum; + property int _lastShownSlide: 0 Component.onCompleted: { var slideCount = 0; @@ -98,10 +88,8 @@ Item { root._userNum = 0; // Make first slide visible... - if (root.slides.length > 0) { - root.currentSlide = 0; + if (root.slides.length > 0) root.slides[root.currentSlide].visible = true; - } } function switchSlides(from, to, forward) { @@ -110,6 +98,13 @@ Item { return true } + onCurrentSlideChanged: { + switchSlides(root.slides[_lastShownSlide], root.slides[currentSlide], currentSlide > _lastShownSlide) + _lastShownSlide = currentSlide + // Always keep focus on the slideshow + root.focus = true + } + function goToNextSlide() { root._userNum = 0 if (_faded) @@ -118,38 +113,18 @@ Item { if (root.slides[currentSlide]._advance()) return; } - if (root.currentSlide + 1 < root.slides.length) { - var from = slides[currentSlide] - var to = slides[currentSlide + 1] - if (switchSlides(from, to, true)) { - currentSlide = currentSlide + 1; - root.focus = true; - } - } - else { - if (root.loop) { - var from = slides[currentSlide] - var to = slides[0] - if (switchSlides(from, to, true)) { - currentSlide = 0; - root.focus = true; - } - } - } + if (currentSlide + 1 < root.slides.length) + ++currentSlide; + else + currentSlide = 0; // Loop at the end } function goToPreviousSlide() { root._userNum = 0 if (root._faded) return - if (root.currentSlide - 1 >= 0) { - var from = slides[currentSlide] - var to = slides[currentSlide - 1] - if (switchSlides(from, to, false)) { - currentSlide = currentSlide - 1; - root.focus = true; - } - } + if (currentSlide - 1 >= 0) + --currentSlide; } function goToUserSlide() { @@ -158,38 +133,45 @@ Item { return if (_userNum < 0) goToNextSlide() - else if (root.currentSlide != _userNum) { - var from = slides[currentSlide] - var to = slides[_userNum] - if (switchSlides(from, to, _userNum > currentSlide)) { - currentSlide = _userNum; - root.focus = true; - } + else { + currentSlide = _userNum; + root.focus = true; } } - focus: true - - Keys.onSpacePressed: goToNextSlide() - Keys.onRightPressed: goToNextSlide() - Keys.onDownPressed: goToNextSlide() - Keys.onLeftPressed: goToPreviousSlide() - Keys.onUpPressed: goToPreviousSlide() - Keys.onEscapePressed: Qt.quit() + // directly type in the slide number: depends on root having focus Keys.onPressed: { if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9) _userNum = 10 * _userNum + (event.key - Qt.Key_0) else { if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter) goToUserSlide(); - else if (event.key == Qt.Key_Backspace) - goToPreviousSlide(); - else if (event.key == Qt.Key_C) - root._faded = !root._faded; _userNum = 0; } } + focus: true // Keep focus + + // Navigation through key events, too + Keys.onSpacePressed: goToNextSlide() + Keys.onRightPressed: goToNextSlide() + Keys.onLeftPressed: goToPreviousSlide() + + // navigate with arrow keys + Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.arrowNavigation; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() } + Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.arrowNavigation; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() } + + // presentation-specific single-key shortcuts (which interfere with normal typing) + Shortcut { sequence: " "; enabled: root.keyShortcutsEnabled; onActivated: goToNextSlide() } + Shortcut { sequence: "c"; enabled: root.keyShortcutsEnabled; onActivated: root._faded = !root._faded } + + // standard shortcuts + Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() } + Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() } + Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() } + Rectangle { z: 1000 color: "black" @@ -219,16 +201,61 @@ Item { title: "QML Presentation: Notes" visible: root.showNotes - Text { + Flickable { anchors.fill: parent - anchors.margins: parent.height * 0.1; + contentWidth: parent.width + contentHeight: textContainer.height - font.pixelSize: 16 - wrapMode: Text.WordWrap + Item { + id: textContainer + width: parent.width + height: notesText.height + 2 * notesText.padding - property string notes: root.slides[root.currentSlide].notes; - text: notes == "" ? "Slide has no notes..." : notes; - font.italic: notes == ""; + Text { + id: notesText + + property real padding: 16; + + x: padding + y: padding + width: parent.width - 2 * padding + + + font.pixelSize: 16 + wrapMode: Text.WordWrap + + property string notes: root.slides[root.currentSlide].notes; + + onNotesChanged: { + var result = ""; + + var lines = notes.split("\n"); + var beginNewLine = false + for (var i=0; i 0) + result += " "; + result += line; + } + } + + if (result.length == 0) { + font.italic = true; + text = "no notes.." + } else { + font.italic = false; + text = result; + } + } + } + } } } } diff --git a/src/qml/calamares/slideshow/Slide.qml b/src/qml/calamares/slideshow/Slide.qml index e46b5687d..e033e3c17 100644 --- a/src/qml/calamares/slideshow/Slide.qml +++ b/src/qml/calamares/slideshow/Slide.qml @@ -1,3 +1,9 @@ +/* === This file is part of Calamares - === + * + * SPDX-License-Identifier: LGPL-2.1 + * License-Filename: LICENSES/LGPLv2.1-Presentation + */ + /**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). @@ -167,20 +173,19 @@ Item { Rectangle { id: dot - y: baseFontSize * row.indentFactor / 2 - width: baseFontSize / 4 - height: baseFontSize / 4 + anchors.baseline: text.baseline + anchors.baselineOffset: -text.font.pixelSize / 2 + width: text.font.pixelSize / 3 + height: text.font.pixelSize / 3 color: slide.textColor radius: width / 2 - smooth: true opacity: text.text.length == 0 ? 0 : 1 } - Rectangle { + Item { id: space - width: dot.width * 2 + width: dot.width * 1.5 height: 1 - color: "#00ffffff" } Text {