Merge branch 'master' of https://github.com/calamares/calamares into development

This commit is contained in:
Philip Müller 2019-06-19 08:22:12 +02:00
commit 7afb2443d5
41 changed files with 4359 additions and 319 deletions

10
CHANGES
View File

@ -7,6 +7,10 @@ website will have to do for older versions.
This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name):
Distributions are **advised** to check the slideshow they use for the
installation step; changes in loading and translation mechanisms may
require changes in the slideshow.
## Core ## ## Core ##
- With this release, option *WITH_PYTHONQT* changes default to **off**. - With this release, option *WITH_PYTHONQT* changes default to **off**.
@ -18,6 +22,12 @@ This release contains contributions from (alphabetically by first name):
configured after the last *exec* section of the sequence has been configured after the last *exec* section of the sequence has been
solved. The *finished* page can be left out (but then you don't get solved. The *finished* page can be left out (but then you don't get
the restart-now functionality). #1168 the restart-now functionality). #1168
- The *slideshow* which is run during installation now has API versions.
API version 1 (the default) runs as before, where the slideshow is loaded
when the installation starts. API version 2 loads the slideshow on
Calamares startup, thus improving responsiveness. Documentation
in `src/branding/README.md`. #1152
- The example slideshow now uses API version 2.
## Modules ## ## Modules ##

View File

@ -84,7 +84,7 @@ set( CALAMARES_DESCRIPTION_SUMMARY
# complete = 100% translated, # complete = 100% translated,
# good = nearly complete (use own judgement, right now >= 75%) # good = nearly complete (use own judgement, right now >= 75%)
# ok = incomplete (more than 25% untranslated, at least 5% translated), # ok = incomplete (more than 25% untranslated, at least 5% translated),
# bad = 0% translated, placeholder in tx; these are not included. # incomplete = <5% translated, placeholder in tx; these are not included.
# #
# Language en (source language) is added later. It isn't listed in # Language en (source language) is added later. It isn't listed in
# Transifex either. Get the list of languages and their status # Transifex either. Get the list of languages and their status
@ -106,12 +106,11 @@ set( CALAMARES_DESCRIPTION_SUMMARY
# the original four lines with the current translations). # the original four lines with the current translations).
set( _tx_complete ca cs_CZ da de fr he hr hu ko lt pt_BR sq tr_TR set( _tx_complete ca cs_CZ da de fr he hr hu ko lt pt_BR sq tr_TR
zh_TW ) zh_TW )
set( _tx_good ast en_GB es es_MX et gl id it_IT ja nl pl pt_PT ro set( _tx_good ast en_GB es es_MX et fi_FI gl id it_IT ja nl pl
ru sk zh_CN ) pt_PT ro ru sk zh_CN )
set( _tx_ok ar bg el es_PR eu fi_FI hi is mr nb sl sr sr@latin sv set( _tx_ok ar bg el es_PR eu hi is mr nb sl sr sr@latin sv th
th uk ) uk )
set( _tx_bad be eo fa fr_CH gu kk kn lo mk ne_NP ur uz ) set( _tx_incomplete be ca@valencia eo fa fr_CH gu kk kn lo mk ne_NP ur uz )
### Required versions ### Required versions
# #
@ -325,8 +324,8 @@ endif()
# then run an extra cmake-time check for consistency of the old # then run an extra cmake-time check for consistency of the old
# (p_tx*) and new (_tx*) lists. # (p_tx*) and new (_tx*) lists.
# #
set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_bad} ) set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_incomplete} )
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_bad} ) set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} )
set( tx_errors OFF ) set( tx_errors OFF )
if ( prev_tx ) if ( prev_tx )
# Gone in new list # Gone in new list

View File

@ -107,7 +107,10 @@ function( calamares_add_branding_translations NAME )
file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" ) file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" )
if ( BRANDING_TRANSLATION_FILES ) if ( BRANDING_TRANSLATION_FILES )
qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} ) qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} )
add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES} ) add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/
COMMAND ${CMAKE_COMMAND} -E copy ${QM_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/
)
install( FILES ${QM_FILES} DESTINATION ${BRANDING_COMPONENT_DESTINATION}/lang/ ) install( FILES ${QM_FILES} DESTINATION ${BRANDING_COMPONENT_DESTINATION}/lang/ )
list( LENGTH BRANDING_TRANSLATION_FILES _branding_count ) list( LENGTH BRANDING_TRANSLATION_FILES _branding_count )
message( " ${Green}BRANDING_TRANSLATIONS:${ColorReset} ${_branding_count} language(s)" ) message( " ${Green}BRANDING_TRANSLATIONS:${ColorReset} ${_branding_count} language(s)" )

View File

@ -14,8 +14,8 @@ def get_tx_credentials():
txconfig_name = os.path.expanduser("~/.transifexrc") txconfig_name = os.path.expanduser("~/.transifexrc")
try: try:
with open(txconfig_name, "r") as f: with open(txconfig_name, "r") as f:
parser = configparser.SafeConfigParser() parser = configparser.ConfigParser()
parser.readfp(f) parser.read_file(f)
return parser.get("https://www.transifex.com", "password") return parser.get("https://www.transifex.com", "password")
except IOError as e: except IOError as e:
@ -71,7 +71,7 @@ def get_tx_stats(token):
output_langs(all_langs, "complete", lambda s : s == 1.0) output_langs(all_langs, "complete", lambda s : s == 1.0)
output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75) output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75)
output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05) output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05)
output_langs(all_langs, "bad", lambda s : 0.05 > s) output_langs(all_langs, "incomplete", lambda s : 0.05 > s)
return 0 return 0

View File

@ -149,12 +149,12 @@
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="52"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="52"/>
<source>Run command %1 %2</source> <source>Run command %1 %2</source>
<translation>شغّل الأمر 1% 2%</translation> <translation>شغّل الأمر %1 %2</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="61"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="61"/>
<source>Running command %1 %2</source> <source>Running command %1 %2</source>
<translation>يشغّل الأمر 1% 2%</translation> <translation>يشغّل الأمر %1 %2</translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

View File

@ -58,7 +58,7 @@
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="14"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="24"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="24"/>
@ -73,23 +73,23 @@
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/>
<source>Modules</source> <source>Modules</source>
<translation type="unfinished"/> <translation>Moduloj</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"/> <translation>Tipo:</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="64"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="64"/>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="78"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="78"/>
<source>none</source> <source>none</source>
<translation type="unfinished"/> <translation>neniu</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/>
<source>Interface:</source> <source>Interface:</source>
<translation type="unfinished"/> <translation>Interfaco:</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/>
@ -422,7 +422,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.ui" line="14"/> <location filename="../src/modules/partition/gui/ChoicePage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="154"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="154"/>
@ -1025,7 +1025,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="14"/> <location filename="../src/modules/partition/gui/EncryptWidget.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/> <location filename="../src/modules/partition/gui/EncryptWidget.ui" line="32"/>
@ -1091,7 +1091,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.ui" line="14"/> <location filename="../src/modules/finished/FinishedPage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.ui" line="95"/> <location filename="../src/modules/finished/FinishedPage.ui" line="95"/>
@ -1349,7 +1349,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/license/LicensePage.ui" line="14"/> <location filename="../src/modules/license/LicensePage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="123"/> <location filename="../src/modules/license/LicensePage.cpp" line="123"/>
@ -1807,7 +1807,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="14"/> <location filename="../src/modules/keyboard/KeyboardPage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="70"/> <location filename="../src/modules/keyboard/KeyboardPage.ui" line="70"/>
@ -1825,7 +1825,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="14"/> <location filename="../src/modules/users/page_usersetup.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="36"/> <location filename="../src/modules/users/page_usersetup.ui" line="36"/>
@ -1962,7 +1962,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="14"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="22"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="22"/>
@ -2162,7 +2162,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
<message> <message>
<location filename="../src/modules/plasmalnf/page_plasmalnf.ui" line="14"/> <location filename="../src/modules/plasmalnf/page_plasmalnf.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="70"/> <location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="70"/>
@ -2346,7 +2346,7 @@ Output:
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.ui" line="14"/> <location filename="../src/modules/partition/gui/ReplaceWidget.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="135"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="135"/>
@ -2907,7 +2907,7 @@ Output:
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="14"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/>
@ -3063,7 +3063,7 @@ Output:
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="14"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Formularo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="160"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="160"/>

View File

@ -2051,47 +2051,47 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="166"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="166"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</source> <source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system.</source>
<translation type="unfinished"/> <translation>Asenna toisen käyttöjärjestelmän %1 &lt;strong&gt;rinnalle&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="170"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="170"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk and install %1.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Tyhjennä&lt;/strong&gt; levy ja asenna %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="174"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="174"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</source> <source>&lt;strong&gt;Replace&lt;/strong&gt; a partition with %1.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Vaihda&lt;/strong&gt; osio jolla on %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="179"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="179"/>
<source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</source> <source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Manuaalinen&lt;/strong&gt; osointi.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="192"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="192"/>
<source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</source> <source>Install %1 &lt;strong&gt;alongside&lt;/strong&gt; another operating system on disk &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation type="unfinished"/> <translation>Asenna toisen käyttöjärjestelmän %1 &lt;strong&gt;rinnalle&lt;/strong&gt; levylle &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="198"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="198"/>
<source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source> <source>&lt;strong&gt;Erase&lt;/strong&gt; disk &lt;strong&gt;%2&lt;/strong&gt; (%3) and install %1.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Tyhjennä&lt;/strong&gt; levy &lt;strong&gt;%2&lt;/strong&gt; (%3) ja asenna %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="204"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="204"/>
<source>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</source> <source>&lt;strong&gt;Replace&lt;/strong&gt; a partition on disk &lt;strong&gt;%2&lt;/strong&gt; (%3) with %1.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Korvaa&lt;/strong&gt; levyn osio &lt;strong&gt;%2&lt;/strong&gt; (%3) jolla on %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="211"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="211"/>
<source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</source> <source>&lt;strong&gt;Manual&lt;/strong&gt; partitioning on disk &lt;strong&gt;%1&lt;/strong&gt; (%2).</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Manuaalinen&lt;/strong&gt; osiointi levyllä &lt;strong&gt;%1&lt;/strong&gt; (%2).</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="219"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="219"/>
<source>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</source> <source>Disk &lt;strong&gt;%1&lt;/strong&gt; (%2)</source>
<translation type="unfinished"/> <translation>Levy &lt;strong&gt;%1&lt;/strong&gt; (%2)</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="247"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="247"/>
@ -2111,7 +2111,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="407"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="407"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</source> <source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a FAT32 filesystem with the &lt;strong&gt;esp&lt;/strong&gt; flag enabled and mount point &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;You can continue without setting up an EFI system partition but your system may fail to start.</source>
<translation type="unfinished"/> <translation>EFI-järjestelmäosio on välttämätön käynnistystä varten %1.&lt;br/&gt;&lt;br/&gt;Jos haluat tehdä EFI-järjestelmäosion, mene takaisin ja luo FAT32-tiedostojärjestelmä, jossa on&lt;strong&gt;esp&lt;/strong&gt; lippu yhdistettynä asennuspisteen liitokseen &lt;strong&gt;%2&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;Voit jatkaa ilman EFI-järjestelmäosiota, mutta järjestelmä ei ehkä käynnisty.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="420"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="420"/>
@ -2121,7 +2121,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="421"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="421"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</source> <source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;A partition was configured with mount point &lt;strong&gt;%2&lt;/strong&gt; but its &lt;strong&gt;esp&lt;/strong&gt; flag is not set.&lt;br/&gt;To set the flag, go back and edit the partition.&lt;br/&gt;&lt;br/&gt;You can continue without setting the flag but your system may fail to start.</source>
<translation type="unfinished"/> <translation>EFI-järjestelmäosio on välttämätön käynnistystä varten %1.&lt;br/&gt;&lt;br/&gt;Osio määritettiin liittymäpisteellä, &lt;strong&gt;%2&lt;/strong&gt; mutta sen &lt;strong&gt;esp&lt;/strong&gt; lippua ei ole asetettu.&lt;br/&gt;Jos haluat asettaa lipun, palaa takaisin ja muokkaa osiota.&lt;br/&gt;&lt;br/&gt;Voit jatkaa lippua asettamatta, mutta järjestelmä ei ehkä käynnisty.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="456"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="456"/>
@ -2131,7 +2131,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="457"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="457"/>
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source> <source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source>
<translation type="unfinished"/> <translation>Erillinen käynnistysosio perustettiin yhdessä salatun juuriosion kanssa, mutta käynnistysosio ei ole salattu.&lt;br/&gt;&lt;br/&gt;Tällaisissa asetuksissa on tietoturvaongelmia, koska tärkeät järjestelmätiedostot pidetään salaamattomassa osiossa.&lt;br/&gt;Voit jatkaa, jos haluat, mutta tiedostojärjestelmän lukituksen avaaminen tapahtuu myöhemmin järjestelmän käynnistyksen aikana.&lt;br/&gt;Käynnistysosion salaamiseksi siirry takaisin ja luo se uudelleen valitsemalla &lt;strong&gt;Salaa&lt;/strong&gt; osion luominen -ikkunassa. </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="638"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="638"/>
@ -2141,7 +2141,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="639"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="639"/>
<source>There are no partitons to install on.</source> <source>There are no partitons to install on.</source>
<translation type="unfinished"/> <translation>Asennettavia osioita ei ole.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2149,13 +2149,13 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="41"/> <location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="41"/>
<source>Plasma Look-and-Feel Job</source> <source>Plasma Look-and-Feel Job</source>
<translation type="unfinished"/> <translation>Plasman ulkoasu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="73"/> <location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="73"/>
<location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="74"/> <location filename="../src/modules/plasmalnf/PlasmaLnfJob.cpp" line="74"/>
<source>Could not select KDE Plasma Look-and-Feel package</source> <source>Could not select KDE Plasma Look-and-Feel package</source>
<translation type="unfinished"/> <translation>KDE-plasman ulkoasupakettia ei voi valita</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2168,12 +2168,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="70"/> <location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="70"/>
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source> <source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
<translation type="unfinished"/> <translation>Valitse ulkoasu KDE-plasma -työpöydälle. Voit myös ohittaa tämän vaiheen ja määrittää ulkoasun, kun järjestelmä on asetettu. Klikkaamalla ulkoasun valintaa saat suoran esikatselun tästä ulkoasusta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="76"/> <location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="76"/>
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source> <source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
<translation type="unfinished"/> <translation>Valitse KDE-plasma -työpöydän ulkoasu. Voit myös ohittaa tämän vaiheen ja määrittää ulkoasun, kun järjestelmä on asennettu. Klikkaamalla ulkoasun valintaa saat suoran esikatselun tästä ulkoasusta.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2181,7 +2181,7 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfViewStep.cpp" line="68"/> <location filename="../src/modules/plasmalnf/PlasmaLnfViewStep.cpp" line="68"/>
<source>Look-and-Feel</source> <source>Look-and-Feel</source>
<translation type="unfinished"/> <translation>Ulkoasu</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2194,12 +2194,12 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<message> <message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="122"/> <location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="122"/>
<source>No files configured to save for later.</source> <source>No files configured to save for later.</source>
<translation type="unfinished"/> <translation>Ei tiedostoja, joita olisi määritetty tallentamaan myöhemmin.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="176"/> <location filename="../src/modules/preservefiles/PreserveFiles.cpp" line="176"/>
<source>Not all of the configured files could be preserved.</source> <source>Not all of the configured files could be preserved.</source>
<translation type="unfinished"/> <translation>Kaikkia määritettyjä tiedostoja ei voitu säilyttää.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2208,7 +2208,8 @@ Asennusohjelma sulkeutuu ja kaikki muutoksesi katoavat.</translation>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="306"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="306"/>
<source> <source>
There was no output from the command.</source> There was no output from the command.</source>
<translation type="unfinished"/> <translation>
Komentoa ei voitu ajaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="307"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="307"/>
@ -2222,27 +2223,27 @@ Ulostulo:
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="310"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="310"/>
<source>External command crashed.</source> <source>External command crashed.</source>
<translation type="unfinished"/> <translation>Ulkoinen komento kaatui.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="311"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="311"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; crashed.</source> <source>Command &lt;i&gt;%1&lt;/i&gt; crashed.</source>
<translation type="unfinished"/> <translation>Komento &lt;i&gt;%1&lt;/i&gt; kaatui.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="316"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="316"/>
<source>External command failed to start.</source> <source>External command failed to start.</source>
<translation type="unfinished"/> <translation>Ulkoisen komennon käynnistäminen epäonnistui.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="317"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="317"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; failed to start.</source> <source>Command &lt;i&gt;%1&lt;/i&gt; failed to start.</source>
<translation type="unfinished"/> <translation>Komennon &lt;i&gt;%1&lt;/i&gt; käynnistäminen epäonnistui.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="321"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="321"/>
<source>Internal error when starting command.</source> <source>Internal error when starting command.</source>
<translation type="unfinished"/> <translation>Sisäinen virhe käynnistettäessä komentoa.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="322"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="322"/>
@ -2252,22 +2253,22 @@ Ulostulo:
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="325"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="325"/>
<source>External command failed to finish.</source> <source>External command failed to finish.</source>
<translation type="unfinished"/> <translation>Ulkoinen komento ei onnistunut.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="326"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="326"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; failed to finish in %2 seconds.</source> <source>Command &lt;i&gt;%1&lt;/i&gt; failed to finish in %2 seconds.</source>
<translation type="unfinished"/> <translation>Komento &lt;i&gt;%1&lt;/i&gt; epäonnistui %2 sekunnissa.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="332"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="332"/>
<source>External command finished with errors.</source> <source>External command finished with errors.</source>
<translation type="unfinished"/> <translation>Ulkoinen komento päättyi virheisiin.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="333"/> <location filename="../src/libcalamares/utils/CalamaresUtilsSystem.cpp" line="333"/>
<source>Command &lt;i&gt;%1&lt;/i&gt; finished with exit code %2.</source> <source>Command &lt;i&gt;%1&lt;/i&gt; finished with exit code %2.</source>
<translation type="unfinished"/> <translation>Komento &lt;i&gt;%1&lt;/i&gt; päättyi koodiin %2.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2306,7 +2307,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="51"/> <location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="51"/>
<source>Unpartitioned space or unknown partition table</source> <source>Unpartitioned space or unknown partition table</source>
<translation type="unfinished"/> <translation>Osioimaton tila tai tuntematon osion taulu</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/> <location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/>
@ -2316,7 +2317,7 @@ Ulostulo:
<message> <message>
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="62"/> <location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="62"/>
<source>Requirements checking for module &lt;i&gt;%1&lt;/i&gt; is complete.</source> <source>Requirements checking for module &lt;i&gt;%1&lt;/i&gt; is complete.</source>
<translation type="unfinished"/> <translation>Moduulin vaatimusten tarkistaminen &lt;i&gt;%1&lt;/i&gt; on valmis.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/locale/Label.cpp" line="44"/> <location filename="../src/libcalamares/locale/Label.cpp" line="44"/>
@ -2331,17 +2332,17 @@ Ulostulo:
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/> <location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="34"/>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/> <location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
<source>Remove Volume Group named %1.</source> <source>Remove Volume Group named %1.</source>
<translation type="unfinished"/> <translation>Poista asemaryhmä nimeltä %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/> <location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="41"/>
<source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Remove Volume Group named &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Poista asemaryhmä nimeltä &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/> <location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="61"/>
<source>The installer failed to remove a volume group named &apos;%1&apos;.</source> <source>The installer failed to remove a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/> <translation>Asentaja ei onnistunut poistamaan nimettyä asemaryhmää &apos;%1&apos;.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2394,19 +2395,19 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="228"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="228"/>
<source>&lt;strong&gt;%4&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB.</source> <source>&lt;strong&gt;%4&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;%4&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Osio %1 on liian pieni %2. Valitse osio, jonka kapasiteetti on vähintään %3 GiB.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="251"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="251"/>
<source>&lt;strong&gt;%2&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</source> <source>&lt;strong&gt;%2&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;%2&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;EFI-järjestelmäosiota ei löydy mistään tässä järjestelmässä. Palaa takaisin ja käytä manuaalista osiointia määrittämällä %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="262"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="262"/>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="279"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="279"/>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="303"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="303"/>
<source>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 will be installed on %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Warning: &lt;/font&gt;all data on partition %2 will be lost.</source> <source>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 will be installed on %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Warning: &lt;/font&gt;all data on partition %2 will be lost.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;%3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;%1 asennetaan %2.&lt;br/&gt;&lt;font color=&quot;red&quot;&gt;Varoitus: &lt;/font&gt;kaikki osion %2 tiedot katoavat.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="271"/> <location filename="../src/modules/partition/gui/ReplaceWidget.cpp" line="271"/>
@ -2424,7 +2425,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="59"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="59"/>
<source>Resize Filesystem Job</source> <source>Resize Filesystem Job</source>
<translation type="unfinished"/> <translation>Muuta tiedostojärjestelmän kokoa</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="172"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="172"/>
@ -2434,7 +2435,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="173"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="173"/>
<source>The file-system resize job has an invalid configuration and will not run.</source> <source>The file-system resize job has an invalid configuration and will not run.</source>
<translation type="unfinished"/> <translation>Tiedostojärjestelmän koon muutto ei kelpaa eikä sitä suoriteta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="187"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="187"/>
@ -2446,7 +2447,7 @@ Ulostulo:
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="188"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="188"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="198"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="198"/>
<source>Calamares cannot start KPMCore for the file-system resize job.</source> <source>Calamares cannot start KPMCore for the file-system resize job.</source>
<translation type="unfinished"/> <translation>Calamares ei voi käynnistää KPMCore-tiedostoa tiedostojärjestelmän koon muuttamiseksi.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="206"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="206"/>
@ -2460,34 +2461,34 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="207"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="207"/>
<source>The filesystem %1 could not be found in this system, and cannot be resized.</source> <source>The filesystem %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/> <translation>Tiedostojärjestelmää %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="208"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="208"/>
<source>The device %1 could not be found in this system, and cannot be resized.</source> <source>The device %1 could not be found in this system, and cannot be resized.</source>
<translation type="unfinished"/> <translation>Laitetta %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="216"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="216"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="229"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="229"/>
<source>The filesystem %1 cannot be resized.</source> <source>The filesystem %1 cannot be resized.</source>
<translation type="unfinished"/> <translation>Tiedostojärjestelmän %1 kokoa ei voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="217"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="217"/>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="230"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="230"/>
<source>The device %1 cannot be resized.</source> <source>The device %1 cannot be resized.</source>
<translation type="unfinished"/> <translation>Laitteen %1 kokoa ei voi muuttaa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="238"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="238"/>
<source>The filesystem %1 must be resized, but cannot.</source> <source>The filesystem %1 must be resized, but cannot.</source>
<translation type="unfinished"/> <translation>Tiedostojärjestelmän %1 kokoa on muutettava, mutta ei onnistu.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="239"/> <location filename="../src/modules/fsresizer/ResizeFSJob.cpp" line="239"/>
<source>The device %1 must be resized, but cannot</source> <source>The device %1 must be resized, but cannot</source>
<translation type="unfinished"/> <translation>Laitteen %1 kokoa on muutettava, mutta ei onnistu.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2500,12 +2501,12 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="55"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="55"/>
<source>Resize &lt;strong&gt;%2MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; to &lt;strong&gt;%3MiB&lt;/strong&gt;.</source> <source>Resize &lt;strong&gt;%2MiB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; to &lt;strong&gt;%3MiB&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Muuta &lt;strong&gt;%2MiB&lt;/strong&gt; osiota &lt;strong&gt;%1&lt;/strong&gt; - &lt;strong&gt;%3MiB&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="66"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="66"/>
<source>Resizing %2MiB partition %1 to %3MiB.</source> <source>Resizing %2MiB partition %1 to %3MiB.</source>
<translation type="unfinished"/> <translation>Muuntaa %2MiB osion %1 to %3MiB.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="85"/> <location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="85"/>
@ -2527,17 +2528,17 @@ Ulostulo:
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="37"/>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="55"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="55"/>
<source>Resize volume group named %1 from %2 to %3.</source> <source>Resize volume group named %1 from %2 to %3.</source>
<translation type="unfinished"/> <translation>Muuta %1 levyn kokoa %2:sta %3.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="46"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="46"/>
<source>Resize volume group named &lt;strong&gt;%1&lt;/strong&gt; from &lt;strong&gt;%2&lt;/strong&gt; to &lt;strong&gt;%3&lt;/strong&gt;.</source> <source>Resize volume group named &lt;strong&gt;%1&lt;/strong&gt; from &lt;strong&gt;%2&lt;/strong&gt; to &lt;strong&gt;%3&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Muuta levyä nimeltä &lt;strong&gt;%1&lt;/strong&gt; lähde &lt;strong&gt;%2&lt;/strong&gt; - &lt;strong&gt;%3&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="70"/> <location filename="../src/modules/partition/jobs/ResizeVolumeGroupJob.cpp" line="70"/>
<source>The installer failed to resize a volume group named &apos;%1&apos;.</source> <source>The installer failed to resize a volume group named &apos;%1&apos;.</source>
<translation type="unfinished"/> <translation>Asentaja ei onnistunut muuttamaan nimettyä levyä &apos;%1&apos;.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2545,27 +2546,28 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="96"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="96"/>
<source>This computer does not satisfy the minimum requirements for setting up %1.&lt;br/&gt;Setup cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source> <source>This computer does not satisfy the minimum requirements for setting up %1.&lt;br/&gt;Setup cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source>
<translation type="unfinished"/> <translation>Tämä tietokone ei täytä vähimmäisvaatimuksia, %1.&lt;br/&gt;Asennusta ei voi jatkaa. &lt;a href=&quot;#details&quot;&gt;Yksityiskohdat...&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="100"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="100"/>
<source>This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;Installation cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source> <source>This computer does not satisfy the minimum requirements for installing %1.&lt;br/&gt;Installation cannot continue. &lt;a href=&quot;#details&quot;&gt;Details...&lt;/a&gt;</source>
<translation type="unfinished"/> <translation>Tämä tietokone ei täytä asennuksen vähimmäisvaatimuksia, %1.&lt;br/&gt;Asennus ei voi jatkua. &lt;a href=&quot;#details&quot;&gt;Yksityiskohdat...&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="118"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="118"/>
<source>This computer does not satisfy some of the recommended requirements for setting up %1.&lt;br/&gt;Setup can continue, but some features might be disabled.</source> <source>This computer does not satisfy some of the recommended requirements for setting up %1.&lt;br/&gt;Setup can continue, but some features might be disabled.</source>
<translation type="unfinished"/> <translation>Tämä tietokone ei täytä joitakin suositeltuja vaatimuksia %1.&lt;br/&gt;Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="122"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="122"/>
<source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source> <source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source>
<translation type="unfinished"/> <translation>Tämä tietokone ei täytä joitakin suositeltuja vaatimuksia %1.
Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/>
<source>This program will ask you some questions and set up %2 on your computer.</source> <source>This program will ask you some questions and set up %2 on your computer.</source>
<translation type="unfinished"/> <translation>Tämä ohjelma kysyy joitakin kysymyksiä %2 ja asentaa tietokoneeseen.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="181"/> <location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="181"/>
@ -2601,12 +2603,12 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="45"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="45"/>
<source>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Set hostname &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Aseta koneellenimi &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="52"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="52"/>
<source>Setting hostname %1.</source> <source>Setting hostname %1.</source>
<translation type="unfinished"/> <translation>Asetetaan koneellenimi %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="62"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="62"/>
@ -2648,7 +2650,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="331"/> <location filename="../src/modules/keyboard/SetKeyboardLayoutJob.cpp" line="331"/>
<source>Failed to write keyboard configuration to existing /etc/default directory.</source> <source>Failed to write keyboard configuration to existing /etc/default directory.</source>
<translation type="unfinished"/> <translation>Näppäimistöasetusten kirjoittaminen epäonnistui olemassa olevaan /etc/default hakemistoon.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2656,82 +2658,82 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="49"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="49"/>
<source>Set flags on partition %1.</source> <source>Set flags on partition %1.</source>
<translation type="unfinished"/> <translation>Aseta liput osioon %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="52"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="52"/>
<source>Set flags on %1MiB %2 partition.</source> <source>Set flags on %1MiB %2 partition.</source>
<translation type="unfinished"/> <translation>Aseta liput %1MiB %2 osioon.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="56"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="56"/>
<source>Set flags on new partition.</source> <source>Set flags on new partition.</source>
<translation type="unfinished"/> <translation>Aseta liput uuteen osioon.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="67"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="67"/>
<source>Clear flags on partition &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Clear flags on partition &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Poista liput osiosta &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="71"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="71"/>
<source>Clear flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source> <source>Clear flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source>
<translation type="unfinished"/> <translation>Poista liput %1MiB &lt;strong&gt;%2&lt;/strong&gt; osiosta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="85"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="85"/>
<source>Flag %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition as &lt;strong&gt;%3&lt;/strong&gt;.</source> <source>Flag %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition as &lt;strong&gt;%3&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Lippu %1MiB &lt;strong&gt;%2&lt;/strong&gt; osiosta &lt;strong&gt;%3&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="107"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="107"/>
<source>Clearing flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source> <source>Clearing flags on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source>
<translation type="unfinished"/> <translation>Tyhjennä liput %1MiB &lt;strong&gt;%2&lt;/strong&gt; osiossa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="121"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="121"/>
<source>Setting flags &lt;strong&gt;%3&lt;/strong&gt; on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source> <source>Setting flags &lt;strong&gt;%3&lt;/strong&gt; on %1MiB &lt;strong&gt;%2&lt;/strong&gt; partition.</source>
<translation type="unfinished"/> <translation>Asetetaan liput &lt;strong&gt;%3&lt;/strong&gt; %1MiB &lt;strong&gt;%2&lt;/strong&gt; osioon.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="75"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="75"/>
<source>Clear flags on new partition.</source> <source>Clear flags on new partition.</source>
<translation type="unfinished"/> <translation>Tyhjennä liput uuteen osioon.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="79"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="79"/>
<source>Flag partition &lt;strong&gt;%1&lt;/strong&gt; as &lt;strong&gt;%2&lt;/strong&gt;.</source> <source>Flag partition &lt;strong&gt;%1&lt;/strong&gt; as &lt;strong&gt;%2&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Merkitse osio &lt;strong&gt;%1&lt;/strong&gt; - &lt;strong&gt;%2&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="91"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="91"/>
<source>Flag new partition as &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Flag new partition as &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Merkitse uusi osio &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="103"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="103"/>
<source>Clearing flags on partition &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Clearing flags on partition &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Lipun poisto osiosta &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="111"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="111"/>
<source>Clearing flags on new partition.</source> <source>Clearing flags on new partition.</source>
<translation type="unfinished"/> <translation>Uusien osioiden lippujen poistaminen.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="115"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="115"/>
<source>Setting flags &lt;strong&gt;%2&lt;/strong&gt; on partition &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Setting flags &lt;strong&gt;%2&lt;/strong&gt; on partition &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Lippujen &lt;strong&gt;%2&lt;/strong&gt; asettaminen osioon &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="127"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="127"/>
<source>Setting flags &lt;strong&gt;%1&lt;/strong&gt; on new partition.</source> <source>Setting flags &lt;strong&gt;%1&lt;/strong&gt; on new partition.</source>
<translation type="unfinished"/> <translation>Asetetaan liput &lt;strong&gt;%1&lt;/strong&gt; uuteen osioon.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="144"/> <location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="144"/>
<source>The installer failed to set flags on partition %1.</source> <source>The installer failed to set flags on partition %1.</source>
<translation type="unfinished"/> <translation>Asennusohjelma ei voinut asettaa lippuja osioon %1.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2744,7 +2746,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="55"/> <location filename="../src/modules/users/SetPasswordJob.cpp" line="55"/>
<source>Setting password for user %1.</source> <source>Setting password for user %1.</source>
<translation type="unfinished"/> <translation>Salasanan asettaminen käyttäjälle %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="112"/> <location filename="../src/modules/users/SetPasswordJob.cpp" line="112"/>
@ -2764,7 +2766,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="124"/> <location filename="../src/modules/users/SetPasswordJob.cpp" line="124"/>
<source>passwd terminated with error code %1.</source> <source>passwd terminated with error code %1.</source>
<translation type="unfinished"/> <translation>passwd päättyi virhekoodiin %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetPasswordJob.cpp" line="139"/> <location filename="../src/modules/users/SetPasswordJob.cpp" line="139"/>
@ -2812,7 +2814,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="97"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="97"/>
<source>Cannot open /etc/timezone for writing</source> <source>Cannot open /etc/timezone for writing</source>
<translation type="unfinished"/> <translation>Ei voi avata /etc/timezone</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2820,7 +2822,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="50"/> <location filename="../src/modules/shellprocess/ShellProcessJob.cpp" line="50"/>
<source>Shell Processes Job</source> <source>Shell Processes Job</source>
<translation type="unfinished"/> <translation>Shell-prosessien työ</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2829,7 +2831,7 @@ Ulostulo:
<location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="36"/> <location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="36"/>
<source>%L1 / %L2</source> <source>%L1 / %L2</source>
<extracomment>slide counter, %1 of %2 (numeric)</extracomment> <extracomment>slide counter, %1 of %2 (numeric)</extracomment>
<translation type="unfinished"/> <translation>%L1 / %L2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2837,12 +2839,12 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="57"/> <location filename="../src/modules/summary/SummaryPage.cpp" line="57"/>
<source>This is an overview of what will happen once you start the setup procedure.</source> <source>This is an overview of what will happen once you start the setup procedure.</source>
<translation type="unfinished"/> <translation>Tämä on yleiskuva siitä, mitä tapahtuu, kun asennusohjelma käynnistetään.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/summary/SummaryPage.cpp" line="60"/> <location filename="../src/modules/summary/SummaryPage.cpp" line="60"/>
<source>This is an overview of what will happen once you start the install procedure.</source> <source>This is an overview of what will happen once you start the install procedure.</source>
<translation type="unfinished"/> <translation>Tämä on yleiskuva siitä, mitä tapahtuu asennuksen aloittamisen jälkeen.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2863,17 +2865,17 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="53"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="53"/>
<source>Sending installation feedback.</source> <source>Sending installation feedback.</source>
<translation type="unfinished"/> <translation>Lähetetään asennuksen palautetta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="88"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="88"/>
<source>Internal error in install-tracking.</source> <source>Internal error in install-tracking.</source>
<translation type="unfinished"/> <translation>Sisäinen virhe asennuksen seurannassa.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="89"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="89"/>
<source>HTTP request timed out.</source> <source>HTTP request timed out.</source>
<translation type="unfinished"/> <translation>HTTP -pyyntö aikakatkaistiin.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2881,28 +2883,28 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="104"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="104"/>
<source>Machine feedback</source> <source>Machine feedback</source>
<translation type="unfinished"/> <translation>Koneen palaute</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="114"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="114"/>
<source>Configuring machine feedback.</source> <source>Configuring machine feedback.</source>
<translation type="unfinished"/> <translation>Konekohtaisen palautteen määrittäminen.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="133"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="133"/>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="136"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="136"/>
<source>Error in machine feedback configuration.</source> <source>Error in machine feedback configuration.</source>
<translation type="unfinished"/> <translation>Virhe koneen palautteen määrityksessä.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="134"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="134"/>
<source>Could not configure machine feedback correctly, script error %1.</source> <source>Could not configure machine feedback correctly, script error %1.</source>
<translation type="unfinished"/> <translation>Konekohtaista palautetta ei voitu määrittää oikein, komentosarjan virhe %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="137"/> <location filename="../src/modules/tracking/TrackingJobs.cpp" line="137"/>
<source>Could not configure machine feedback correctly, Calamares error %1.</source> <source>Could not configure machine feedback correctly, Calamares error %1.</source>
<translation type="unfinished"/> <translation>Koneen palautetta ei voitu määrittää oikein, Calamares-virhe %1.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2915,37 +2917,37 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="24"/>
<source>Placeholder</source> <source>Placeholder</source>
<translation type="unfinished"/> <translation>Paikkamerkki</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="72"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;By selecting this, you will send &lt;span style=&quot; font-weight:600;&quot;&gt;no information at all&lt;/span&gt; about your installation.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;By selecting this, you will send &lt;span style=&quot; font-weight:600;&quot;&gt;no information at all&lt;/span&gt; about your installation.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Valitsemalla tämän, &lt;span style=&quot; font-weight:600;&quot;&gt;et lähetä mitään&lt;/span&gt; tietoja asennuksesta.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="271"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="271"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;placeholder&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;Click here for more information about user feedback&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;placeholder&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;Click here for more information about user feedback&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;placeholder&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;Klikkaa tästä saadaksesi lisätietoja käyttäjäpalautteesta&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="44"/> <location filename="../src/modules/tracking/TrackingPage.cpp" line="44"/>
<source>Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area.</source> <source>Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area.</source>
<translation type="unfinished"/> <translation>Asentamalla seuranta autat %1 näkemään, kuinka monta käyttäjää heillä on, mitä laitteita he asentavat %1 ja (kahdella viimeisellä vaihtoehdolla), saat jatkuvaa tietoa suosituista sovelluksista. Jos haluat nähdä, mitä tietoa lähetetään, napsauta kunkin alueen vieressä olevaa ohjekuvaketta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="45"/> <location filename="../src/modules/tracking/TrackingPage.cpp" line="45"/>
<source>By selecting this you will send information about your installation and hardware. This information will &lt;b&gt;only be sent once&lt;/b&gt; after the installation finishes.</source> <source>By selecting this you will send information about your installation and hardware. This information will &lt;b&gt;only be sent once&lt;/b&gt; after the installation finishes.</source>
<translation type="unfinished"/> <translation>Kun valitset tämän, lähetät tietoja asennuksesta ja laitteistosta. &lt;b&gt;Nämä tiedot lähetetään vain kerran&lt;/b&gt; asennuksen päättymisen jälkeen.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="46"/> <location filename="../src/modules/tracking/TrackingPage.cpp" line="46"/>
<source>By selecting this you will &lt;b&gt;periodically&lt;/b&gt; send information about your installation, hardware and applications, to %1.</source> <source>By selecting this you will &lt;b&gt;periodically&lt;/b&gt; send information about your installation, hardware and applications, to %1.</source>
<translation type="unfinished"/> <translation>Kun valitset tämän, lähetät &lt;b&gt;määräajoin &lt;/b&gt; tietoja asennuksesta, laitteistosta ja sovelluksista osoitteeseen %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/tracking/TrackingPage.cpp" line="47"/> <location filename="../src/modules/tracking/TrackingPage.cpp" line="47"/>
<source>By selecting this you will &lt;b&gt;regularly&lt;/b&gt; send information about your installation, hardware, applications and usage patterns, to %1.</source> <source>By selecting this you will &lt;b&gt;regularly&lt;/b&gt; send information about your installation, hardware, applications and usage patterns, to %1.</source>
<translation type="unfinished"/> <translation>Kun valitset tämän, lähetät &lt;b&gt;säännöllisesti &lt;/b&gt; tietoja asennuksesta, laitteistosta, sovelluksista ja käyttötavoista osoitteeseen %1.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2961,12 +2963,12 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="120"/> <location filename="../src/modules/users/UsersPage.cpp" line="120"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after setup.&lt;/small&gt;</source> <source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after setup.&lt;/small&gt;</source>
<translation type="unfinished"/> <translation>&lt;small&gt;Jos useampi kuin yksi henkilö käyttää tätä tietokonetta, voit luoda useita tilejä asennuksen jälkeen.&lt;/small&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="126"/> <location filename="../src/modules/users/UsersPage.cpp" line="126"/>
<source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after installation.&lt;/small&gt;</source> <source>&lt;small&gt;If more than one person will use this computer, you can create multiple accounts after installation.&lt;/small&gt;</source>
<translation type="unfinished"/> <translation>&lt;small&gt;Jos useampi kuin yksi henkilö käyttää tätä tietokonetta, voit luoda useita tilejä asennuksen jälkeen.&lt;/small&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="317"/> <location filename="../src/modules/users/UsersPage.cpp" line="317"/>
@ -2976,7 +2978,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="323"/> <location filename="../src/modules/users/UsersPage.cpp" line="323"/>
<source>Your username contains invalid characters. Only lowercase letters and numbers are allowed.</source> <source>Your username contains invalid characters. Only lowercase letters and numbers are allowed.</source>
<translation type="unfinished"/> <translation>Käyttäjätunnuksesi sisältää virheellisiä merkkejä. Vain pienet kirjaimet ja numerot ovat sallittuja.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="361"/> <location filename="../src/modules/users/UsersPage.cpp" line="361"/>
@ -3018,17 +3020,17 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="20"/> <location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="20"/>
<source>List of Physical Volumes</source> <source>List of Physical Volumes</source>
<translation type="unfinished"/> <translation>Fyysisten levyjen luoettelo</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="30"/> <location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="30"/>
<source>Volume Group Name:</source> <source>Volume Group Name:</source>
<translation type="unfinished"/> <translation>Aseman ryhmän nimi:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="43"/> <location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="43"/>
<source>Volume Group Type:</source> <source>Volume Group Type:</source>
<translation type="unfinished"/> <translation>Aseman ryhmän tyyppi:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/> <location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="56"/>
@ -3058,7 +3060,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/> <location filename="../src/modules/partition/gui/VolumeGroupBaseDialog.ui" line="142"/>
<source>Quantity of LVs:</source> <source>Quantity of LVs:</source>
<translation type="unfinished"/> <translation>Määrä LVs:</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3071,12 +3073,12 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="160"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="160"/>
<source>&amp;Release notes</source> <source>&amp;Release notes</source>
<translation type="unfinished"/> <translation>&amp;Julkaisutiedot</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="150"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="150"/>
<source>&amp;Known issues</source> <source>&amp;Known issues</source>
<translation type="unfinished"/> <translation>&amp;Tunnetut ongelmat</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="17"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="17"/>
@ -3087,7 +3089,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
<source>&amp;Support</source> <source>&amp;Support</source>
<translation type="unfinished"/> <translation>&amp;Tuki</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="130"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="130"/>
@ -3097,27 +3099,27 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="76"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="76"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Tervetuloa %1 -asennusohjelmaan.&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Tervetuloa Calamares -asennusohjelmaan %1.&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="71"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="71"/>
<source>&lt;h1&gt;Welcome to the Calamares setup program for %1.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to the Calamares setup program for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Tervetuloa Calamares -asennusohjelmaan %1.&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="72"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="72"/>
<source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Tervetuloa %1 asennukseen.&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="90"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="90"/>
<source>About %1 setup</source> <source>About %1 setup</source>
<translation type="unfinished"/> <translation>Tietoja %1 asetuksista</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="91"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="91"/>
@ -3127,7 +3129,7 @@ Ulostulo:
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="94"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="94"/>
<source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017-2019 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to &lt;a href=&quot;https://calamares.io/team/&quot;&gt;the Calamares team&lt;/a&gt; and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source> <source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017-2019 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to &lt;a href=&quot;https://calamares.io/team/&quot;&gt;the Calamares team&lt;/a&gt; and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;https://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;- %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017-2019 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Kiitokset &lt;a href=&quot;https://calamares.io/team/&quot;&gt;Calamares-tiimille&lt;/a&gt; ja &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares kääntäjille&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;https://calamares.io/&quot;&gt;Calamaresin&lt;/a&gt; kehitystä sponsoroi &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/>

View File

@ -107,7 +107,7 @@
<message> <message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="82"/> <location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="82"/>
<source>Set up</source> <source>Set up</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="83"/> <location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="83"/>
@ -195,12 +195,12 @@
<message numerus="yes"> <message numerus="yes">
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="147"/> <location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="147"/>
<source>Waiting for %n module(s).</source> <source>Waiting for %n module(s).</source>
<translation type="unfinished"><numerusform></numerusform></translation> <translation><numerusform> %n </numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="148"/> <location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="148"/>
<source>(%n second(s))</source> <source>(%n second(s))</source>
<translation type="unfinished"><numerusform></numerusform></translation> <translation><numerusform>(%n (s))</numerusform></translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="152"/> <location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="152"/>
@ -466,7 +466,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="969"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="969"/>
<source>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</source> <source>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</source>
<translation type="unfinished"/> <translation>%1 %2MiB %4 %3MiB </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1067"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1067"/>
@ -709,12 +709,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="44"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="44"/>
<source>Create new %2MiB partition on %4 (%3) with file system %1.</source> <source>Create new %2MiB partition on %4 (%3) with file system %1.</source>
<translation type="unfinished"/> <translation> %4 (%3) %1 %2MiB </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="55"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="55"/>
<source>Create new &lt;strong&gt;%2MiB&lt;/strong&gt; partition on &lt;strong&gt;%4&lt;/strong&gt; (%3) with file system &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>Create new &lt;strong&gt;%2MiB&lt;/strong&gt; partition on &lt;strong&gt;%4&lt;/strong&gt; (%3) with file system &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation type="unfinished"/> <translation>Create new &lt;strong&gt;%4&lt;/strong&gt; (%3) &lt;strong&gt;%1&lt;/strong&gt; &lt;strong&gt;%2MiB&lt;/strong&gt; </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="67"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="67"/>

View File

@ -292,7 +292,7 @@
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="372"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="372"/>
<source>Cancel setup?</source> <source>Cancel setup?</source>
<translation type="unfinished"/> <translation>Anulować ustawianie?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="373"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="373"/>
@ -1144,7 +1144,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message> <message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="132"/> <location filename="../src/modules/finished/FinishedViewStep.cpp" line="132"/>
<source>Setup Complete</source> <source>Setup Complete</source>
<translation type="unfinished"/> <translation>Ustawianie ukończone</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="133"/> <location filename="../src/modules/finished/FinishedViewStep.cpp" line="133"/>
@ -1154,7 +1154,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message> <message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="135"/> <location filename="../src/modules/finished/FinishedViewStep.cpp" line="135"/>
<source>The setup of %1 is complete.</source> <source>The setup of %1 is complete.</source>
<translation type="unfinished"/> <translation>Ustawianie %1 jest ukończone.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="136"/> <location filename="../src/modules/finished/FinishedViewStep.cpp" line="136"/>
@ -1551,7 +1551,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message> <message>
<location filename="../src/modules/oemid/OEMViewStep.cpp" line="115"/> <location filename="../src/modules/oemid/OEMViewStep.cpp" line="115"/>
<source>OEM Configuration</source> <source>OEM Configuration</source>
<translation type="unfinished"/> <translation>Konfiguracja OEM</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/oemid/OEMViewStep.cpp" line="120"/> <location filename="../src/modules/oemid/OEMViewStep.cpp" line="120"/>
@ -2140,7 +2140,7 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message> <message>
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="639"/> <location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="639"/>
<source>There are no partitons to install on.</source> <source>There are no partitons to install on.</source>
<translation type="unfinished"/> <translation>Brak partycji, na których można zainstalować.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2311,7 +2311,7 @@ Wyjście:
<message> <message>
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/> <location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/>
<source>(no mount point)</source> <source>(no mount point)</source>
<translation type="unfinished"/> <translation>(brak punktu montowania)</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="62"/> <location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="62"/>
@ -3083,7 +3083,7 @@ i nie uruchomi się</translation>
<location filename="../src/modules/welcome/WelcomePage.ui" line="17"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="17"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="72"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="72"/>
<source>Select language</source> <source>Select language</source>
<translation type="unfinished"/> <translation>Wybierz język</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
@ -3113,7 +3113,7 @@ i nie uruchomi się</translation>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="72"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="72"/>
<source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to %1 setup.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Witamy w ustawianiu %1.&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="90"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="90"/>

Binary file not shown.

View File

@ -0,0 +1,372 @@
# 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 <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-10 19:18-0400\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
"Language-Team: Catalan (Valencian) (https://www.transifex.com/calamares/teams/20061/ca@valencia/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca@valencia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/modules/grubcfg/main.py:37
msgid "Configure GRUB."
msgstr ""
#: src/modules/mount/main.py:38
msgid "Mounting partitions."
msgstr ""
#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187
#: src/modules/initcpiocfg/main.py:191
#: src/modules/luksopenswaphookcfg/main.py:95
#: src/modules/luksopenswaphookcfg/main.py:99 src/modules/rawfs/main.py:171
#: src/modules/machineid/main.py:49 src/modules/initramfscfg/main.py:94
#: src/modules/initramfscfg/main.py:98 src/modules/openrcdmcryptcfg/main.py:78
#: src/modules/openrcdmcryptcfg/main.py:82
#: src/modules/luksbootkeyfile/main.py:51 src/modules/fstab/main.py:312
#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144
#: src/modules/networkcfg/main.py:48
msgid "Configuration Error"
msgstr ""
#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188
#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172
#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79
#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313
msgid "No partitions are defined for <pre>{!s}</pre> to use."
msgstr ""
#: src/modules/services-systemd/main.py:35
msgid "Configure systemd services"
msgstr ""
#: src/modules/services-systemd/main.py:68
#: src/modules/services-openrc/main.py:102
msgid "Cannot modify service"
msgstr ""
#: src/modules/services-systemd/main.py:69
msgid ""
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
msgstr ""
#: src/modules/services-systemd/main.py:72
#: src/modules/services-systemd/main.py:76
msgid "Cannot enable systemd service <code>{name!s}</code>."
msgstr ""
#: src/modules/services-systemd/main.py:74
msgid "Cannot enable systemd target <code>{name!s}</code>."
msgstr ""
#: src/modules/services-systemd/main.py:78
msgid "Cannot disable systemd target <code>{name!s}</code>."
msgstr ""
#: src/modules/services-systemd/main.py:80
msgid "Cannot mask systemd unit <code>{name!s}</code>."
msgstr ""
#: src/modules/services-systemd/main.py:82
msgid ""
"Unknown systemd commands <code>{command!s}</code> and "
"<code>{suffix!s}</code> for unit {name!s}."
msgstr ""
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
msgstr ""
#: src/modules/unpackfs/main.py:41
msgid "Filling up filesystems."
msgstr ""
#: src/modules/unpackfs/main.py:159
msgid "rsync failed with error code {}."
msgstr ""
#: src/modules/unpackfs/main.py:220 src/modules/unpackfs/main.py:238
msgid "Failed to unpack image \"{}\""
msgstr ""
#: src/modules/unpackfs/main.py:221
msgid ""
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
"installed"
msgstr ""
#: src/modules/unpackfs/main.py:320
msgid "No mount point for root partition"
msgstr ""
#: src/modules/unpackfs/main.py:321
msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
msgstr ""
#: src/modules/unpackfs/main.py:326
msgid "Bad mount point for root partition"
msgstr ""
#: src/modules/unpackfs/main.py:327
msgid "rootMountPoint is \"{}\", which does not exist, doing nothing"
msgstr ""
#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347
#: src/modules/unpackfs/main.py:352
msgid "Bad unsquash configuration"
msgstr ""
#: src/modules/unpackfs/main.py:341
msgid "The filesystem for \"{}\" ({}) is not supported"
msgstr ""
#: src/modules/unpackfs/main.py:348
msgid "The source filesystem \"{}\" does not exist"
msgstr ""
#: src/modules/unpackfs/main.py:353
msgid "The destination \"{}\" in the target system is not a directory"
msgstr ""
#: src/modules/displaymanager/main.py:381
msgid "Cannot write KDM configuration file"
msgstr ""
#: src/modules/displaymanager/main.py:382
msgid "KDM config file {!s} does not exist"
msgstr ""
#: src/modules/displaymanager/main.py:443
msgid "Cannot write LXDM configuration file"
msgstr ""
#: src/modules/displaymanager/main.py:444
msgid "LXDM config file {!s} does not exist"
msgstr ""
#: src/modules/displaymanager/main.py:527
msgid "Cannot write LightDM configuration file"
msgstr ""
#: src/modules/displaymanager/main.py:528
msgid "LightDM config file {!s} does not exist"
msgstr ""
#: src/modules/displaymanager/main.py:602
msgid "Cannot configure LightDM"
msgstr ""
#: src/modules/displaymanager/main.py:603
msgid "No LightDM greeter installed."
msgstr ""
#: src/modules/displaymanager/main.py:634
msgid "Cannot write SLIM configuration file"
msgstr ""
#: src/modules/displaymanager/main.py:635
msgid "SLIM config file {!s} does not exist"
msgstr ""
#: src/modules/displaymanager/main.py:750
msgid "No display managers selected for the displaymanager module."
msgstr ""
#: src/modules/displaymanager/main.py:751
msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf."
msgstr ""
#: src/modules/displaymanager/main.py:831
msgid "Display manager configuration was incomplete"
msgstr ""
#: src/modules/initcpiocfg/main.py:36
msgid "Configuring mkinitcpio."
msgstr ""
#: src/modules/initcpiocfg/main.py:192
#: src/modules/luksopenswaphookcfg/main.py:100
#: src/modules/machineid/main.py:50 src/modules/initramfscfg/main.py:99
#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317
#: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49
msgid "No root mount point is given for <pre>{!s}</pre> to use."
msgstr ""
#: src/modules/initcpio/main.py:33
msgid "Creating initramfs with mkinitcpio."
msgstr ""
#: src/modules/initcpio/main.py:47
msgid "Process Failed"
msgstr ""
#: src/modules/initcpio/main.py:48
msgid ""
"Process <pre>mkinitcpio</pre> failed with error code {!s}. The command was "
"<pre>{!s}</pre>."
msgstr ""
#: src/modules/luksopenswaphookcfg/main.py:35
msgid "Configuring encrypted swap."
msgstr ""
#: src/modules/rawfs/main.py:35
msgid "Installing data."
msgstr ""
#: src/modules/services-openrc/main.py:38
msgid "Configure OpenRC services"
msgstr ""
#: src/modules/services-openrc/main.py:66
msgid "Cannot add service {name!s} to run-level {level!s}."
msgstr ""
#: src/modules/services-openrc/main.py:68
msgid "Cannot remove service {name!s} from run-level {level!s}."
msgstr ""
#: src/modules/services-openrc/main.py:70
msgid ""
"Unknown service-action <code>{arg!s}</code> for service {name!s} in run-"
"level {level!s}."
msgstr ""
#: src/modules/services-openrc/main.py:103
msgid ""
"<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}."
msgstr ""
#: src/modules/services-openrc/main.py:110
msgid "Target runlevel does not exist"
msgstr ""
#: src/modules/services-openrc/main.py:111
msgid ""
"The path for runlevel {level!s} is <code>{path!s}</code>, which does not "
"exist."
msgstr ""
#: src/modules/services-openrc/main.py:119
msgid "Target service does not exist"
msgstr ""
#: src/modules/services-openrc/main.py:120
msgid ""
"The path for service {name!s} is <code>{path!s}</code>, which does not "
"exist."
msgstr ""
#: src/modules/plymouthcfg/main.py:36
msgid "Configure Plymouth theme"
msgstr ""
#: src/modules/machineid/main.py:36
msgid "Generate machine-id."
msgstr ""
#: src/modules/packages/main.py:62
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages."
msgstr ""
#: src/modules/packages/main.py:67
#, python-format
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
#: src/modules/packages/main.py:70
#, python-format
msgid "Removing one package."
msgid_plural "Removing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
#: src/modules/bootloader/main.py:51
msgid "Install bootloader."
msgstr ""
#: src/modules/removeuser/main.py:34
msgid "Remove live user from target system"
msgstr ""
#: src/modules/initramfs/main.py:35
msgid "Creating initramfs."
msgstr ""
#: src/modules/initramfs/main.py:49
msgid "Failed to run update-initramfs on the target"
msgstr ""
#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59
msgid "The exit code was {}"
msgstr ""
#: src/modules/hwclock/main.py:35
msgid "Setting hardware clock."
msgstr ""
#: src/modules/dracut/main.py:36
msgid "Creating initramfs with dracut."
msgstr ""
#: src/modules/dracut/main.py:58
msgid "Failed to run dracut on the target"
msgstr ""
#: src/modules/initramfscfg/main.py:41
msgid "Configuring initramfs."
msgstr ""
#: src/modules/openrcdmcryptcfg/main.py:34
msgid "Configuring OpenRC dmcrypt service."
msgstr ""
#: src/modules/luksbootkeyfile/main.py:35
msgid "Configuring LUKS key file."
msgstr ""
#: src/modules/luksbootkeyfile/main.py:74
msgid "Encrypted rootfs setup error"
msgstr ""
#: src/modules/luksbootkeyfile/main.py:75
msgid "Rootfs partition {!s} is LUKS but no passphrase found."
msgstr ""
#: src/modules/fstab/main.py:38
msgid "Writing fstab."
msgstr ""
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
msgstr ""
#: src/modules/dummypython/main.py:97
msgid "Dummy python step {}"
msgstr ""
#: src/modules/localecfg/main.py:39
msgid "Configuring locales."
msgstr ""
#: src/modules/networkcfg/main.py:37
msgid "Saving network configuration."
msgstr ""

View File

@ -47,7 +47,7 @@ msgstr "Määritysvirhe"
#: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79 #: src/modules/initramfscfg/main.py:95 src/modules/openrcdmcryptcfg/main.py:79
#: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313 #: src/modules/luksbootkeyfile/main.py:52 src/modules/fstab/main.py:313
msgid "No partitions are defined for <pre>{!s}</pre> to use." msgid "No partitions are defined for <pre>{!s}</pre> to use."
msgstr "" msgstr "Ei ole määritetty käyttämään osioita <pre>{!s}</pre> ."
#: src/modules/services-systemd/main.py:35 #: src/modules/services-systemd/main.py:35
msgid "Configure systemd services" msgid "Configure systemd services"
@ -61,30 +61,32 @@ msgstr "Palvelua ei voi muokata"
#: src/modules/services-systemd/main.py:69 #: src/modules/services-systemd/main.py:69
msgid "" msgid ""
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}." "<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
msgstr "" msgstr "<code>systemctl {arg!s}</code> chroot palautti virhe koodin {num!s}."
#: src/modules/services-systemd/main.py:72 #: src/modules/services-systemd/main.py:72
#: src/modules/services-systemd/main.py:76 #: src/modules/services-systemd/main.py:76
msgid "Cannot enable systemd service <code>{name!s}</code>." msgid "Cannot enable systemd service <code>{name!s}</code>."
msgstr "" msgstr "Systemd-palvelua ei saa käyttöön <code>{name!s}</code>."
#: src/modules/services-systemd/main.py:74 #: src/modules/services-systemd/main.py:74
msgid "Cannot enable systemd target <code>{name!s}</code>." msgid "Cannot enable systemd target <code>{name!s}</code>."
msgstr "" msgstr "Systemd-kohdetta ei saa käyttöön <code>{name!s}</code>."
#: src/modules/services-systemd/main.py:78 #: src/modules/services-systemd/main.py:78
msgid "Cannot disable systemd target <code>{name!s}</code>." msgid "Cannot disable systemd target <code>{name!s}</code>."
msgstr "" msgstr "Systemd-kohdetta ei-voi poistaa käytöstä <code>{name!s}</code>."
#: src/modules/services-systemd/main.py:80 #: src/modules/services-systemd/main.py:80
msgid "Cannot mask systemd unit <code>{name!s}</code>." msgid "Cannot mask systemd unit <code>{name!s}</code>."
msgstr "" msgstr "Ei voi peittää systemd-yksikköä <code>{name!s}</code>."
#: src/modules/services-systemd/main.py:82 #: src/modules/services-systemd/main.py:82
msgid "" msgid ""
"Unknown systemd commands <code>{command!s}</code> and " "Unknown systemd commands <code>{command!s}</code> and "
"<code>{suffix!s}</code> for unit {name!s}." "<code>{suffix!s}</code> for unit {name!s}."
msgstr "" msgstr ""
"Tuntematon systemd-komennot <code>{command!s}</code> ja "
"<code>{suffix!s}</code> yksikölle {name!s}."
#: src/modules/umount/main.py:40 #: src/modules/umount/main.py:40
msgid "Unmount file systems." msgid "Unmount file systems."
@ -112,11 +114,11 @@ msgstr ""
#: src/modules/unpackfs/main.py:320 #: src/modules/unpackfs/main.py:320
msgid "No mount point for root partition" msgid "No mount point for root partition"
msgstr "" msgstr "Ei liitoskohtaa juuri root-osiolle"
#: src/modules/unpackfs/main.py:321 #: src/modules/unpackfs/main.py:321
msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing" msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
msgstr "" msgstr "globalstorage ei sisällä \"rootMountPoint\" avainta, eikä tee mitään"
#: src/modules/unpackfs/main.py:326 #: src/modules/unpackfs/main.py:326
msgid "Bad mount point for root partition" msgid "Bad mount point for root partition"
@ -124,7 +126,7 @@ msgstr "Huono kiinnityspiste root-osioon"
#: src/modules/unpackfs/main.py:327 #: src/modules/unpackfs/main.py:327
msgid "rootMountPoint is \"{}\", which does not exist, doing nothing" msgid "rootMountPoint is \"{}\", which does not exist, doing nothing"
msgstr "" msgstr "rootMountPoint on \"{}\", jota ei ole, eikä tee mitään"
#: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347 #: src/modules/unpackfs/main.py:340 src/modules/unpackfs/main.py:347
#: src/modules/unpackfs/main.py:352 #: src/modules/unpackfs/main.py:352
@ -133,39 +135,39 @@ msgstr "Huono epäpuhdas kokoonpano"
#: src/modules/unpackfs/main.py:341 #: src/modules/unpackfs/main.py:341
msgid "The filesystem for \"{}\" ({}) is not supported" msgid "The filesystem for \"{}\" ({}) is not supported"
msgstr "" msgstr "Tiedostojärjestelmää \"{}\" ({}) ei tueta"
#: src/modules/unpackfs/main.py:348 #: src/modules/unpackfs/main.py:348
msgid "The source filesystem \"{}\" does not exist" msgid "The source filesystem \"{}\" does not exist"
msgstr "" msgstr "Lähde tiedostojärjestelmää \"{}\" ei ole olemassa"
#: src/modules/unpackfs/main.py:353 #: src/modules/unpackfs/main.py:353
msgid "The destination \"{}\" in the target system is not a directory" msgid "The destination \"{}\" in the target system is not a directory"
msgstr "" msgstr "Kohdejärjestelmän \"{}\" kohde ei ole hakemisto"
#: src/modules/displaymanager/main.py:381 #: src/modules/displaymanager/main.py:381
msgid "Cannot write KDM configuration file" msgid "Cannot write KDM configuration file"
msgstr "" msgstr "KDM-määritystiedostoa ei voi kirjoittaa"
#: src/modules/displaymanager/main.py:382 #: src/modules/displaymanager/main.py:382
msgid "KDM config file {!s} does not exist" msgid "KDM config file {!s} does not exist"
msgstr "" msgstr "KDM-määritystiedostoa {!s} ei ole olemassa"
#: src/modules/displaymanager/main.py:443 #: src/modules/displaymanager/main.py:443
msgid "Cannot write LXDM configuration file" msgid "Cannot write LXDM configuration file"
msgstr "" msgstr "LXDM-määritystiedostoa ei voi kirjoittaa"
#: src/modules/displaymanager/main.py:444 #: src/modules/displaymanager/main.py:444
msgid "LXDM config file {!s} does not exist" msgid "LXDM config file {!s} does not exist"
msgstr "" msgstr "LXDM-määritystiedostoa {!s} ei ole olemassa"
#: src/modules/displaymanager/main.py:527 #: src/modules/displaymanager/main.py:527
msgid "Cannot write LightDM configuration file" msgid "Cannot write LightDM configuration file"
msgstr "" msgstr "LightDM-määritystiedostoa ei voi kirjoittaa"
#: src/modules/displaymanager/main.py:528 #: src/modules/displaymanager/main.py:528
msgid "LightDM config file {!s} does not exist" msgid "LightDM config file {!s} does not exist"
msgstr "" msgstr "LightDM-määritystiedostoa {!s} ei ole olemassa"
#: src/modules/displaymanager/main.py:602 #: src/modules/displaymanager/main.py:602
msgid "Cannot configure LightDM" msgid "Cannot configure LightDM"
@ -185,13 +187,15 @@ msgstr "SLIM-määritystiedostoa {!s} ei ole olemassa"
#: src/modules/displaymanager/main.py:750 #: src/modules/displaymanager/main.py:750
msgid "No display managers selected for the displaymanager module." msgid "No display managers selected for the displaymanager module."
msgstr "" msgstr "Displaymanager-moduulia varten ei ole valittu näyttönhallintaa."
#: src/modules/displaymanager/main.py:751 #: src/modules/displaymanager/main.py:751
msgid "" msgid ""
"The displaymanagers list is empty or undefined in bothglobalstorage and " "The displaymanagers list is empty or undefined in bothglobalstorage and "
"displaymanager.conf." "displaymanager.conf."
msgstr "" msgstr ""
"Displaymanager-luettelo on tyhjä tai määrittelemätön, sekä globalstorage, "
"että displaymanager.conf tiedostossa."
#: src/modules/displaymanager/main.py:831 #: src/modules/displaymanager/main.py:831
msgid "Display manager configuration was incomplete" msgid "Display manager configuration was incomplete"
@ -208,10 +212,11 @@ msgstr "Määritetään mkinitcpio."
#: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49 #: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49
msgid "No root mount point is given for <pre>{!s}</pre> to use." msgid "No root mount point is given for <pre>{!s}</pre> to use."
msgstr "" msgstr ""
"Root-juuri kiinnityspistettä <pre>{!s}</pre> ei ole annettu käytettäväksi."
#: src/modules/initcpio/main.py:33 #: src/modules/initcpio/main.py:33
msgid "Creating initramfs with mkinitcpio." msgid "Creating initramfs with mkinitcpio."
msgstr "" msgstr "Initramfs luominen mkinitcpion avulla."
#: src/modules/initcpio/main.py:47 #: src/modules/initcpio/main.py:47
msgid "Process Failed" msgid "Process Failed"
@ -222,10 +227,12 @@ msgid ""
"Process <pre>mkinitcpio</pre> failed with error code {!s}. The command was " "Process <pre>mkinitcpio</pre> failed with error code {!s}. The command was "
"<pre>{!s}</pre>." "<pre>{!s}</pre>."
msgstr "" msgstr ""
"Prosessi <pre>mkinitcpio</pre> epäonnistui virhekoodilla {!s}. Komento oli "
"<pre>{!s}</pre>."
#: src/modules/luksopenswaphookcfg/main.py:35 #: src/modules/luksopenswaphookcfg/main.py:35
msgid "Configuring encrypted swap." msgid "Configuring encrypted swap."
msgstr "" msgstr "Salatun swapin määrittäminen."
#: src/modules/rawfs/main.py:35 #: src/modules/rawfs/main.py:35
msgid "Installing data." msgid "Installing data."
@ -233,63 +240,67 @@ msgstr "Asennetaan tietoja."
#: src/modules/services-openrc/main.py:38 #: src/modules/services-openrc/main.py:38
msgid "Configure OpenRC services" msgid "Configure OpenRC services"
msgstr "" msgstr "Määritä OpenRC-palvelut"
#: src/modules/services-openrc/main.py:66 #: src/modules/services-openrc/main.py:66
msgid "Cannot add service {name!s} to run-level {level!s}." msgid "Cannot add service {name!s} to run-level {level!s}."
msgstr "" msgstr "Palvelua {name!s} ei-voi lisätä suorituksen tasolle {level!s}."
#: src/modules/services-openrc/main.py:68 #: src/modules/services-openrc/main.py:68
msgid "Cannot remove service {name!s} from run-level {level!s}." msgid "Cannot remove service {name!s} from run-level {level!s}."
msgstr "" msgstr "Ei voi poistaa palvelua {name!s} ajo-tasolla {level!s}."
#: src/modules/services-openrc/main.py:70 #: src/modules/services-openrc/main.py:70
msgid "" msgid ""
"Unknown service-action <code>{arg!s}</code> for service {name!s} in run-" "Unknown service-action <code>{arg!s}</code> for service {name!s} in run-"
"level {level!s}." "level {level!s}."
msgstr "" msgstr ""
"Tuntematon huoltotoiminto<code>{arg!s}</code> palvelun {name!s} "
"palvelutasolle {level!s}."
#: src/modules/services-openrc/main.py:103 #: src/modules/services-openrc/main.py:103
msgid "" msgid ""
"<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}." "<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}."
msgstr "" msgstr ""
"<code>rc-update {arg!s}</code> palautti chrootissa virhekoodin {num!s}."
#: src/modules/services-openrc/main.py:110 #: src/modules/services-openrc/main.py:110
msgid "Target runlevel does not exist" msgid "Target runlevel does not exist"
msgstr "" msgstr "Kohde runlevel ei ole olemassa"
#: src/modules/services-openrc/main.py:111 #: src/modules/services-openrc/main.py:111
msgid "" msgid ""
"The path for runlevel {level!s} is <code>{path!s}</code>, which does not " "The path for runlevel {level!s} is <code>{path!s}</code>, which does not "
"exist." "exist."
msgstr "" msgstr "Ajotason polku {level!s} on <code>{path!s}</code>, jota ei ole."
#: src/modules/services-openrc/main.py:119 #: src/modules/services-openrc/main.py:119
msgid "Target service does not exist" msgid "Target service does not exist"
msgstr "" msgstr "Kohdepalvelua ei ole"
#: src/modules/services-openrc/main.py:120 #: src/modules/services-openrc/main.py:120
msgid "" msgid ""
"The path for service {name!s} is <code>{path!s}</code>, which does not " "The path for service {name!s} is <code>{path!s}</code>, which does not "
"exist." "exist."
msgstr "" msgstr ""
"Palvelun polku {name!s} on <code>{path!s}</code>, jota ei ole olemassa."
#: src/modules/plymouthcfg/main.py:36 #: src/modules/plymouthcfg/main.py:36
msgid "Configure Plymouth theme" msgid "Configure Plymouth theme"
msgstr "" msgstr "Määritä Plymouthin teema"
#: src/modules/machineid/main.py:36 #: src/modules/machineid/main.py:36
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "" msgstr "Luo koneen-id."
#: src/modules/packages/main.py:62 #: src/modules/packages/main.py:62
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "" msgstr "Pakettien käsittely (%(count)d / %(total)d)"
#: src/modules/packages/main.py:64 src/modules/packages/main.py:74 #: src/modules/packages/main.py:64 src/modules/packages/main.py:74
msgid "Install packages." msgid "Install packages."
msgstr "" msgstr "Asenna paketteja."
#: src/modules/packages/main.py:67 #: src/modules/packages/main.py:67
#, python-format #, python-format
@ -307,72 +318,72 @@ msgstr[1] ""
#: src/modules/bootloader/main.py:51 #: src/modules/bootloader/main.py:51
msgid "Install bootloader." msgid "Install bootloader."
msgstr "" msgstr "Asenna bootloader."
#: src/modules/removeuser/main.py:34 #: src/modules/removeuser/main.py:34
msgid "Remove live user from target system" msgid "Remove live user from target system"
msgstr "" msgstr "Poista Live-käyttäjä kohdejärjestelmästä"
#: src/modules/initramfs/main.py:35 #: src/modules/initramfs/main.py:35
msgid "Creating initramfs." msgid "Creating initramfs."
msgstr "" msgstr "Luodaan initramfs."
#: src/modules/initramfs/main.py:49 #: src/modules/initramfs/main.py:49
msgid "Failed to run update-initramfs on the target" msgid "Failed to run update-initramfs on the target"
msgstr "" msgstr "Kohteen update-initramfs suorittaminen epäonnistui"
#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59 #: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59
msgid "The exit code was {}" msgid "The exit code was {}"
msgstr "" msgstr "Poistumiskoodi oli {}"
#: src/modules/hwclock/main.py:35 #: src/modules/hwclock/main.py:35
msgid "Setting hardware clock." msgid "Setting hardware clock."
msgstr "" msgstr "Laitteiston kellon asettaminen."
#: src/modules/dracut/main.py:36 #: src/modules/dracut/main.py:36
msgid "Creating initramfs with dracut." msgid "Creating initramfs with dracut."
msgstr "" msgstr "Initramfs luominen dracut:lla."
#: src/modules/dracut/main.py:58 #: src/modules/dracut/main.py:58
msgid "Failed to run dracut on the target" msgid "Failed to run dracut on the target"
msgstr "" msgstr "Dracut-ohjelman suorittaminen ei onnistunut"
#: src/modules/initramfscfg/main.py:41 #: src/modules/initramfscfg/main.py:41
msgid "Configuring initramfs." msgid "Configuring initramfs."
msgstr "" msgstr "Määritetään initramfs."
#: src/modules/openrcdmcryptcfg/main.py:34 #: src/modules/openrcdmcryptcfg/main.py:34
msgid "Configuring OpenRC dmcrypt service." msgid "Configuring OpenRC dmcrypt service."
msgstr "" msgstr "OpenRC dmcrypt-palvelun määrittäminen."
#: src/modules/luksbootkeyfile/main.py:35 #: src/modules/luksbootkeyfile/main.py:35
msgid "Configuring LUKS key file." msgid "Configuring LUKS key file."
msgstr "" msgstr "LUKS-avaintiedoston määrittäminen."
#: src/modules/luksbootkeyfile/main.py:74 #: src/modules/luksbootkeyfile/main.py:74
msgid "Encrypted rootfs setup error" msgid "Encrypted rootfs setup error"
msgstr "" msgstr "Salattu rootfs asennusvirhe"
#: src/modules/luksbootkeyfile/main.py:75 #: src/modules/luksbootkeyfile/main.py:75
msgid "Rootfs partition {!s} is LUKS but no passphrase found." msgid "Rootfs partition {!s} is LUKS but no passphrase found."
msgstr "" msgstr "Rootfs-osio {!s} on LUKS, mutta salasanaa ei löydy."
#: src/modules/fstab/main.py:38 #: src/modules/fstab/main.py:38
msgid "Writing fstab." msgid "Writing fstab."
msgstr "" msgstr "Fstab kirjoittaminen."
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
msgstr "" msgstr "Harjoitus python-työ."
#: src/modules/dummypython/main.py:97 #: src/modules/dummypython/main.py:97
msgid "Dummy python step {}" msgid "Dummy python step {}"
msgstr "" msgstr "Harjoitus python-vaihe {}"
#: src/modules/localecfg/main.py:39 #: src/modules/localecfg/main.py:39
msgid "Configuring locales." msgid "Configuring locales."
msgstr "" msgstr "Määritetään locales."
#: src/modules/networkcfg/main.py:37 #: src/modules/networkcfg/main.py:37
msgid "Saving network configuration." msgid "Saving network configuration."
msgstr "" msgstr "Tallennetaan verkon määrityksiä."

Binary file not shown.

View File

@ -25,11 +25,11 @@ msgstr ""
#: src/modules/grubcfg/main.py:37 #: src/modules/grubcfg/main.py:37
msgid "Configure GRUB." msgid "Configure GRUB."
msgstr "" msgstr "Konfiguracja GRUB."
#: src/modules/mount/main.py:38 #: src/modules/mount/main.py:38
msgid "Mounting partitions." msgid "Mounting partitions."
msgstr "" msgstr "Montowanie partycji."
#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187 #: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187
#: src/modules/initcpiocfg/main.py:191 #: src/modules/initcpiocfg/main.py:191
@ -42,7 +42,7 @@ msgstr ""
#: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144 #: src/modules/fstab/main.py:316 src/modules/localecfg/main.py:144
#: src/modules/networkcfg/main.py:48 #: src/modules/networkcfg/main.py:48
msgid "Configuration Error" msgid "Configuration Error"
msgstr "" msgstr "Błąd konfiguracji"
#: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188 #: src/modules/mount/main.py:151 src/modules/initcpiocfg/main.py:188
#: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172
@ -53,12 +53,12 @@ msgstr ""
#: src/modules/services-systemd/main.py:35 #: src/modules/services-systemd/main.py:35
msgid "Configure systemd services" msgid "Configure systemd services"
msgstr "" msgstr "Konfiguracja usług systemd"
#: src/modules/services-systemd/main.py:68 #: src/modules/services-systemd/main.py:68
#: src/modules/services-openrc/main.py:102 #: src/modules/services-openrc/main.py:102
msgid "Cannot modify service" msgid "Cannot modify service"
msgstr "" msgstr "Nie można zmodyfikować usług"
#: src/modules/services-systemd/main.py:69 #: src/modules/services-systemd/main.py:69
msgid "" msgid ""
@ -167,11 +167,11 @@ msgstr "Plik konfiguracji LXDM {!s} nie istnieje"
#: src/modules/displaymanager/main.py:527 #: src/modules/displaymanager/main.py:527
msgid "Cannot write LightDM configuration file" msgid "Cannot write LightDM configuration file"
msgstr "nie można zapisać pliku konfiguracji LightDM" msgstr "Nie można zapisać pliku konfiguracji LightDM"
#: src/modules/displaymanager/main.py:528 #: src/modules/displaymanager/main.py:528
msgid "LightDM config file {!s} does not exist" msgid "LightDM config file {!s} does not exist"
msgstr "Plik konfiguracji {!s} nie istnieje" msgstr "Plik konfiguracji LightDM {!s} nie istnieje"
#: src/modules/displaymanager/main.py:602 #: src/modules/displaymanager/main.py:602
msgid "Cannot configure LightDM" msgid "Cannot configure LightDM"
@ -179,7 +179,7 @@ msgstr "Nie można skonfigurować LightDM"
#: src/modules/displaymanager/main.py:603 #: src/modules/displaymanager/main.py:603
msgid "No LightDM greeter installed." msgid "No LightDM greeter installed."
msgstr "Nie zainstalowano ekranu witającego LightDM" msgstr "Nie zainstalowano ekranu powitalnego LightDM."
#: src/modules/displaymanager/main.py:634 #: src/modules/displaymanager/main.py:634
msgid "Cannot write SLIM configuration file" msgid "Cannot write SLIM configuration file"
@ -191,7 +191,7 @@ msgstr "Plik konfiguracji SLIM {!s} nie istnieje"
#: src/modules/displaymanager/main.py:750 #: src/modules/displaymanager/main.py:750
msgid "No display managers selected for the displaymanager module." msgid "No display managers selected for the displaymanager module."
msgstr "Brak wybranych menedżerów wyświetlania dla modułu displaymanager" msgstr "Brak wybranych menedżerów wyświetlania dla modułu displaymanager."
#: src/modules/displaymanager/main.py:751 #: src/modules/displaymanager/main.py:751
msgid "" msgid ""
@ -203,11 +203,11 @@ msgstr ""
#: src/modules/displaymanager/main.py:831 #: src/modules/displaymanager/main.py:831
msgid "Display manager configuration was incomplete" msgid "Display manager configuration was incomplete"
msgstr "Konfiguracja menedzera wyświetlania była niekompletna" msgstr "Konfiguracja menedżera wyświetlania była niekompletna"
#: src/modules/initcpiocfg/main.py:36 #: src/modules/initcpiocfg/main.py:36
msgid "Configuring mkinitcpio." msgid "Configuring mkinitcpio."
msgstr "" msgstr "Konfigurowanie mkinitcpio."
#: src/modules/initcpiocfg/main.py:192 #: src/modules/initcpiocfg/main.py:192
#: src/modules/luksopenswaphookcfg/main.py:100 #: src/modules/luksopenswaphookcfg/main.py:100
@ -219,11 +219,11 @@ msgstr ""
#: src/modules/initcpio/main.py:33 #: src/modules/initcpio/main.py:33
msgid "Creating initramfs with mkinitcpio." msgid "Creating initramfs with mkinitcpio."
msgstr "" msgstr "Tworzenie initramfs z mkinitcpio."
#: src/modules/initcpio/main.py:47 #: src/modules/initcpio/main.py:47
msgid "Process Failed" msgid "Process Failed"
msgstr "" msgstr "Błąd procesu"
#: src/modules/initcpio/main.py:48 #: src/modules/initcpio/main.py:48
msgid "" msgid ""
@ -241,7 +241,7 @@ msgstr "Instalowanie danych."
#: src/modules/services-openrc/main.py:38 #: src/modules/services-openrc/main.py:38
msgid "Configure OpenRC services" msgid "Configure OpenRC services"
msgstr "" msgstr "Konfiguracja usług OpenRC"
#: src/modules/services-openrc/main.py:66 #: src/modules/services-openrc/main.py:66
msgid "Cannot add service {name!s} to run-level {level!s}." msgid "Cannot add service {name!s} to run-level {level!s}."
@ -274,7 +274,7 @@ msgstr ""
#: src/modules/services-openrc/main.py:119 #: src/modules/services-openrc/main.py:119
msgid "Target service does not exist" msgid "Target service does not exist"
msgstr "" msgstr "Docelowa usługa nie istnieje"
#: src/modules/services-openrc/main.py:120 #: src/modules/services-openrc/main.py:120
msgid "" msgid ""
@ -284,7 +284,7 @@ msgstr ""
#: src/modules/plymouthcfg/main.py:36 #: src/modules/plymouthcfg/main.py:36
msgid "Configure Plymouth theme" msgid "Configure Plymouth theme"
msgstr "" msgstr "Konfiguracja motywu Plymouth"
#: src/modules/machineid/main.py:36 #: src/modules/machineid/main.py:36
msgid "Generate machine-id." msgid "Generate machine-id."
@ -319,7 +319,7 @@ msgstr[3] "Usuwanie %(num)d pakietów."
#: src/modules/bootloader/main.py:51 #: src/modules/bootloader/main.py:51
msgid "Install bootloader." msgid "Install bootloader."
msgstr "" msgstr "Instalacja programu rozruchowego."
#: src/modules/removeuser/main.py:34 #: src/modules/removeuser/main.py:34
msgid "Remove live user from target system" msgid "Remove live user from target system"
@ -327,7 +327,7 @@ msgstr ""
#: src/modules/initramfs/main.py:35 #: src/modules/initramfs/main.py:35
msgid "Creating initramfs." msgid "Creating initramfs."
msgstr "" msgstr "Tworzenie initramfs."
#: src/modules/initramfs/main.py:49 #: src/modules/initramfs/main.py:49
msgid "Failed to run update-initramfs on the target" msgid "Failed to run update-initramfs on the target"
@ -343,7 +343,7 @@ msgstr ""
#: src/modules/dracut/main.py:36 #: src/modules/dracut/main.py:36
msgid "Creating initramfs with dracut." msgid "Creating initramfs with dracut."
msgstr "" msgstr "Tworzenie initramfs z dracut."
#: src/modules/dracut/main.py:58 #: src/modules/dracut/main.py:58
msgid "Failed to run dracut on the target" msgid "Failed to run dracut on the target"
@ -351,7 +351,7 @@ msgstr ""
#: src/modules/initramfscfg/main.py:41 #: src/modules/initramfscfg/main.py:41
msgid "Configuring initramfs." msgid "Configuring initramfs."
msgstr "" msgstr "Konfigurowanie initramfs."
#: src/modules/openrcdmcryptcfg/main.py:34 #: src/modules/openrcdmcryptcfg/main.py:34
msgid "Configuring OpenRC dmcrypt service." msgid "Configuring OpenRC dmcrypt service."
@ -359,7 +359,7 @@ msgstr ""
#: src/modules/luksbootkeyfile/main.py:35 #: src/modules/luksbootkeyfile/main.py:35
msgid "Configuring LUKS key file." msgid "Configuring LUKS key file."
msgstr "" msgstr "Konfigurowanie pliku klucza LUKS."
#: src/modules/luksbootkeyfile/main.py:74 #: src/modules/luksbootkeyfile/main.py:74
msgid "Encrypted rootfs setup error" msgid "Encrypted rootfs setup error"
@ -371,7 +371,7 @@ msgstr ""
#: src/modules/fstab/main.py:38 #: src/modules/fstab/main.py:38
msgid "Writing fstab." msgid "Writing fstab."
msgstr "" msgstr "Zapisywanie fstab."
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
@ -383,8 +383,8 @@ msgstr "Krok fikcyjny Python {}"
#: src/modules/localecfg/main.py:39 #: src/modules/localecfg/main.py:39
msgid "Configuring locales." msgid "Configuring locales."
msgstr "" msgstr "Konfigurowanie ustawień lokalnych."
#: src/modules/networkcfg/main.py:37 #: src/modules/networkcfg/main.py:37
msgid "Saving network configuration." msgid "Saving network configuration."
msgstr "" msgstr "Zapisywanie konfiguracji sieci."

View File

@ -1,7 +1 @@
file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) calamares_add_branding_subdirectory( default )
foreach( SUBDIRECTORY ${SUBDIRECTORIES} )
set( _sd "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" )
if( IS_DIRECTORY "${_sd}" AND EXISTS "${_sd}/branding.desc" )
calamares_add_branding_subdirectory( ${SUBDIRECTORY} )
endif()
endforeach()

View File

@ -12,6 +12,7 @@ forking Calamares just for adding some files. Calamares installs
CMake support macros to help create branding packages. See the CMake support macros to help create branding packages. See the
calamares-branding repository for examples of stand-alone branding. calamares-branding repository for examples of stand-alone branding.
## Examples ## Examples
There is one example of a branding component included with Calamares, There is one example of a branding component included with Calamares,
@ -20,7 +21,9 @@ so that it can be run directly from the build directory for testing purposes:
- `default/` is a sample brand for the Generic Linux distribution. It uses - `default/` is a sample brand for the Generic Linux distribution. It uses
the default Calamares icons and a as start-page splash it provides a the default Calamares icons and a as start-page splash it provides a
tag-cloud view of languages. The slideshow is a basic one with a few tag-cloud view of languages. The slideshow is a basic one with a few
slides of text and a single image. No translations are provided. slides of text and a single image. Translations (done by hand, not via
the usual mechanism of Calamares translations) in English, Arabic, Dutch
and French are available.
Since the slideshow can be **any** QML, it is limited only by your designers Since the slideshow can be **any** QML, it is limited only by your designers
imagination and your QML experience. For straightforward presentations, imagination and your QML experience. For straightforward presentations,
@ -29,6 +32,41 @@ repository.
[1] https://github.com/calamares/calamares-branding [1] https://github.com/calamares/calamares-branding
## API Versions
In Calamares versions prior to 3.2.10, the QML slideshow was loaded
synchronously when the installation page is shown. This can lead to
noticeable lag when showing that page. The QML is written start when
it is loaded, by responding to the `onComplete` signal.
Calamares 3.2.10 introduces an API versioning scheme which uses different
loading mechanisms.
- **API version 1** Loads the QML slideshow synchronously, as before.
- The QML can use `onComplete` to start timers, etc. for progress
or animation.
- Translations are supported through `qsTr()` and the language that is
in use when the installation slideshow is loaded, will be used
(once the installation part is running, it can't change anyway).
- **API version 2** Loads the QML slideshow **a**synchronously, on
startup (generally during the requirements-checking phase of Calamares)
so that no compilation lag is seen.
- The QML should **not** use `onComplete`, since the QML is loaded and
instantiated at startup. Instead,
- The QML should provide functions `onActivate()` and `onLeave()` in the
root object of the slideshow. These are called when the slideshow
should start (e.g. becomes visible) and stop.
- Translations are supported through `qsTr()`. However, since the language
can change after the QML is loaded, code should count on the bindings
being re-evaluated on language change. Translation updates (e.g. change
of language) is **only supported** with Qt 5.10 and later.
The setting *slideshowAPI* in `branding.desc` indicates which one to use
for a given branding slideshow. Which API to use is really a function of
the QML. Expect the version 1 API to be deprecated in the course of Calamares 3.3.
## Translations ## Translations
QML files in a branding component can be translated. Translations should QML files in a branding component can be translated. Translations should
@ -37,6 +75,9 @@ Qt translation files are supported (`.ts` sources which get compiled into
`.qm`). Inside the `lang` subdirectory all translation files must be named `.qm`). Inside the `lang` subdirectory all translation files must be named
according to the scheme `calamares-<component name>_<language>.ts`. according to the scheme `calamares-<component name>_<language>.ts`.
The example branding component, called *default*, therefore has translation
files names `calamares-default_nl.ts` (similar for other languages than Dutch).
Text in your `show.qml` (or whatever *slideshow* is set to in the descriptor Text in your `show.qml` (or whatever *slideshow* is set to in the descriptor
file) should be enclosed in this form for translations file) should be enclosed in this form for translations
@ -53,6 +94,7 @@ If you are packaging the branding by hand, use
``` ```
with all the language suffixes to *file*. with all the language suffixes to *file*.
## Presentation ## Presentation
The default QML classes provided by Calamares can be used for a simple The default QML classes provided by Calamares can be used for a simple
@ -83,7 +125,8 @@ Generally, you will add a few presentation-level elements first,
then slides. then slides.
- For visible navigation arrows, add elements of class *ForwardButton* and - For visible navigation arrows, add elements of class *ForwardButton* and
*BackwardButton*. Set the *source* property of each to a suitable *BackwardButton*. Set the *source* property of each to a suitable
image. See the `fancy/` example. It is recommended to turn off other image. See the `fancy/` example in the external branding-examples
repository. It is recommended to turn off other
kinds of navigation when visible navigation is used. kinds of navigation when visible navigation is used.
- To indicate where the user is, add an element of class *SlideCounter*. - To indicate where the user is, add an element of class *SlideCounter*.
This indicates in "n / total" form where the user is in the slideshow. This indicates in "n / total" form where the user is in the slideshow.
@ -107,6 +150,7 @@ The presentation classes can be used to produce a fairly dry slideshow
for the installation process; it is recommended to experiment with the for the installation process; it is recommended to experiment with the
visual effects and classes available in QtQuick. visual effects and classes available in QtQuick.
## Project Layout ## Project Layout
A branding component that is created and installed outside of Calamares A branding component that is created and installed outside of Calamares

View File

@ -93,6 +93,17 @@ images:
# The slideshow is displayed during execution steps (e.g. when the # The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things). # installer is actually writing to disk and doing other slow things).
slideshow: "show.qml" slideshow: "show.qml"
# There are two available APIs for the slideshow:
# - 1 (the default) loads the entire slideshow when the installation-
# slideshow page is shown and starts the QML then. The QML
# is never stopped (after installation is done, times etc.
# continue to fire).
# - 2 loads the slideshow on startup and calls onActivate() and
# onLeave() in the root object. After the installation is done,
# the show is stopped (first by calling onLeave(), then destroying
# the QML components).
slideshowAPI: 2
# Colors for text and background components. # Colors for text and background components.
# #

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>show</name>
<message>
<location filename="../show.qml" line="64"/>
<source>This is a second Slide element.</source>
<translation>عرض الثاني</translation>
</message>
<message>
<location filename="../show.qml" line="68"/>
<source>This is a third Slide element.</source>
<translation>عرض الثالث</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>show</name>
<message>
<location filename="../show.qml" line="64"/>
<source>This is a second Slide element.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../show.qml" line="68"/>
<source>This is a third Slide element.</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>show</name>
<message>
<location filename="../show.qml" line="64"/>
<source>This is a second Slide element.</source>
<translation>Ceci est la deuxieme affiche.</translation>
</message>
<message>
<location filename="../show.qml" line="68"/>
<source>This is a third Slide element.</source>
<translation>La troisième affice ce trouve ici.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>show</name>
<message>
<location filename="../show.qml" line="64"/>
<source>This is a second Slide element.</source>
<translation>Dit is het tweede Dia element.</translation>
</message>
<message>
<location filename="../show.qml" line="68"/>
<source>This is a third Slide element.</source>
<translation>Dit is het derde Dia element.</translation>
</message>
</context>
</TS>

View File

@ -24,12 +24,17 @@ Presentation
{ {
id: presentation id: presentation
function nextSlide() {
console.log("Next slide");
presentation.goToNextSlide();
}
Timer { Timer {
id: advanceTimer id: advanceTimer
interval: 5000 interval: 1000
running: false running: false
repeat: true repeat: true
onTriggered: presentation.goToNextSlide() onTriggered: nextSlide()
} }
Slide { Slide {
@ -56,12 +61,16 @@ Presentation
} }
Slide { Slide {
centeredText: "This is a second Slide element." centeredText: qsTr("This is a second Slide element.")
} }
Slide { Slide {
centeredText: "This is a third Slide element." centeredText: qsTr("This is a third Slide element.")
} }
Component.onCompleted: advanceTimer.running = true function onActivate() {
presentation.currentSlide = 0;
advanceTimer.running = true
console.log("Component activated");
}
} }

View File

@ -177,6 +177,16 @@ if ( ECM_FOUND AND BUILD_TESTING )
Qt5::Test Qt5::Test
) )
calamares_automoc( libcalamarespartitiontest ) calamares_automoc( libcalamarespartitiontest )
ecm_add_test(
locale/Tests.cpp
TEST_NAME
libcalamareslocaletest
LINK_LIBRARIES
calamares
Qt5::Test
)
calamares_automoc( libcalamareslocaletest )
endif() endif()
if( BUILD_TESTING ) if( BUILD_TESTING )

View File

@ -64,17 +64,21 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri
{ {
bool ok = false; bool ok = false;
m_type = handlerTypes().find( implementation, ok ); m_type = handlerTypes().find( implementation, ok );
#if !defined(QT_XML_LIB)
if ( m_type == Type::XML )
{
m_type = Type::None;
cWarning() << "GeoIP style XML is not supported in this version of Calamares.";
}
#endif
if ( !ok ) if ( !ok )
{ {
cWarning() << "GeoIP Style" << implementation << "is not recognized."; cWarning() << "GeoIP style" << implementation << "is not recognized.";
} }
else if ( m_type == Type::None )
{
cWarning() << "GeoIP style *none* does not do anything.";
}
#if !defined(QT_XML_LIB)
else if ( m_type == Type::XML )
{
m_type = Type::None;
cWarning() << "GeoIP style *xml* is not supported in this version of Calamares.";
}
#endif
} }
Handler::~Handler() Handler::~Handler()

View File

@ -80,6 +80,8 @@ public:
bool isValid() const { return m_type != Type::None; } bool isValid() const { return m_type != Type::None; }
Type type() const { return m_type; } Type type() const { return m_type; }
QString url() const { return m_url; }
QString selector() const { return m_selector; }
private: private:
Type m_type; Type m_type;

View File

@ -0,0 +1,87 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General 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 <http://www.gnu.org/licenses/>.
*/
#include "Tests.h"
#include "locale/LabelModel.h"
#include "utils/Logger.h"
#include <QtTest/QtTest>
QTEST_GUILESS_MAIN( LocaleTests )
LocaleTests::LocaleTests()
{
}
LocaleTests::~LocaleTests()
{
}
void
LocaleTests::initTestCase()
{
}
void
LocaleTests::testLanguageModelCount()
{
const auto* m = CalamaresUtils::Locale::availableTranslations();
QVERIFY( m );
QVERIFY( m->rowCount( QModelIndex() ) > 1 );
int dutch = m->find( QLocale( "nl_NL" ) );
QVERIFY( dutch > 0 );
QCOMPARE( m->find( "NL" ), dutch );
// must be capitals
QCOMPARE( m->find( "nl" ), -1 );
QCOMPARE( m->find( QLocale( "nl" ) ), dutch );
// Belgium speaks Dutch as well
QCOMPARE( m->find( "BE" ), dutch );
}
void
LocaleTests::testEsperanto()
{
Logger::setupLogLevel( Logger::LOGDEBUG );
const auto* m = CalamaresUtils::Locale::availableTranslations();
QVERIFY( m );
// Cursory test that all the locales found have a sensible language,
// and that some specific languages have sensible corresponding data.
//
// This fails on Esperanto (or, if Esperanto is added to Qt, then
// this will pass and the test after the loop will fail.
for ( int i = 0; i < m->rowCount( QModelIndex() ); ++i )
{
const auto& label = m->locale( i );
const auto locale = label.locale();
cDebug() << label.label() << locale;
QVERIFY( locale.language() == QLocale::Greek ? locale.script() == QLocale::GreekScript : true );
QVERIFY( locale.language() == QLocale::Korean ? locale.script() == QLocale::KoreanScript : true );
QVERIFY( locale.language() == QLocale::Lithuanian ? locale.country() == QLocale::Lithuania : true );
QVERIFY( locale.language() != QLocale::C );
}
QCOMPARE( QLocale( "eo" ).language(), QLocale::C );
}

View File

@ -0,0 +1,38 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General 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 <http://www.gnu.org/licenses/>.
*/
#ifndef LIBCALAMARES_LOCALE_TESTS_H
#define LIBCALAMARES_LOCALE_TESTS_H
#include <QObject>
class LocaleTests : public QObject
{
Q_OBJECT
public:
LocaleTests();
~LocaleTests() override;
private Q_SLOTS:
void initTestCase();
void testLanguageModelCount();
void testEsperanto();
};
#endif

View File

@ -127,6 +127,7 @@ Branding::Branding( const QString& brandingFilePath,
, m_descriptorPath( brandingFilePath ) , m_descriptorPath( brandingFilePath )
, m_welcomeStyleCalamares( false ) , m_welcomeStyleCalamares( false )
, m_welcomeExpandingLogo( true ) , m_welcomeExpandingLogo( true )
, m_slideshowAPI( 1 )
{ {
cDebug() << "Using Calamares branding file at" << brandingFilePath; cDebug() << "Using Calamares branding file at" << brandingFilePath;
@ -234,6 +235,14 @@ Branding::Branding( const QString& brandingFilePath,
} }
else else
bail( "Syntax error in slideshow sequence." ); bail( "Syntax error in slideshow sequence." );
int api = doc[ "slideshowAPI" ].IsScalar() ? doc[ "slideshowAPI" ].as<int>() : -1;
if ( ( api < 1 ) || ( api > 2 ) )
{
cWarning() << "Invalid or missing *slideshowAPI* in branding file.";
api = 1;
}
m_slideshowAPI = api;
} }
catch ( YAML::Exception& e ) catch ( YAML::Exception& e )
{ {

View File

@ -118,6 +118,7 @@ public:
/** @brief Path to the slideshow QML file, if any. */ /** @brief Path to the slideshow QML file, if any. */
QString slideshowPath() const { return m_slideshowPath; } QString slideshowPath() const { return m_slideshowPath; }
int slideshowAPI() const { return m_slideshowAPI; }
QString string( Branding::StringEntry stringEntry ) const; QString string( Branding::StringEntry stringEntry ) const;
QString styleString( Branding::StyleEntry styleEntry ) const; QString styleString( Branding::StyleEntry styleEntry ) const;
@ -172,6 +173,7 @@ private:
QMap< QString, QString > m_images; QMap< QString, QString > m_images;
QMap< QString, QString > m_style; QMap< QString, QString > m_style;
QString m_slideshowPath; QString m_slideshowPath;
int m_slideshowAPI;
QString m_translationsPathPrefix; QString m_translationsPathPrefix;
/** @brief Initialize the simple settings below */ /** @brief Initialize the simple settings below */

View File

@ -36,10 +36,40 @@
#include <QDir> #include <QDir>
#include <QLabel> #include <QLabel>
#include <QProgressBar> #include <QProgressBar>
#include <QVBoxLayout> #include <QQmlComponent>
#include <QtQuickWidgets/QQuickWidget>
#include <QQmlEngine> #include <QQmlEngine>
#include <QQuickItem>
#include <QQuickWidget>
#include <QVBoxLayout>
/** @brief Calls the QML method @p method()
*
* Pass in only the name of the method (e.g. onActivate). This function
* checks if the method exists (with no arguments) before trying to
* call it, so that no warnings are printed due to missing methods.
*
* If there is a return value from the QML method, it is logged (but not otherwise used).
*/
static void
callQMLFunction( QQuickItem* qmlObject, const char* method )
{
QByteArray methodSignature( method );
methodSignature.append( "()" );
if ( qmlObject && qmlObject->metaObject()->indexOfMethod( methodSignature ) >= 0 )
{
QVariant returnValue;
QMetaObject::invokeMethod( qmlObject, method, Q_RETURN_ARG( QVariant, returnValue ) );
if ( !returnValue.isNull() )
{
cDebug() << "QML" << methodSignature << "returned" << returnValue;
}
}
else if ( qmlObject )
{
cDebug() << "QML" << methodSignature << "is missing.";
}
}
namespace Calamares namespace Calamares
{ {
@ -47,31 +77,40 @@ namespace Calamares
ExecutionViewStep::ExecutionViewStep( QObject* parent ) ExecutionViewStep::ExecutionViewStep( QObject* parent )
: ViewStep( parent ) : ViewStep( parent )
, m_widget( new QWidget ) , m_widget( new QWidget )
, m_progressBar( new QProgressBar )
, m_label( new QLabel )
, m_qmlShow( new QQuickWidget )
, m_qmlComponent( nullptr )
, m_qmlObject( nullptr )
{ {
m_progressBar = new QProgressBar;
m_progressBar->setMaximum( 10000 );
m_label = new QLabel;
QVBoxLayout* layout = new QVBoxLayout( m_widget ); QVBoxLayout* layout = new QVBoxLayout( m_widget );
QVBoxLayout* innerLayout = new QVBoxLayout; QVBoxLayout* innerLayout = new QVBoxLayout;
m_slideShow = new QQuickWidget; m_progressBar->setMaximum( 10000 );
layout->addWidget( m_slideShow );
m_qmlShow->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
m_qmlShow->setResizeMode( QQuickWidget::SizeRootObjectToView );
m_qmlShow->engine()->addImportPath( CalamaresUtils::qmlModulesDir().absolutePath() );
layout->addWidget( m_qmlShow );
CalamaresUtils::unmarginLayout( layout ); CalamaresUtils::unmarginLayout( layout );
layout->addLayout( innerLayout ); layout->addLayout( innerLayout );
m_slideShow->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
m_slideShow->setResizeMode( QQuickWidget::SizeRootObjectToView );
m_slideShow->engine()->addImportPath( CalamaresUtils::qmlModulesDir().absolutePath() );
innerLayout->addSpacing( CalamaresUtils::defaultFontHeight() / 2 ); innerLayout->addSpacing( CalamaresUtils::defaultFontHeight() / 2 );
innerLayout->addWidget( m_progressBar ); innerLayout->addWidget( m_progressBar );
innerLayout->addWidget( m_label ); innerLayout->addWidget( m_label );
cDebug() << "QML import paths:" << Logger::DebugList( m_slideShow->engine()->importPathList() ); cDebug() << "QML import paths:" << Logger::DebugList( m_qmlShow->engine()->importPathList() );
if ( Branding::instance()->slideshowAPI() == 2 )
{
cDebug() << "QML load on startup, API 2.";
loadQmlV2();
}
connect( JobQueue::instance(), &JobQueue::progress, connect( JobQueue::instance(), &JobQueue::progress, this, &ExecutionViewStep::updateFromJobQueue );
this, &ExecutionViewStep::updateFromJobQueue ); #if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 )
CALAMARES_RETRANSLATE( m_qmlShow->engine()->retranslate(); )
#endif
} }
@ -130,22 +169,67 @@ ExecutionViewStep::isAtEnd() const
return true; return true;
} }
void
ExecutionViewStep::loadQmlV2()
{
if ( !m_qmlComponent && !Calamares::Branding::instance()->slideshowPath().isEmpty() )
{
m_qmlComponent = new QQmlComponent( m_qmlShow->engine(),
QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ),
QQmlComponent::CompilationMode::Asynchronous
);
connect( m_qmlComponent, &QQmlComponent::statusChanged, this, &ExecutionViewStep::loadQmlV2Complete );
}
}
void
ExecutionViewStep::loadQmlV2Complete()
{
if ( m_qmlComponent && m_qmlComponent->isReady() && !m_qmlObject )
{
cDebug() << "QML loading complete, API 2";
// Don't do this again
disconnect( m_qmlComponent, &QQmlComponent::statusChanged, this, &ExecutionViewStep::loadQmlV2Complete );
QObject* o = m_qmlComponent->create();
m_qmlObject = qobject_cast< QQuickItem* >( o );
if ( !m_qmlObject )
delete o;
else
{
// setContent() is public API, but not documented publicly.
// It is marked \internal in the Qt sources, but does exactly
// what is needed: sets up visual parent by replacing the root
// item, and handling resizes.
m_qmlShow->setContent( QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ), m_qmlComponent, m_qmlObject );
if ( ViewManager::instance()->currentStep() == this )
{
// We're alreay visible! Must have been slow QML loading, and we
// passed onActivate already.
callQMLFunction( m_qmlObject, "onActivate" );
}
}
}
}
void void
ExecutionViewStep::onActivate() ExecutionViewStep::onActivate()
{ {
CALAMARES_RETRANSLATE_WIDGET( m_widget, if ( Branding::instance()->slideshowAPI() == 2 )
if ( !Calamares::Branding::instance()->slideshowPath().isEmpty() ) {
m_slideShow->setSource( QUrl::fromLocalFile( Calamares::Branding::instance() // The QML was already loaded in the constructor, need to start it
->slideshowPath() ) ); callQMLFunction( m_qmlObject, "onActivate" );
) }
else if ( !Calamares::Branding::instance()->slideshowPath().isEmpty() )
{
// API version 1 assumes onCompleted is the trigger
m_qmlShow->setSource( QUrl::fromLocalFile( Calamares::Branding::instance()->slideshowPath() ) );
}
JobQueue* queue = JobQueue::instance(); JobQueue* queue = JobQueue::instance();
foreach ( const QString& instanceKey, m_jobInstanceKeys ) foreach ( const QString& instanceKey, m_jobInstanceKeys )
{ {
Calamares::Module* module = Calamares::ModuleManager::instance() Calamares::Module* module = Calamares::ModuleManager::instance()->moduleInstance( instanceKey );
->moduleInstance( instanceKey );
if ( module ) if ( module )
{ {
auto jl = module->jobs(); auto jl = module->jobs();
@ -183,4 +267,16 @@ ExecutionViewStep::updateFromJobQueue( qreal percent, const QString& message )
m_label->setText( message ); m_label->setText( message );
} }
void
ExecutionViewStep::onLeave()
{
// API version 2 is explicitly stopped; version 1 keeps running
if ( Branding::instance()->slideshowAPI() == 2 )
{
callQMLFunction( m_qmlObject, "onLeave" );
delete m_qmlObject;
m_qmlObject = nullptr;
}
}
} // namespace } // namespace

View File

@ -25,7 +25,10 @@
#include <QStringList> #include <QStringList>
class QLabel; class QLabel;
class QObject;
class QProgressBar; class QProgressBar;
class QQmlComponent;
class QQuickItem;
class QQuickWidget; class QQuickWidget;
namespace Calamares namespace Calamares
@ -51,19 +54,26 @@ public:
bool isAtEnd() const override; bool isAtEnd() const override;
void onActivate() override; void onActivate() override;
void onLeave() override;
JobList jobs() const override; JobList jobs() const override;
void appendJobModuleInstanceKey( const QString& instanceKey ); void appendJobModuleInstanceKey( const QString& instanceKey );
public slots:
void loadQmlV2Complete();
private: private:
QWidget* m_widget; QWidget* m_widget;
QProgressBar* m_progressBar; QProgressBar* m_progressBar;
QLabel* m_label; QLabel* m_label;
QQuickWidget* m_slideShow; QQuickWidget* m_qmlShow;
QQmlComponent* m_qmlComponent;
QQuickItem* m_qmlObject; //< The actual show
QStringList m_jobInstanceKeys; QStringList m_jobInstanceKeys;
void loadQmlV2(); //< Loads the slideshow QML (from branding) for API version 2
void updateFromJobQueue( qreal percent, const QString& message ); void updateFromJobQueue( qreal percent, const QString& message );
}; };

View File

@ -54,6 +54,41 @@ ViewManager::instance( QObject* parent )
return s_instance; return s_instance;
} }
/** @brief Get a button-sized icon. */
static inline QPixmap
getButtonIcon( const QString& name )
{
return Calamares::Branding::instance()->image( name, QSize( 22, 22 ) );
}
static inline void
setButtonIcon( QPushButton* button, const QString& name )
{
auto icon = getButtonIcon( name );
if ( button && !icon.isNull() )
{
button->setIcon( icon );
}
}
/** @brief Creates a button with a given icon-name
*
* Creates a new button as child of @p parent.
* Sets the named icon, if it exists, onto the button.
* Returns the new button.
*
* There is a QPushButton constructor that takes an icon,
* but it also needs a text and we've got translations
* to worry about as well as state.
*/
static inline QPushButton*
makeButton( QWidget* parent, const QString& name )
{
QPushButton* button = new QPushButton( parent );
setButtonIcon( button, name );
return button;
}
ViewManager::ViewManager( QObject* parent ) ViewManager::ViewManager( QObject* parent )
: QObject( parent ) : QObject( parent )
, m_currentStep( 0 ) , m_currentStep( 0 )
@ -68,18 +103,13 @@ ViewManager::ViewManager( QObject* parent )
m_stack->setContentsMargins( 0, 0, 0, 0 ); m_stack->setContentsMargins( 0, 0, 0, 0 );
mainLayout->addWidget( m_stack ); mainLayout->addWidget( m_stack );
m_back = new QPushButton( m_widget ); // Create buttons and sets an initial icon; the icons may change
m_next = new QPushButton( m_widget ); m_back = makeButton( m_widget, "go-previous" );
m_quit = new QPushButton( m_widget ); m_next = makeButton( m_widget, "go-next" );
m_quit = makeButton( m_widget, "dialog-cancel" );
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE(
m_back->setText( tr( "&Back" ) ); updateButtonLabels();
m_next->setText( tr( "&Next" ) );
m_quit->setText( tr( "&Cancel" ) );
QString tooltip = Calamares::Settings::instance()->isSetupMode()
? tr( "Cancel setup without changing the system." )
: tr( "Cancel installation without changing the system." );
m_quit->setToolTip( tooltip );
) )
QBoxLayout* bottomLayout = new QHBoxLayout; QBoxLayout* bottomLayout = new QHBoxLayout;
@ -321,27 +351,38 @@ ViewManager::updateButtonLabels()
{ {
const auto* const settings = Calamares::Settings::instance(); const auto* const settings = Calamares::Settings::instance();
QString next = settings->isSetupMode() QString nextIsInstallationStep = settings->isSetupMode()
? tr( "&Set up" ) ? tr( "&Set up" )
: tr( "&Install" ); : tr( "&Install" );
QString complete = settings->isSetupMode() QString quitOnCompleteTooltip = settings->isSetupMode()
? tr( "Setup is complete. Close the setup program." ) ? tr( "Setup is complete. Close the setup program." )
: tr( "The installation is complete. Close the installer." ); : tr( "The installation is complete. Close the installer." );
QString quit = settings->isSetupMode() QString cancelBeforeInstallationTooltip = settings->isSetupMode()
? tr( "Cancel setup without changing the system." ) ? tr( "Cancel setup without changing the system." )
: tr( "Cancel installation without changing the system." ); : tr( "Cancel installation without changing the system." );
// If we're going into the execution step / install phase, other message // If we're going into the execution step / install phase, other message
if ( stepIsExecute( m_steps, m_currentStep+1 ) ) if ( stepIsExecute( m_steps, m_currentStep+1 ) )
m_next->setText( next ); {
m_next->setText( nextIsInstallationStep );
setButtonIcon( m_next, "run-install" );
}
else else
{
m_next->setText( tr( "&Next" ) ); m_next->setText( tr( "&Next" ) );
setButtonIcon( m_next, "go-next" );
}
// Going back is always simple
m_back->setText( tr( "&Back" ) );
// Cancel button changes label at the end
if ( isAtVeryEnd() ) if ( isAtVeryEnd() )
{ {
m_quit->setText( tr( "&Done" ) ); m_quit->setText( tr( "&Done" ) );
m_quit->setToolTip( complete ); m_quit->setToolTip( quitOnCompleteTooltip );
m_quit->setVisible( true ); // At end, always visible and enabled. m_quit->setVisible( true ); // At end, always visible and enabled.
setButtonIcon( m_quit, "dialog-ok-apply" );
updateCancelEnabled( true ); updateCancelEnabled( true );
} }
else else
@ -351,7 +392,8 @@ ViewManager::updateButtonLabels()
updateCancelEnabled( !settings->disableCancel() && !( stepIsExecute( m_steps, m_currentStep ) && settings->disableCancelDuringExec() ) ); updateCancelEnabled( !settings->disableCancel() && !( stepIsExecute( m_steps, m_currentStep ) && settings->disableCancelDuringExec() ) );
m_quit->setText( tr( "&Cancel" ) ); m_quit->setText( tr( "&Cancel" ) );
m_quit->setToolTip( quit ); m_quit->setToolTip( cancelBeforeInstallationTooltip );
setButtonIcon( m_quit, "dialog-cancel" );
} }
} }

View File

@ -198,7 +198,7 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
return; return;
} }
} }
cDebug() << "No config file found in" << Logger::DebugList( configCandidates ); cDebug() << "No config file for" << m_name << "found anywhere at" << Logger::DebugList( configCandidates );
} }

View File

@ -90,10 +90,14 @@ ModuleManager::doInit()
if ( success ) if ( success )
{ {
QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc") ) ); QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc") ) );
if ( ! ( descriptorFileInfo.exists() && descriptorFileInfo.isReadable() ) ) if ( !descriptorFileInfo.exists() )
{ {
cDebug() << Q_FUNC_INFO << "unreadable file: " cDebug() << "ModuleManager expected descriptor is missing:" << descriptorFileInfo.absoluteFilePath();
<< descriptorFileInfo.absoluteFilePath(); continue;
}
if ( !descriptorFileInfo.isReadable() )
{
cDebug() << "ModuleManager descriptor file is unreadable:" << descriptorFileInfo.absoluteFilePath();
continue; continue;
} }
@ -111,13 +115,14 @@ ModuleManager::doInit()
} }
else else
{ {
cWarning() << "Cannot cd into module directory " cWarning() << "ModuleManager module directory is not accessible:" << path << "/" << subdir;
<< path << "/" << subdir;
} }
} }
} }
else else
cDebug() << "ModuleManager bad search path" << path; {
cDebug() << "ModuleManager module search path does not exist:" << path;
}
} }
// At this point m_availableModules is filled with whatever was found in the // At this point m_availableModules is filled with whatever was found in the
// search paths. // search paths.

View File

@ -5,5 +5,5 @@ type: "job"
name: "dummyprocess" name: "dummyprocess"
interface: "process" interface: "process"
chroot: false chroot: false
command: "/bin/sh -c \"touch ~/calamares-dummyprocess\"" command: "/bin/sh -c \"sleep 5 ; touch ~/calamares-dummyprocess\""
timeout: 5 timeout: 8

View File

@ -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 <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-10 19:18-0400\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
"Language-Team: Catalan (Valencian) (https://www.transifex.com/calamares/teams/20061/ca@valencia/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca@valencia\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 ""

View File

@ -128,17 +128,25 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
CalamaresUtils::getString( geoip, "style" ), CalamaresUtils::getString( geoip, "style" ),
CalamaresUtils::getString( geoip, "url" ), CalamaresUtils::getString( geoip, "url" ),
CalamaresUtils::getString( geoip, "selector" ) ); CalamaresUtils::getString( geoip, "selector" ) );
if ( handler->type() != CalamaresUtils::GeoIP::Handler::Type::None )
{
auto* future = new FWString(); auto* future = new FWString();
connect( future, &FWString::finished, [view=this, f=future, h=handler]() connect( future, &FWString::finished, [view=this, f=future, h=handler]()
{ {
QString countryResult = f->future().result(); QString countryResult = f->future().result();
cDebug() << "GeoIP result for welcome=" << countryResult; cDebug() << "GeoIP result for welcome=" << countryResult;
view->setCountry( countryResult ); view->setCountry( countryResult, h );
f->deleteLater(); f->deleteLater();
delete h; delete h;
} ); } );
future->setFuture( handler->queryRaw() ); future->setFuture( handler->queryRaw() );
} }
else
{
// Would not produce useful country code anyway.
delete handler;
}
}
QString language = CalamaresUtils::getString( configurationMap, "languageIcon" ); QString language = CalamaresUtils::getString( configurationMap, "languageIcon" );
@ -156,12 +164,22 @@ WelcomeViewStep::checkRequirements()
return m_requirementsChecker->checkRequirements(); return m_requirementsChecker->checkRequirements();
} }
static inline void
logGeoIPHandler( CalamaresUtils::GeoIP::Handler* handler )
{
if ( handler )
{
cDebug() << Logger::SubEntry << "Obtained from" << handler->url() << " (" << static_cast<int>( handler->type() ) << handler->selector() << ')';
}
}
void void
WelcomeViewStep::setCountry( const QString& countryCode ) WelcomeViewStep::setCountry( const QString& countryCode, CalamaresUtils::GeoIP::Handler* handler )
{ {
if ( countryCode.length() != 2 ) if ( countryCode.length() != 2 )
{ {
cDebug() << "Unusable country code" << countryCode; cDebug() << "Unusable country code" << countryCode;
logGeoIPHandler( handler );
return; return;
} }
@ -169,6 +187,7 @@ WelcomeViewStep::setCountry( const QString& countryCode )
if ( c_l.first == QLocale::Country::AnyCountry ) if ( c_l.first == QLocale::Country::AnyCountry )
{ {
cDebug() << "Unusable country code" << countryCode; cDebug() << "Unusable country code" << countryCode;
logGeoIPHandler( handler );
return; return;
} }
else else

View File

@ -32,6 +32,14 @@
class WelcomePage; class WelcomePage;
class GeneralRequirements; class GeneralRequirements;
namespace CalamaresUtils
{
namespace GeoIP
{
class Handler;
}
} // namespace
class PLUGINDLLEXPORT WelcomeViewStep : public Calamares::ViewStep class PLUGINDLLEXPORT WelcomeViewStep : public Calamares::ViewStep
{ {
Q_OBJECT Q_OBJECT
@ -57,9 +65,10 @@ public:
/** @brief Sets the country that Calamares is running in. /** @brief Sets the country that Calamares is running in.
* *
* This (ideally) sets up language and locale settings that are right for * This (ideally) sets up language and locale settings that are right for
* the given 2-letter country code. * the given 2-letter country code. Uses the handler's information (if
* given) for error reporting.
*/ */
void setCountry( const QString& ); void setCountry( const QString&, CalamaresUtils::GeoIP::Handler* handler );
Calamares::RequirementsList checkRequirements() override; Calamares::RequirementsList checkRequirements() override;